# Morning Momentum Intraday Backtester — Default Configuration
# Strategy: Buy top N morning gainers at ENTRY time, sell at EXIT time or stop loss.

strategy:
  entry_minutes_after_open: 30    # 9:30 + 30 = 10:00 AM ET
  exit_minutes_before_close: 30   # 4:00 - 30 = 3:30 PM ET
  stop_loss_pct: -0.02            # -2% stop loss (null to disable)
  min_morning_gain_pct: 0.01      # stock must be up >= 1% to qualify
  top_n: 3                        # buy top 3 gainers
  initial_capital: 10000          # $10,000 starting capital
  slippage_bps: 5.0               # 0.05% per side (entry + exit)

universe:
  source: sp500                   # sp500 | nasdaq100 | broad | midlarge | largecap | midcap | smallmid | yaml | screener
  sector_exclude: []              # e.g. ["Energy", "Utilities"]
  min_price: 5.0                  # filter out penny stocks

backtest:
  start_date: null                # null = auto (today - lookback_trading_days)
  end_date: null                  # null = today
  lookback_trading_days: 40       # ~2 months
  pre_screen_threshold: 0.015     # phase 1 filter: opening gap vs prev_close >= 1.5%

cache:
  enabled: true
  dir: data/cache/intraday        # Parquet files: {dir}/{TICKER}/{YYYY-MM-DD}.parquet

output:
  dir: runs/intraday
  verbose: false                  # true = show per-day table during run
