Jump to content

BacktestIQ Architecture

From PlusEV Wiki Page

BacktestIQ – Strategy Simulation Platform Component Architecture

[edit]

PART 1: Pipeline Architecture

[edit]

Pre-aggregated OHLC data (5M, 15M, 1H, 4H, 1D) derived from 1-minute source. At present conversion doesnot happen at runtime, it is done beforehand. data_manager.py just loads pre-converted CSV files.

     Raw OHLC Data (1D, 4H, 1H, 15M, 5M)
              │
              ▼
┌─────────────────────────────────────────────────────────────────────┐
│  LAYER 1: multi_timeframe_analysis.py                               │
│  "Are all timeframes pointing the same direction?"                  │
│                                                                     │
│  • Analyzes [1D, 4H, 1H, 15M, 5M] via TrendAnalysisCore            │
│  • Calculates weighted alignment score (hierarchical weights)       │
│  • 15-minute confirmation requirement                               │
│  • Output: TimeframeAnalysisResult (aligned, direction, score)      │
└─────────────────────────────────────────────────────────────────────┘
              │
              ▼
┌─────────────────────────────────────────────────────────────────────┐
│  LAYER 2: market_state_analysis.py                                  │
│  "What kind of market are we in?"                                   │
│                                                                     │
│  7 Detection Algorithms:                                            │
│  1. Railroad Trend - Strong one-sided move (consistency > 80%)      │
│  2. Creeper Move - Slow grinding action (avg range < 0.5%)          │
│  3. Volatility Classification - High/Normal/Low                     │
│  4. Market State - Trending/Range/Creeper/Momentum                  │
│  5. Two-Day Trend - Both days close same direction                  │
│  6. Trend Phase - EARLY/MIDDLE/LATE                                 │
│  7. Institutional Behavior - Fight, Accumulation, BOS               │
│  Output: MarketStateResult                                          │
└─────────────────────────────────────────────────────────────────────┘
              │
              ▼
┌─────────────────────────────────────────────────────────────────────┐
│  LAYER 3: setup_quality_detection.py                                │
│  "How good is this setup? Grade it A+ to F."                        │
│                                                                     │
│  5-Factor Weighted Scoring:                                         │
│  • Timeframe Alignment (30%)                                        │
│  • Trend Strength (20%)                                             │
│  • Entry Quality (15%)                                              │
│  • Key Level Proximity (20%)   [WIP JIRA]                                     │
│  • Risk/Reward (15%)                                                │
│                                                                     │
│  Output: SetupQualityResult (grade, score, position_size)           │
└─────────────────────────────────────────────────────────────────────┘
              │
              ▼
┌─────────────────────────────────────────────────────────────────────┐
│  LAYER 4: signal_generation_trade_management.py                     │
│  "Should we trade? What direction? Where's entry/stop/target?"      │
│                                                                     │
│  Direction Logic:                                                   │
│  • MA21 rising → LONG                                               │
│  • MA21 declining → SHORT                                           │
│  • Flat → MTF fallback      [WIP market consolidation]                                        │
│                                                                     │
│  Gate Filters: Hour, MA Direction, Probability Zone  [WIP JIRA]               │
│  Output: Signal (direction, entry, stop, target, grade)             │
└─────────────────────────────────────────────────────────────────────┘
              │
              ▼
┌─────────────────────────────────────────────────────────────────────┐
│  LAYER 5: trade_execution_engine.py                                 │
│  "Execute the trade, manage the position, calculate P&L"            │
│                                                                     │
│  Execution: Slippage modeling, Commission (Rs 20/lot), CTT (0.01%)  │
│  Position Management: Trailing stop, Breakeven stop, Time exit      │
│  Output: Trade objects with complete P&L      [WIP JIRA]                      │
└─────────────────────────────────────────────────────────────────────┘

PART 2: Component Index

[edit]
# Component Purpose Owner
1 multi_timeframe_analysis.py MTF alignment across 5 timeframes Pawan
2 trend_analysis_core.py Per-timeframe trend direction, MA slopes Chayan
3 market_state_analysis.py Railroad, creeper, volatility, trend phase Vishal
4 setup_quality_detection.py 5-factor scoring, A+ to F grades Vishal
5 signal_generation_trade_management.py Direction, filters, entry/stop/target Chayan
6 trade_execution_engine.py Execution, position management, P&L Harshad
7 probability_zone_analysis.py Probability zones, crash bar [Work in progress] Rikk
8 data_manager.py Data loading, timeframe aggregation Harshad
9 backtesting_analytics.py Performance metrics, reporting Pawan