You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
2.8 KiB
YAML
94 lines
2.8 KiB
YAML
# ORB Phase 7 Winner — Market Regime Filter + Ticker Cooldown
|
|
#
|
|
# Phase 7 sweep (12 combos, IS 2022-2024 / OOS 2025-present):
|
|
# Best OOS Sharpe: 2.067 (ticker_cooldown_days=2, regime=any)
|
|
# OOS return: +23.0%, OOS max DD: -3.99%, OOS trades: 2669, OOS WR: 52.3%
|
|
#
|
|
# SPY regime filter: ZERO effect — all thresholds (null/-0.3%/-0.5%/-1%) identical
|
|
# → regime filter disabled (market_regime_spy_threshold: null)
|
|
#
|
|
# Ticker cooldown: STRONG effect (prevents chasing same stock repeatedly):
|
|
# cooldown=0d: OOS 1.895, DD -6.03%, 3295 trades
|
|
# cooldown=1d: OOS 1.968 (+3.8%), DD -4.18%, 2916 trades
|
|
# cooldown=2d: OOS 2.067 (+9.1%), DD -3.99%, 2669 trades ← WINNER
|
|
#
|
|
# Mechanism: cooldown=2 avoids mean-reversion trap (stock pulls back after
|
|
# initial breakout day). Also prevents overconcentration in popular names.
|
|
#
|
|
# Parameters changed vs orb_p6_winner.yaml:
|
|
# ticker_cooldown_days: 2 (was 0)
|
|
|
|
strategy_mode: orb
|
|
|
|
orb_strategy:
|
|
# ORB window
|
|
orb_minutes: 5
|
|
sim_bar_minutes: 5 # Phase 1 winner (Phase 8 will sweep this)
|
|
|
|
# Entry
|
|
entry_direction: long_only # Phase 1 winner
|
|
order_timeout_minutes: 20 # Phase 3 winner
|
|
|
|
# Universe quality filters
|
|
min_price: 10.0
|
|
min_avg_dollar_volume: 25000000
|
|
min_atr_14: 0.50
|
|
|
|
# RVOL-based candidate selection
|
|
min_rvol: 1.0 # Phase 6 confirmed
|
|
max_candidates: 20 # Phase 3 confirmed
|
|
min_candidates_to_trade: 3
|
|
|
|
# Composite ranking weights — Phase 4+5 winners
|
|
weight_rvol: 0.40 # Phase 4 winner
|
|
weight_gap: 0.35 # Phase 4 winner
|
|
weight_dollar_vol: 0.15 # unchanged
|
|
weight_body_ratio: 0.0 # Phase 4 confirmed (no benefit)
|
|
weight_momentum: 0.0 # Phase 5 confirmed (no benefit)
|
|
|
|
# ATR-based stop management
|
|
atr_stop_multiplier: 1.25 # Phase 6 winner
|
|
breakeven_at_r: 1.0 # Phase 2 winner
|
|
trailing_at_r: 2.0 # Phase 2 winner
|
|
trailing_stop_atr_multiplier: 0.3 # Phase 2 winner
|
|
|
|
# Risk-based position sizing
|
|
risk_per_trade_pct: 0.0025 # Phase 4 confirmed
|
|
max_position_pct: 0.20
|
|
daily_max_loss_pct: 0.0125 # Phase 3 confirmed
|
|
max_stops_per_day: 3 # Phase 3 confirmed
|
|
|
|
# Exit
|
|
exit_minutes_before_close: 10 # Phase 6 winner
|
|
|
|
# Execution
|
|
slippage_bps: 5.0
|
|
initial_capital: 10000
|
|
ticker_cooldown_days: 2 # Phase 7 winner (was 0)
|
|
|
|
# Cash account settlement
|
|
settlement_days: 1
|
|
|
|
# Gap filter
|
|
max_gap_pct: 0.04 # Phase 6 winner
|
|
|
|
# Market regime filter — Phase 7: no effect, disabled
|
|
market_regime_spy_threshold: null
|
|
min_candidate_breadth: null
|
|
|
|
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
|