--- name: PEAD Strategy Results description: Pure PEAD 7% strategy is the first configuration to show consistent OOS profitability across all temporal splits type: project --- ## PEAD 7% Base — Production Candidate (2026-03-14) First strategy to show positive expectancy out-of-sample on all splits. ### Signal - Entry: earnings reaction_day_return >= 7%, volume_ratio_20d >= 1.5x - Scoring model: `pead` in `libs/backtest/scoring.py` (`compute_pead_score()`) - Earnings-only, all other event types disabled - Filters disabled: veto_oneoff_penalty=1.0, veto_unknown_direction=false, veto_bearish_direction=false ### Combined Results (155 trades across train/test/valid) - Win Rate: 67.1% (stable 64.7-67.5% across all splits) - Avg Win: +5.45%, Avg Loss: -3.48% - Mean PnL per trade: +2.51% - Median PnL: +3.73% - W/L Ratio: 1.57 - PF: 1.31 (test), 1.95 (valid), 1.68 (train) ### Key Files - Manifests: `configs/experiments/pead_pure_7pct.json`, `pead_7pct_drift_a.json` - Scoring: `libs/backtest/scoring.py` — `compute_pead_score()` - Domain: `libs/backtest/domain.py` — `SignalConfig.scoring_model`, `pead_reaction_threshold`, `pead_volume_threshold` - Store wiring: `apps/backtester/run.py` — `_build_store()` dispatches to PEAD scoring ### Drift A Variant (wider target 3.0 ATR, hold 25d) - Higher per-trade returns (+7.13% avg win) but lower win rate (56.1%) - Mean PnL nearly identical (+2.59%) but median much lower (+0.40%) - OOS less stable (valid WR dropped to 40%) - Not recommended for production **Why:** Previous strategies (baseline 3-factor scoring, small/mid-cap variants, execution optimization) all failed OOS. PEAD 7% succeeds because it relies on a well-documented academic anomaly with a simple, hard-to-overfit signal. **How to apply:** Use PEAD 7% Base as the foundation. Any future strategy modifications should be compared against this baseline. The signal is the edge — execution/risk parameters have limited room for improvement (5 execution variants tested, none beat baseline OOS).