---
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).
