_meta: id: 100 name: "ORB Gainers V24 Quality Overlay" status: live_champion live_readiness: experimental promoted_date: "2026-04-21" parent: orb_gainers_v23 description: > V23 → V24 via OBV-slope(20d) accumulation weight (weight_obv_slope: 0.05). Diagnostic finding (2026-04-21, 98 V23 trades n=96 valid): Phase 1: obv_slope_20 passed all gates: Pearson(obv_slope, r_multiple) = +0.2349 Top-tercile WR 75.0% vs Bottom-tercile 59.4% (+15.6pp) Top-tercile avg_R +0.431 vs Bottom-tercile +0.036 (+0.394R) Hurst_60 and OU-θ_60 both failed gates. Weight sweep: 0.05 is Pareto-dominant (0.10 blows DD; 0.15 return+108% but DD -16%). Phase 2 validation (2026-04-21): 200d: V24 +94.8%, DD -11.29%, Sharpe 2.83 vs V23 +85.0%, DD -11.58%, Sharpe 2.66 Δ Return +9.8pp, Δ DD +0.29pp (BETTER), Δ Sharpe +0.17 ← ALL PASS 400d: V24 +162.1%, DD -13.70%, Sharpe 2.47 vs V23 +149.4%, DD -13.66%, Sharpe 2.36 Δ Return +12.7pp, Δ DD -0.04pp (negligible), Δ Sharpe +0.11 ← ALL PASS V24 is Pareto-dominant over V23 on both 200d and 400d windows. Hypothesis confirmed: OBV accumulation pre-breakout = smart-money positioning → cleaner follow-through → better candidate selection quality. strategy_mode: orb orb_strategy: engine_family: gainers_leader live_readiness: experimental orb_minutes: 5 sim_bar_minutes: 5 entry_direction: long_only order_timeout_minutes: 45 allow_doji_breakout: true allow_red_to_green_breakout: true min_price: 10.0 min_avg_dollar_volume: 25000000 min_atr_14: 0.50 min_atr_pct: 0.04 min_rvol: 1.5 min_abs_gap_pct: 0.02 min_premarket_dollar_vol: 1500000 max_candidates: 20 max_candidates_per_sector: 3 min_candidates_to_trade: 1 ticker_cooldown_days: 0 max_gap_pct: 0.04 min_candidate_breadth: 0.60 market_regime_spy_threshold: 0.0015 market_regime_ticker: QQQ rolling_loss_days: 7 rolling_loss_threshold: -0.07 max_simultaneous_entries: 3 min_breakout_rel_vol: 1.2 weight_rvol: 0.35 weight_gap: 0.20 weight_dollar_vol: 0.05 weight_premarket_dollar_vol: 0.25 weight_body_ratio: 0.0 weight_momentum: 0.15 # === NEW: OBV accumulation weight (Phase 1 gate: Pearson=0.23, WR gap +15.6pp) === # Weight sweep result: 0.05 is Pareto-dominant (best return AND DD simultaneously) # 0.10 → DD blows up (-15.72%); 0.15 → return +108% but DD -16% weight_obv_slope: 0.05 atr_stop_multiplier: 0.75 breakeven_at_r: 1.0 trailing_at_r: 1.0 trailing_stop_atr_multiplier: 0.8 trailing_tighten_at_r: 2.0 trailing_stop_atr_multiplier_tight: 0.3 partial_exit_at_r: 99.0 partial_exit_pct: 0.50 risk_per_trade_pct: 0.05 max_position_pct: 0.70 daily_max_loss_pct: 0.05 max_stops_per_day: 5 exit_minutes_before_close: 5 slippage_bps: 5.0 initial_capital: 10000 compound_returns: false daily_budget_reset: true settlement_days: 1 drawdown_governor_threshold: 0.025 drawdown_governor_min_scale: 0.30 streak_sizing_win_bonus: 0.70 streak_sizing_max: 2.5 universe: source: midlarge backtest: start_date: null end_date: null lookback_trading_days: 200 cache: enabled: true dir: data/cache/intraday output: dir: runs/intraday_orb verbose: false