Alpha Research5: Difference between revisions
Appearance
Plusev.blr (talk | contribs) Created page with "= Component Architecture = '''Companion to:''' Alpha_Research (Strategy Logic) → This page (Code Implementation) This documentation maps trading philosophy to executable code. Each component translates concepts like "Fab Four", "Color Change", and "Probability Zones" into Python functions. '''For Developers:''' You don't need trading experience. Each section explains the "why" in plain terms before the "how" in code. ---- == System Data Flow == Data flows bot..." |
Plusev.blr (talk | contribs) No edit summary |
||
| Line 1: | Line 1: | ||
= Component Architecture = | = Component Architecture = | ||
'''Companion to:''' [[Alpha_Research]] | '''Branch:''' <code>rikk_mtf_backtest001</code> | '''Companion to:''' [[Alpha_Research]] | ||
This | This page documents the component-level implementation of the MTFDR (Multi-Timeframe Dynamic Regime) backtesting system. Each component translates trading philosophy into executable Python. | ||
'''For Developers:''' You don't need trading | '''For Developers:''' Each section maps trading concepts to code. You don't need trading experience—the "why" is explained before the "how". | ||
---- | ---- | ||
== | == PART 1: Pipeline Architecture == | ||
The system processes each 5-minute bar through 5 sequential layers: | |||
<pre> | <pre> | ||
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/not, 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 price action (avg range < 0.5%) │ | |||
│ 3. Volatility - High (>1%), Normal, Low (<0.3%) │ | |||
│ 4. Market State Classification - Trending/Range/Creeper/Momentum │ | |||
│ 5. Two-Day Trend - Both days close same direction │ | |||
│ 6. Trend Phase - EARLY/MIDDLE/LATE (based on MA crossover) │ | |||
│ 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%) - From Layer 1 │ | |||
│ • Trend Strength (20%) - Penalties: creeper, MA struggle │ | |||
│ • Entry Quality (15%) - Near MA bonus, clean entry bonus │ | |||
│ • Key Level Proximity (20%) - Near support/resistance │ | |||
│ • Risk/Reward (15%) - Lookup table: <1=0, 1-1.5=40, 1.5-2=70... │ | |||
│ │ | |||
│ Penalties Applied: creeper(-50), ma_struggle(-30), no_2day(-30) │ | |||
│ A+ Enforcement: Must pass all 3 criteria or capped at 79 │ | |||
│ 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 direction │ | |||
│ • MA21 declining → SHORT direction │ | |||
│ • Flat → MTF fallback │ | |||
│ │ | |||
│ Gate Filters (JIRA tickets): │ | |||
│ • TICKET-12: Hour filter (block 9AM, 10PM, 11PM) │ | |||
│ • TICKET-19: MA direction alignment │ | |||
│ • TICKET-20: Probability zone filter (uses probability_zone_analysis)│ | |||
│ • TICKET-21: Color change confirmation (currently DISABLED) │ | |||
│ │ | |||
│ Output: Signal (direction, entry, stop, target, grade) │ | |||
└─────────────────────────────────────────────────────────────────────┘ | |||
│ | |||
▼ | |||
┌─────────────────────────────────────────────────────────────────────┐ | |||
│ LAYER 5: trade_execution_engine.py │ | |||
│ "Execute the trade, manage the position, calculate P&L" │ | |||
│ │ | |||
│ Execution: │ | |||
│ • Signal-to-trade conversion with slippage modeling │ | |||
│ • Commission: Rs 20/lot (Dhan) │ | |||
│ • CTT: 0.01% on sell side │ | |||
│ │ | |||
│ Position Management: │ | |||
│ • TICKET-15/17/20: Trailing stop (ATR-based, 2x ATR) │ | |||
│ • TICKET-13/17: Breakeven stop (activate at 25pt profit) │ | |||
│ • Time-based exit (8 hour max holding) │ | |||
│ │ | |||
│ Output: Trade objects with complete P&L │ | |||
└─────────────────────────────────────────────────────────────────────┘ | |||
</pre> | </pre> | ||
---- | ---- | ||
== Component Index == | == PART 2: Component Index == | ||
{| class="wikitable" style="width:100%" | {| class="wikitable" style="width:100%" | ||
|- | |- | ||
! Layer !! Component !! | ! Layer !! Component !! What It Does !! Code Link | ||
|- | |- | ||
| 1 || [[ | | 1 || [[#Multi-Timeframe Analysis|multi_timeframe_analysis.py]] || MTF alignment across 5 timeframes || [https://github.com/stoic97/plus_ev_code_base/blob/rikk_mtf_backtest001/services/backtest/src/components/multi_timeframe_analysis.py View Code] | ||
|- | |- | ||
| | | (1a) || [[#Trend Analysis Core|trend_analysis_core.py]] || Per-timeframe trend direction, MA slopes || [https://github.com/stoic97/plus_ev_code_base/blob/rikk_mtf_backtest001/services/backtest/src/components/trend_analysis_core.py View Code] | ||
|- | |- | ||
| | | 2 || [[#Market State Analysis|market_state_analysis.py]] || Railroad, creeper, volatility, trend phase || [https://github.com/stoic97/plus_ev_code_base/blob/rikk_mtf_backtest001/services/backtest/src/components/market_state_analysis.py View Code] | ||
|- | |- | ||
| | | 3 || [[#Setup Quality Detection|setup_quality_detection.py]] || 5-factor scoring, A+ to F grades || [https://github.com/stoic97/plus_ev_code_base/blob/rikk_mtf_backtest001/services/backtest/src/components/setup_quality_detection.py View Code] | ||
|- | |- | ||
| | | 4 || [[#Signal Generation|signal_generation_trade_management.py]] || Direction, filters, entry/stop/target || [https://github.com/stoic97/plus_ev_code_base/blob/rikk_mtf_backtest001/services/backtest/src/components/signal_generation_trade_management.py View Code] | ||
|- | |- | ||
| | | 5 || [[#Trade Execution|trade_execution_engine.py]] || Execution, position mgmt, P&L || [https://github.com/stoic97/plus_ev_code_base/blob/rikk_mtf_backtest001/services/backtest/src/components/trade_execution_engine.py View Code] | ||
|} | |||
'''Support Components:''' | |||
{| class="wikitable" style="width:100%" | |||
|- | |||
! Component !! What It Does !! Used By !! Code Link | |||
|- | |||
| probability_zone_analysis.py || Probability zones (80%/65%/35%/15%), crash bar, color change || signal_generation (TICKET-20) || [https://github.com/stoic97/plus_ev_code_base/blob/rikk_mtf_backtest001/services/backtest/src/components/probability_zone_analysis.py View Code] | |||
|- | |||
| data_manager.py || Data loading, timeframe aggregation || main.py || [https://github.com/stoic97/plus_ev_code_base/blob/rikk_mtf_backtest001/services/backtest/src/components/data_manager.py View Code] | |||
|- | |||
| backtesting_analytics.py || Performance metrics, reporting || main.py || [https://github.com/stoic97/plus_ev_code_base/blob/rikk_mtf_backtest001/services/backtest/src/components/backtesting_analytics.py View Code] | |||
|} | |} | ||
---- | ---- | ||
== Trading Concept | == PART 3: Trading Concept → Code Mapping == | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! | ! PDF Concept !! Implementation Status !! Code Location !! Notes | ||
|- | |- | ||
| ''' | | '''Halves/Thirds (80%/65%/35%/15%)''' || ✅ Implemented || probability_zone_analysis.py || Used via TICKET-20 filter in signal_generation | ||
|- | |- | ||
| ''' | | '''Crash Bar''' || ✅ Implemented || probability_zone_analysis.py || Bar 2x average = structural break | ||
|- | |- | ||
| ''' | | '''Color Change''' || ⚠️ Disabled || probability_zone_analysis.py || TICKET-21: Too restrictive, set enable_color_change_filter=False | ||
|- | |- | ||
| ''' | | '''Three-Finger Spread''' || ✅ Implemented || probability_zone_analysis.py || Price/21MA/200MA separation detection (PDF calls it large MA spread) | ||
|- | |- | ||
| ''' | | '''45-degree angle''' || ✅ Implemented || trend_analysis_core.py || MA slope analysis, "flattish" detection | ||
|- | |- | ||
| ''' | | '''Railroad Trend''' || ✅ Implemented || market_state_analysis.py || Consistency > 80%, 3+ strong bars | ||
|- | |- | ||
| ''' | | '''Creeper Move''' || ✅ Implemented || market_state_analysis.py || Avg range < 0.5% over 7 bars | ||
|- | |- | ||
| '''Big Bar by Big Bar''' || | | '''Two-Day Trend''' || ✅ Implemented || market_state_analysis.py || Both daily bars close same direction | ||
|- | |||
| '''Fab Four (21MA + 200MA zone)''' || ❌ Not Implemented || - || PDF concept not directly coded; closest is Three-Finger Spread | |||
|- | |||
| '''Traffic Jam''' || ❌ Not Implemented || - || Prior day congestion as S/R not coded | |||
|- | |||
| '''Big Bar by Big Bar''' || ⚠️ Partial || trend_analysis_core.py || Slope calculation uses significant moves; no explicit "noise filter" | |||
|} | |} | ||
---- | ---- | ||
== | == PART 4: Key Configuration Parameters == | ||
=== Setup Quality Weights (setup_quality_detection.py) === | |||
<pre> | |||
timeframe_alignment_weight = 0.30 # 30% | |||
trend_strength_weight = 0.20 # 20% | |||
entry_technique_weight = 0.15 # 15% | |||
key_level_proximity_weight = 0.20 # 20% | |||
risk_reward_weight = 0.15 # 15% | |||
------- | |||
= 1.00 # Must sum to 1.0 | |||
</pre> | |||
=== Penalty Constants === | |||
<pre> | |||
creeper_move_penalty = -50 # Major penalty for slow grinding | |||
ma_struggle_penalty = -30 # Price repeatedly testing MA | |||
two_day_trend_penalty = -30 # Missing 2-day directional trend | |||
phase_mismatch_penalty = -25 # Not in MIDDLE phase | |||
railroad_trend_bonus = +15 # Strong one-sided move | |||
</pre> | |||
=== Grade Thresholds === | |||
<pre> | |||
A+ = score >= 90 → 2 lots | |||
A = score >= 80 → 1 lot | |||
B = score >= 70 → 1 lot | |||
C = score >= 60 → 1 lot | |||
D = score >= 50 → 1 lot | |||
F = score < 50 → 1 lot (signal may be rejected by filters) | |||
</pre> | |||
---- | |||
== | == PART 5: Component Details == | ||
=== Multi-Timeframe Analysis === | === Multi-Timeframe Analysis === | ||
'' | ''See:'' [[Component:Multi_Timeframe_Analysis]] | ||
=== Trend Analysis Core === | |||
''See:'' [[Component:Trend_Analysis_Core]] | |||
=== Market State Analysis === | === Market State Analysis === | ||
'' | ''See:'' [[Component:Market_State_Analysis]] | ||
=== Setup Quality Detection === | === Setup Quality Detection === | ||
'' | ''See:'' [[Component:Setup_Quality_Detection]] | ||
=== Signal Generation === | === Signal Generation === | ||
'' | ''See:'' [[Component:Signal_Generation]] | ||
=== Trade Execution === | === Trade Execution === | ||
'' | ''See:'' [[Component:Trade_Execution]] | ||
---- | |||
== PART 6: JIRA Ticket Reference == | |||
{| class="wikitable" | |||
|- | |||
! Ticket !! Component !! What It Fixed | |||
|- | |||
| TICKET-5 || setup_quality || Realistic position sizing (was 100-200 lots, now 1-2 lots) | |||
|- | |||
| TICKET-8 || signal_generation || CTT rate correction (was 0.05%, now 0.01%) | |||
|- | |||
| TICKET-11 || signal_generation || BOS stop distance (extended lookback from 5 to 10 bars) | |||
|- | |||
| TICKET-12 || signal_generation || Hour filter (block 9AM, 10PM, 11PM) | |||
|- | |||
| TICKET-13 || trade_execution || Breakeven stop (25pt activation) | |||
|- | |||
| TICKET-15/17/20 || trade_execution || Trailing stop (ATR-based, 2x ATR) | |||
|- | |||
| TICKET-19 || signal_generation || MA direction alignment filter | |||
|- | |||
| TICKET-20 || signal_generation || Probability zone filter (integrates probability_zone_analysis) | |||
|- | |||
| TICKET-21 || signal_generation || Color change filter (DISABLED - too restrictive) | |||
|- | |||
| TICKET-25 || market_state || Fixed creeper detection to use 1H data, not 5M | |||
|} | |||
---- | ---- | ||
Revision as of 18:08, 7 January 2026
Component Architecture
Branch: rikk_mtf_backtest001 | Companion to: Alpha_Research
This page documents the component-level implementation of the MTFDR (Multi-Timeframe Dynamic Regime) backtesting system. Each component translates trading philosophy into executable Python.
For Developers: Each section maps trading concepts to code. You don't need trading experience—the "why" is explained before the "how".
PART 1: Pipeline Architecture
The system processes each 5-minute bar through 5 sequential layers:
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/not, 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 price action (avg range < 0.5%) │
│ 3. Volatility - High (>1%), Normal, Low (<0.3%) │
│ 4. Market State Classification - Trending/Range/Creeper/Momentum │
│ 5. Two-Day Trend - Both days close same direction │
│ 6. Trend Phase - EARLY/MIDDLE/LATE (based on MA crossover) │
│ 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%) - From Layer 1 │
│ • Trend Strength (20%) - Penalties: creeper, MA struggle │
│ • Entry Quality (15%) - Near MA bonus, clean entry bonus │
│ • Key Level Proximity (20%) - Near support/resistance │
│ • Risk/Reward (15%) - Lookup table: <1=0, 1-1.5=40, 1.5-2=70... │
│ │
│ Penalties Applied: creeper(-50), ma_struggle(-30), no_2day(-30) │
│ A+ Enforcement: Must pass all 3 criteria or capped at 79 │
│ 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 direction │
│ • MA21 declining → SHORT direction │
│ • Flat → MTF fallback │
│ │
│ Gate Filters (JIRA tickets): │
│ • TICKET-12: Hour filter (block 9AM, 10PM, 11PM) │
│ • TICKET-19: MA direction alignment │
│ • TICKET-20: Probability zone filter (uses probability_zone_analysis)│
│ • TICKET-21: Color change confirmation (currently DISABLED) │
│ │
│ Output: Signal (direction, entry, stop, target, grade) │
└─────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────┐
│ LAYER 5: trade_execution_engine.py │
│ "Execute the trade, manage the position, calculate P&L" │
│ │
│ Execution: │
│ • Signal-to-trade conversion with slippage modeling │
│ • Commission: Rs 20/lot (Dhan) │
│ • CTT: 0.01% on sell side │
│ │
│ Position Management: │
│ • TICKET-15/17/20: Trailing stop (ATR-based, 2x ATR) │
│ • TICKET-13/17: Breakeven stop (activate at 25pt profit) │
│ • Time-based exit (8 hour max holding) │
│ │
│ Output: Trade objects with complete P&L │
└─────────────────────────────────────────────────────────────────────┘
PART 2: Component Index
| Layer | Component | What It Does | Code Link |
|---|---|---|---|
| 1 | multi_timeframe_analysis.py | MTF alignment across 5 timeframes | View Code |
| (1a) | trend_analysis_core.py | Per-timeframe trend direction, MA slopes | View Code |
| 2 | market_state_analysis.py | Railroad, creeper, volatility, trend phase | View Code |
| 3 | setup_quality_detection.py | 5-factor scoring, A+ to F grades | View Code |
| 4 | signal_generation_trade_management.py | Direction, filters, entry/stop/target | View Code |
| 5 | trade_execution_engine.py | Execution, position mgmt, P&L | View Code |
Support Components:
| Component | What It Does | Used By | Code Link |
|---|---|---|---|
| probability_zone_analysis.py | Probability zones (80%/65%/35%/15%), crash bar, color change | signal_generation (TICKET-20) | View Code |
| data_manager.py | Data loading, timeframe aggregation | main.py | View Code |
| backtesting_analytics.py | Performance metrics, reporting | main.py | View Code |
PART 3: Trading Concept → Code Mapping
| PDF Concept | Implementation Status | Code Location | Notes |
|---|---|---|---|
| Halves/Thirds (80%/65%/35%/15%) | ✅ Implemented | probability_zone_analysis.py | Used via TICKET-20 filter in signal_generation |
| Crash Bar | ✅ Implemented | probability_zone_analysis.py | Bar 2x average = structural break |
| Color Change | ⚠️ Disabled | probability_zone_analysis.py | TICKET-21: Too restrictive, set enable_color_change_filter=False |
| Three-Finger Spread | ✅ Implemented | probability_zone_analysis.py | Price/21MA/200MA separation detection (PDF calls it large MA spread) |
| 45-degree angle | ✅ Implemented | trend_analysis_core.py | MA slope analysis, "flattish" detection |
| Railroad Trend | ✅ Implemented | market_state_analysis.py | Consistency > 80%, 3+ strong bars |
| Creeper Move | ✅ Implemented | market_state_analysis.py | Avg range < 0.5% over 7 bars |
| Two-Day Trend | ✅ Implemented | market_state_analysis.py | Both daily bars close same direction |
| Fab Four (21MA + 200MA zone) | ❌ Not Implemented | - | PDF concept not directly coded; closest is Three-Finger Spread |
| Traffic Jam | ❌ Not Implemented | - | Prior day congestion as S/R not coded |
| Big Bar by Big Bar | ⚠️ Partial | trend_analysis_core.py | Slope calculation uses significant moves; no explicit "noise filter" |
PART 4: Key Configuration Parameters
Setup Quality Weights (setup_quality_detection.py)
timeframe_alignment_weight = 0.30 # 30%
trend_strength_weight = 0.20 # 20%
entry_technique_weight = 0.15 # 15%
key_level_proximity_weight = 0.20 # 20%
risk_reward_weight = 0.15 # 15%
-------
= 1.00 # Must sum to 1.0
Penalty Constants
creeper_move_penalty = -50 # Major penalty for slow grinding ma_struggle_penalty = -30 # Price repeatedly testing MA two_day_trend_penalty = -30 # Missing 2-day directional trend phase_mismatch_penalty = -25 # Not in MIDDLE phase railroad_trend_bonus = +15 # Strong one-sided move
Grade Thresholds
A+ = score >= 90 → 2 lots A = score >= 80 → 1 lot B = score >= 70 → 1 lot C = score >= 60 → 1 lot D = score >= 50 → 1 lot F = score < 50 → 1 lot (signal may be rejected by filters)
PART 5: Component Details
Multi-Timeframe Analysis
See: Component:Multi_Timeframe_Analysis
Trend Analysis Core
See: Component:Trend_Analysis_Core
Market State Analysis
See: Component:Market_State_Analysis
Setup Quality Detection
See: Component:Setup_Quality_Detection
Signal Generation
See: Component:Signal_Generation
Trade Execution
See: Component:Trade_Execution
PART 6: JIRA Ticket Reference
| Ticket | Component | What It Fixed |
|---|---|---|
| TICKET-5 | setup_quality | Realistic position sizing (was 100-200 lots, now 1-2 lots) |
| TICKET-8 | signal_generation | CTT rate correction (was 0.05%, now 0.01%) |
| TICKET-11 | signal_generation | BOS stop distance (extended lookback from 5 to 10 bars) |
| TICKET-12 | signal_generation | Hour filter (block 9AM, 10PM, 11PM) |
| TICKET-13 | trade_execution | Breakeven stop (25pt activation) |
| TICKET-15/17/20 | trade_execution | Trailing stop (ATR-based, 2x ATR) |
| TICKET-19 | signal_generation | MA direction alignment filter |
| TICKET-20 | signal_generation | Probability zone filter (integrates probability_zone_analysis) |
| TICKET-21 | signal_generation | Color change filter (DISABLED - too restrictive) |
| TICKET-25 | market_state | Fixed creeper detection to use 1H data, not 5M |