Skip to content

sahmadzai/finterm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

5 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

            /$$$$$$  /$$             /$$                                      
           /$$__  $$|__/            | $$                                      
          | $$  \__/ /$$ /$$$$$$$  /$$$$$$    /$$$$$$   /$$$$$$  /$$$$$$/$$$$ 
          | $$$$    | $$| $$__  $$|_  $$_/   /$$__  $$ /$$__  $$| $$_  $$_  $$
          | $$_/    | $$| $$  \ $$  | $$    | $$$$$$$$| $$  \__/| $$ \ $$ \ $$
          | $$      | $$| $$  | $$  | $$ /$$| $$_____/| $$      | $$ | $$ | $$
          | $$      | $$| $$  | $$  |  $$$$/|  $$$$$$$| $$      | $$ | $$ | $$
          |__/      |__/|__/  |__/   \___/   \_______/|__/      |__/ |__/ |__/

A modern, Professional TUI (Terminal User Interface) for financial market analysis. Built with Python and Textual, FinTerm provides real-time market data, charts, news, and sentiment analysis right in your terminal.

License Python Status

Features ✨

  • πŸ“Š Interactive Charts: Candlestick and line charts with multiple timeframes (1d, 5d, 1mo, 3mo, 6mo, 1y)
  • πŸ“ˆ Market Movers: Real-time top gainers and losers from your watchlist
  • πŸ“° Financial News: Latest market news and ticker-specific headlines
  • 🎯 Market Sentiment: AI-powered sentiment analysis based on price action
  • πŸ’Ό Ticker Details: Comprehensive company information, financials, and key metrics
  • ⚑ Keyboard Shortcuts: Lightning-fast navigation with intuitive hotkeys
  • 🎨 Modern UI: Clean, professional interface inspired by Bloomberg Terminal
  • πŸ”§ Modular Architecture: Extensible widget system for custom dashboards
  • πŸ“± Responsive: Adapts to terminal window size automatically

Screenshots

finterm terminal market data version 0.1.0 disclaimer acceptance screen screenshot finterm terminal market data version 0.1.0 screenshot

Quick Start πŸš€

Installation

  1. Clone the repository:

    git clone https://github.com/sahmadzai/finterm.git
    cd finterm
  2. Install dependencies:

    pip install -r requirements.txt
  3. Optional - Set up News API (for real news):

    # Get a free API key from https://newsapi.org
    export NEWS_API_KEY="your_api_key_here"
  4. Run FinTerm:

    python -m src.app

Installation via pip (coming soon)

pip install finterm
finterm

Keyboard Shortcuts ⌨️

Key Action
q Quit application
r Refresh all widgets
h Toggle help screen
1 Show SPY ticker
2 Show QQQ ticker
3 Show AAPL ticker
4 Show TSLA ticker
ESC Close help/dialog

Configuration βš™οΈ

Environment Variables

Create a .env file in the project root:

# News API Key (get from https://newsapi.org)
NEWS_API_KEY=your_api_key_here

# Default tickers to track (comma-separated)
DEFAULT_TICKERS=SPY,QQQ,AAPL,MSFT,GOOGL,TSLA,NVDA,AMD

# Refresh interval in seconds
REFRESH_INTERVAL=60

Custom Dashboard Layouts (Coming Soon)

FinTerm will support custom dashboard configurations via JSON files:

{
  "name": "My Custom Dashboard",
  "widgets": [
    {
      "widget_type": "chart",
      "ticker": "AAPL",
      "period": "1mo",
      "interval": "1d"
    },
    {
      "widget_type": "news",
      "limit": 5
    }
  ]
}

Architecture πŸ—οΈ

Project Structure

finterm/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ app.py              # Main application and screens
β”‚   β”œβ”€β”€ widgets/            # Modular widget components
β”‚   β”‚   β”œβ”€β”€ base.py         # Base widget class
β”‚   β”‚   β”œβ”€β”€ chart.py        # Chart widget
β”‚   β”‚   β”œβ”€β”€ news.py         # News widget
β”‚   β”‚   β”œβ”€β”€ market_movers.py
β”‚   β”‚   β”œβ”€β”€ ticker_info.py
β”‚   β”‚   └── sentiment.py
β”‚   β”œβ”€β”€ data/               # Data fetching modules
β”‚   β”‚   β”œβ”€β”€ stocks.py       # Stock data via yfinance
β”‚   β”‚   β”œβ”€β”€ news.py         # News via NewsAPI
β”‚   β”‚   └── sentiment.py    # Sentiment analysis
β”‚   └── utils/              # Utilities
β”‚       └── config.py       # Configuration management
β”œβ”€β”€ requirements.txt
β”œβ”€β”€ setup.py
└── README.md

Technology Stack

Data Sources πŸ“‘

  • Stock Data: Yahoo Finance (via yfinance) - Free, no API key required
  • News: NewsAPI - Free tier available (100 requests/day)
  • Sentiment: Proprietary algorithm based on price action and volume

Development πŸ› οΈ

Setting Up Development Environment

# Clone the repository
git clone https://github.com/sahmadzai/finterm.git
cd finterm

# Install development dependencies
pip install -r requirements.txt
pip install -e ".[dev]"

# Run tests (coming soon)
pytest

# Format code
black src/

# Lint code
flake8 src/

Creating Custom Widgets

Extend the BaseWidget class to create your own widgets:

from src.widgets.base import BaseWidget
from rich.text import Text

class MyCustomWidget(BaseWidget):
    async def fetch_data(self):
        # Fetch your data here
        self.my_data = await get_data()

    def render_content(self):
        # Render your widget
        return Text("My custom content")

Rough Roadmap πŸ—ΊοΈ

v0.2.0 (Next Release)

  • Custom dashboard layouts via JSON config
  • More chart types (volume, indicators)
  • Technical indicators (RSI, MACD, Moving Averages)
  • Watchlist management

v0.3.0

  • Options chain viewer
  • Crypto support
  • Economic calendar
  • Earnings calendar
  • Alert system

v1.0.0

  • Multi-page dashboards
  • Plugin system for custom widgets
  • Historical data export
  • Backtesting framework
  • Real-time WebSocket feeds

Contributing 🀝

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Development Guidelines

  • Follow PEP 8 style guidelines
  • Add docstrings to all functions and classes
  • Write unit tests for new features
  • Update README for significant changes

License πŸ“„

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments πŸ™

  • Built for professional traders and investors
  • Built with Textual by Will McGugan
  • Financial data provided by Yahoo Finance
  • News data from NewsAPI

Disclaimer ⚠️

This software is for informational purposes only. It is not financial advice and should not be used as the sole basis for investment decisions. Always do your own research and consult with a qualified financial advisor.

Support πŸ’¬

Star History ⭐

If you find FinTerm useful, please consider giving it a star on GitHub!

About

A modern, Professional TUI (Terminal User Interface) for financial market analysis. Built with Python and Textual, FinTerm provides real-time market data, charts, news, and sentiment analysis right in your terminal.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages