Skip to content

Instantly share code, notes, and snippets.

@activ8mediaAI
Created November 19, 2024 10:03
Show Gist options
  • Save activ8mediaAI/f477c2d5969b22625c3b6546f7791068 to your computer and use it in GitHub Desktop.
Save activ8mediaAI/f477c2d5969b22625c3b6546f7791068 to your computer and use it in GitHub Desktop.
SmartScan: Nifty 50 Technical Analysis Tool

SmartScan: Nifty 50 Technical Analysis Tool

Introduction

SmartScan is a powerful Python-based technical analysis tool designed specifically for analyzing Nifty 50 stocks. This tutorial will guide you through using and understanding the tool's features.

What is Technical Analysis?

Technical Analysis (TA) is a method of evaluating investments by analyzing statistical trends from trading activity, such as price movement and volume. Unlike fundamental analysis, which looks at a company's business performance, technical analysis focuses on patterns in market data.

Features

1. Data Collection

  • Automated fetching of Nifty 50 stock data using Yahoo Finance API
  • Intelligent caching system with SQLite database
  • Fallback mechanisms for different stock symbols (NSE/BSE)
  • Automatic data freshness checks

2. Technical Analysis

The tool calculates a comprehensive set of technical indicators:

Price-based Indicators

  • Simple Moving Averages (SMA 20, 50)
  • Exponential Moving Averages (EMA 20, 50)
  • Bollinger Bands (Upper, Middle, Lower bands)

Momentum Indicators

  • Relative Strength Index (RSI)
  • Stochastic Oscillator (K and D lines)
  • True Strength Index (TSI)
  • MACD (Moving Average Convergence Divergence)

Trend Indicators

  • ADX (Average Directional Index)
  • Vortex Indicator
  • Support and Resistance Levels

Volume Indicators

  • On Balance Volume (OBV)
  • Chaikin Money Flow (CMF)
  • Ease of Movement (EOM)
  • Volume Moving Average

3. Signal Generation

SmartScan uses a multi-factor approach to generate trading signals:

  • Signal Types: Strong Buy, Buy, Hold, Sell, Strong Sell
  • Factors Considered:
    • Trend Strength (SMAs, EMAs)
    • Momentum (RSI, MACD)
    • Volume Confirmation
    • Support/Resistance Levels
    • Volatility (ATR)

4. Visualization

  • Professional-grade technical analysis charts using mplfinance
  • Customized layouts with multiple panels:
    • Candlestick charts with volume
    • RSI indicator panel
    • MACD indicator panel
    • Bollinger Bands overlay
    • Moving averages overlay

Project Architecture

Data Flow

graph LR
    A[Yahoo Finance API] --> B[Data Collector]
    B --> C[SQLite Database]
    C --> D[Analysis Engine]
    D --> E[Signal Generator]
    E --> F[Visualization]
Loading

Analysis Pipeline

graph TD
    A[Raw Stock Data] --> B[Data Cleaning]
    B --> C[Technical Indicators]
    C --> D[Signal Generation]
    D --> E[Chart Generation]
Loading

Usage

Command Line Interface

python -m src.cli.command_line --period 1y --min-strength 1.0 --save-report

Options:

  • --period: Data fetch period (e.g., 1d, 1mo, 1y)
  • --min-strength: Minimum signal strength to display
  • --save-report: Save analysis report to file

Example Output

SmartScan - NSE Market Scanner (2024-01-XX XX:XX:XX)
============================================================

Strong Buy Signals (X stocks):
============================================================
Stock Analysis: SYMBOL
Signal: Strong Buy
Current Price: ₹XXX.XX (+X.XX%)

Key Indicators:
RSI: XX.XX
MACD: X.XXX
Signal Strength: X.XX

Moving Averages:
SMA20: ₹XXX.XX
SMA50: ₹XXX.XX

Volume Analysis:
Volume Trend: High/Normal/Low (Ratio: X.XX)

Project Structure

smartscan/
├── src/
│   ├── analysis/           # Technical analysis logic
│   ├── data_collection/    # Data fetching and caching
│   ├── visualization/      # Chart generation
│   ├── cli/               # Command line interface
│   └── output/            # Report generation
├── docs/                  # Documentation
└── data/                 # SQLite database

Dependencies

  • Python 3.x
  • pandas: Data manipulation
  • yfinance: Stock data fetching
  • ta: Technical analysis indicators
  • mplfinance: Chart generation
  • SQLite: Data caching

Best Practices

  1. Data Management

    • Always check data freshness before analysis
    • Use cached data when available
    • Handle missing data gracefully
  2. Technical Analysis

    • Combine multiple indicators for signals
    • Consider volume confirmation
    • Account for market volatility
  3. Risk Management

    • Never rely on a single indicator
    • Always verify signals across timeframes
    • Consider market conditions and volatility

Resources for Learning

  1. Technical Analysis

  2. Python for Finance

  3. Indian Stock Market

Contributing

Feel free to contribute to this project by:

  1. Reporting bugs
  2. Suggesting new features
  3. Adding new technical indicators
  4. Improving documentation

License

This project is open-source and available under the MIT License.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment