# sankarsrinivasan1/python-for-indian-traders architecture

> Architecture diagram of the GitHub repository sankarsrinivasan1/python-for-indian-traders, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/sankarsrinivasan1/python-for-indian-traders
- Repository: https://github.com/sankarsrinivasan1/python-for-indian-traders

## Overview

This is an educational Indian-stock trading lab, with separate example projects for stock screening alongside the repository’s core learning workflow: fetch market data, apply a strategy, backtest, manage risk, optionally paper/live trade, then review results. The Nifty 50 scanner is a separate, explicitly orchestrated scan-to-ranking-and-export workflow. The Indian Stock Screener has a selectable UI and a screener manager, but its app excerpt says the engine is not yet connected. Several root modules are very small or unsampled; their roles and links are shown only where the README documents them.

Main entry points: [`PROJECTS/Nifty50 Momentum Scanner/main.py`](https://github.com/sankarsrinivasan1/python-for-indian-traders/blob/main/PROJECTS/Nifty50%20Momentum%20Scanner/main.py) (Nifty scan runner), [`strategies`](https://github.com/sankarsrinivasan1/python-for-indian-traders/tree/main/strategies) (Trading strategies), [`backtest/simple_backtester.py`](https://github.com/sankarsrinivasan1/python-for-indian-traders/blob/main/backtest/simple_backtester.py) (Backtesting), [`journal`](https://github.com/sankarsrinivasan1/python-for-indian-traders/tree/main/journal) (Trade journal)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_market_analysis["Market analysis"]
  node_market_data["Market data"]
  node_strategies["Trading strategies"]
  node_indicators["Shared indicators<br/>[indicators.py]"]
end

subgraph group_trade_testing["Strategy testing"]
  node_backtester["Backtesting"]
  node_trade_engine["Trade engine<br/>[trade_engine.py]"]
  node_metrics["Performance metrics"]
end

subgraph group_execution_risk["Execution and risk"]
  node_risk_tools["Risk controls"]
  node_kite_examples["Kite integration"]
  node_paper_trading["Paper trading"]
end

subgraph group_review["Trade review"]
  node_journal["Trade journal"]
  node_analytics["Trade analytics"]
  node_forensics["Trade forensics"]
end

subgraph group_screener_projects["Screener projects"]
  node_screener_ui["Screener UI<br/>[app.py]"]
  node_screener_manager["Screener manager"]
  node_screening_rules["Screening rules"]
  node_nifty_main["Nifty scan runner<br/>[main.py]"]
  node_nifty_symbols["Nifty 50 symbols<br/>[nifty50.py]"]
  node_nifty_downloader["Historical downloader<br/>[downloader.py]"]
  node_nifty_indicators["Momentum indicators<br/>[indicators.py]"]
  node_nifty_scoring["Momentum scoring<br/>[scoring.py]"]
  node_nifty_exporter["CSV exporter<br/>[exporter.py]"]
end

node_trader(("Trader"))

node_trader -.->|"fetches data"| node_market_data
node_market_data -.->|"supplies prices"| node_strategies
node_strategies -.->|"tests strategy"| node_backtester
node_backtester -.->|"simulates trades"| node_trade_engine
node_backtester -.->|"measures results"| node_metrics
node_strategies -.->|"uses indicators"| node_indicators
node_trader -.->|"paper trades"| node_paper_trading
node_paper_trading -.->|"can progress to"| node_kite_examples
node_trader -.->|"sets risk"| node_risk_tools
node_trader -.->|"records trades"| node_journal
node_journal -.->|"summarizes trades"| node_analytics
node_journal -.->|"reviews behavior"| node_forensics
node_trader -->|"selects strategy"| node_screener_ui
node_screener_manager -->|"dispatches to"| node_screening_rules
node_trader -.->|"runs scan"| node_nifty_main
node_nifty_main -->|"loads symbols"| node_nifty_symbols
node_nifty_main -->|"downloads data"| node_nifty_downloader
node_nifty_main -->|"calculates indicators"| node_nifty_indicators
node_nifty_main -->|"scores stocks"| node_nifty_scoring
node_nifty_main -->|"exports rankings"| node_nifty_exporter

click node_market_data "https://github.com/sankarsrinivasan1/python-for-indian-traders/tree/main/data"
click node_strategies "https://github.com/sankarsrinivasan1/python-for-indian-traders/tree/main/strategies"
click node_indicators "https://github.com/sankarsrinivasan1/python-for-indian-traders/blob/main/utils/indicators.py"
click node_backtester "https://github.com/sankarsrinivasan1/python-for-indian-traders/blob/main/backtest/simple_backtester.py"
click node_trade_engine "https://github.com/sankarsrinivasan1/python-for-indian-traders/blob/main/backtest/trade_engine.py"
click node_metrics "https://github.com/sankarsrinivasan1/python-for-indian-traders/blob/main/backtest/performance_metrics.py"
click node_risk_tools "https://github.com/sankarsrinivasan1/python-for-indian-traders/tree/main/risk"
click node_kite_examples "https://github.com/sankarsrinivasan1/python-for-indian-traders/tree/main/broker"
click node_paper_trading "https://github.com/sankarsrinivasan1/python-for-indian-traders/blob/main/broker/paper_trading_simulator.py"
click node_journal "https://github.com/sankarsrinivasan1/python-for-indian-traders/tree/main/journal"
click node_analytics "https://github.com/sankarsrinivasan1/python-for-indian-traders/tree/main/dashboard"
click node_forensics "https://github.com/sankarsrinivasan1/python-for-indian-traders/tree/main/trade_forensics_lite"
click node_screener_ui "https://github.com/sankarsrinivasan1/python-for-indian-traders/blob/main/PROJECTS/Indian-Stock-Screener/app.py"
click node_screener_manager "https://github.com/sankarsrinivasan1/python-for-indian-traders/blob/main/PROJECTS/Indian-Stock-Screener/screeners/screener_manager.py"
click node_screening_rules "https://github.com/sankarsrinivasan1/python-for-indian-traders/tree/main/PROJECTS/Indian-Stock-Screener/screeners"
click node_nifty_main "https://github.com/sankarsrinivasan1/python-for-indian-traders/blob/main/PROJECTS/Nifty50%20Momentum%20Scanner/main.py"
click node_nifty_symbols "https://github.com/sankarsrinivasan1/python-for-indian-traders/blob/main/PROJECTS/Nifty50%20Momentum%20Scanner/utils/nifty50.py"
click node_nifty_downloader "https://github.com/sankarsrinivasan1/python-for-indian-traders/blob/main/PROJECTS/Nifty50%20Momentum%20Scanner/scanner/downloader.py"
click node_nifty_indicators "https://github.com/sankarsrinivasan1/python-for-indian-traders/blob/main/PROJECTS/Nifty50%20Momentum%20Scanner/scanner/indicators.py"
click node_nifty_scoring "https://github.com/sankarsrinivasan1/python-for-indian-traders/blob/main/PROJECTS/Nifty50%20Momentum%20Scanner/scanner/scoring.py"
click node_nifty_exporter "https://github.com/sankarsrinivasan1/python-for-indian-traders/blob/main/PROJECTS/Nifty50%20Momentum%20Scanner/scanner/exporter.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_market_data,node_strategies,node_indicators toneBlue
class node_backtester,node_trade_engine,node_metrics toneAmber
class node_risk_tools,node_kite_examples,node_paper_trading toneMint
class node_journal,node_analytics,node_forensics toneRose
class node_screener_ui,node_screener_manager,node_screening_rules,node_nifty_main,node_nifty_symbols,node_nifty_downloader,node_nifty_indicators,node_nifty_scoring,node_nifty_exporter,node_trader toneIndigo
```

## Components

### Market analysis

- [Market data](https://github.com/sankarsrinivasan1/python-for-indian-traders/tree/main/data): `data`
- [Trading strategies](https://github.com/sankarsrinivasan1/python-for-indian-traders/tree/main/strategies): `strategies`
- [Shared indicators](https://github.com/sankarsrinivasan1/python-for-indian-traders/blob/main/utils/indicators.py): `utils/indicators.py`

### Strategy testing

- [Backtesting](https://github.com/sankarsrinivasan1/python-for-indian-traders/blob/main/backtest/simple_backtester.py): `backtest/simple_backtester.py`
- [Trade engine](https://github.com/sankarsrinivasan1/python-for-indian-traders/blob/main/backtest/trade_engine.py): `backtest/trade_engine.py`
- [Performance metrics](https://github.com/sankarsrinivasan1/python-for-indian-traders/blob/main/backtest/performance_metrics.py): `backtest/performance_metrics.py`

### Execution and risk

- [Risk controls](https://github.com/sankarsrinivasan1/python-for-indian-traders/tree/main/risk): `risk`
- [Kite integration](https://github.com/sankarsrinivasan1/python-for-indian-traders/tree/main/broker): `broker`
- [Paper trading](https://github.com/sankarsrinivasan1/python-for-indian-traders/blob/main/broker/paper_trading_simulator.py): `broker/paper_trading_simulator.py`

### Trade review

- [Trade journal](https://github.com/sankarsrinivasan1/python-for-indian-traders/tree/main/journal): `journal`
- [Trade analytics](https://github.com/sankarsrinivasan1/python-for-indian-traders/tree/main/dashboard): `dashboard`
- [Trade forensics](https://github.com/sankarsrinivasan1/python-for-indian-traders/tree/main/trade_forensics_lite): `trade_forensics_lite`

### Screener projects

- [Screener UI](https://github.com/sankarsrinivasan1/python-for-indian-traders/blob/main/PROJECTS/Indian-Stock-Screener/app.py): `PROJECTS/Indian-Stock-Screener/app.py`
- [Screener manager](https://github.com/sankarsrinivasan1/python-for-indian-traders/blob/main/PROJECTS/Indian-Stock-Screener/screeners/screener_manager.py): `PROJECTS/Indian-Stock-Screener/screeners/screener_manager.py`
- [Screening rules](https://github.com/sankarsrinivasan1/python-for-indian-traders/tree/main/PROJECTS/Indian-Stock-Screener/screeners): `PROJECTS/Indian-Stock-Screener/screeners`
- [Nifty scan runner](https://github.com/sankarsrinivasan1/python-for-indian-traders/blob/main/PROJECTS/Nifty50%20Momentum%20Scanner/main.py): `PROJECTS/Nifty50 Momentum Scanner/main.py`
- [Nifty 50 symbols](https://github.com/sankarsrinivasan1/python-for-indian-traders/blob/main/PROJECTS/Nifty50%20Momentum%20Scanner/utils/nifty50.py): `PROJECTS/Nifty50 Momentum Scanner/utils/nifty50.py`
- [Historical downloader](https://github.com/sankarsrinivasan1/python-for-indian-traders/blob/main/PROJECTS/Nifty50%20Momentum%20Scanner/scanner/downloader.py): `PROJECTS/Nifty50 Momentum Scanner/scanner/downloader.py`
- [Momentum indicators](https://github.com/sankarsrinivasan1/python-for-indian-traders/blob/main/PROJECTS/Nifty50%20Momentum%20Scanner/scanner/indicators.py): `PROJECTS/Nifty50 Momentum Scanner/scanner/indicators.py`
- [Momentum scoring](https://github.com/sankarsrinivasan1/python-for-indian-traders/blob/main/PROJECTS/Nifty50%20Momentum%20Scanner/scanner/scoring.py): `PROJECTS/Nifty50 Momentum Scanner/scanner/scoring.py`
- [CSV exporter](https://github.com/sankarsrinivasan1/python-for-indian-traders/blob/main/PROJECTS/Nifty50%20Momentum%20Scanner/scanner/exporter.py): `PROJECTS/Nifty50 Momentum Scanner/scanner/exporter.py`

### Other components

- **Trader**

## Connections

- Trader → Market data: fetches data (evidence: `README.md`)
- Market data → Trading strategies: supplies prices (evidence: `README.md`)
- Trading strategies → Backtesting: tests strategy (evidence: `README.md`)
- Backtesting → Trade engine: simulates trades (evidence: `README.md`)
- Backtesting → Performance metrics: measures results (evidence: `README.md`)
- Trading strategies → Shared indicators: uses indicators
- Trader → Paper trading: paper trades (evidence: `README.md`)
- Paper trading → Kite integration: can progress to (evidence: `README.md`)
- Trader → Risk controls: sets risk (evidence: `README.md`)
- Trader → Trade journal: records trades (evidence: `README.md`)
- Trade journal → Trade analytics: summarizes trades (evidence: `README.md`)
- Trade journal → Trade forensics: reviews behavior (evidence: `README.md`)
- Trader → Screener UI: selects strategy (evidence: `PROJECTS/Indian-Stock-Screener/app.py`)
- Screener manager → Screening rules: dispatches to (evidence: `PROJECTS/Indian-Stock-Screener/screeners/screener_manager.py`)
- Trader → Nifty scan runner: runs scan (evidence: `README.md`)
- Nifty scan runner → Nifty 50 symbols: loads symbols (evidence: `PROJECTS/Nifty50 Momentum Scanner/main.py`)
- Nifty scan runner → Historical downloader: downloads data (evidence: `PROJECTS/Nifty50 Momentum Scanner/main.py`)
- Nifty scan runner → Momentum indicators: calculates indicators (evidence: `PROJECTS/Nifty50 Momentum Scanner/main.py`)
- Nifty scan runner → Momentum scoring: scores stocks (evidence: `PROJECTS/Nifty50 Momentum Scanner/main.py`)
- Nifty scan runner → CSV exporter: exports rankings (evidence: `PROJECTS/Nifty50 Momentum Scanner/main.py`)
