All studies use validation/framework.py (lag>=1, next_open, dead-stock-safe, cost_bps decimal). IS <2016-01-01, OOS >=2016-01-01, bootstrap n=5000, beta audit vs EW market and vs EqMom.
| Variant | Segment | Ret (cum) | Sharpe(252) | MaxDD | p | CorrMkt | CorrEqMom | ResidSharpe |
|---|---|---|---|---|---|---|---|---|
| Announcement drift (ret1>0, hold60) | IS | +9.48% | 0.16 | -12.57% | 0.302 | 0.41 | 0.39 | 0.19 |
| Announcement drift (ret1>0, hold60) | OOS | +148.40% | 0.75 | -21.25% | 0.005 | 0.41 | 0.39 | 0.19 |
| MAX long low (bottom decile, hold21) | IS | +111.14% | 0.59 | -46.08% | 0.037 | 0.89 | 0.71 | -0.19 |
| MAX long low (bottom decile, hold21) | OOS | +214.10% | 0.78 | -34.06% | 0.006 | 0.89 | 0.71 | -0.19 |
| Halloween (long SPY Nov-Apr, lag1) | IS | +86.48% | 0.54 | -33.71% | 0.048 | 0.72 | 0.62 | -0.15 |
| Halloween (long SPY Nov-Apr, lag1) | OOS | +92.23% | 0.50 | -33.72% | 0.055 | 0.72 | 0.62 | -0.15 |
| SPY buy-hold | IS | +95.43% | 0.44 | -55.19% | 0.086 | 1.00 | 1.00 | 0.00 |
| SPY buy-hold | OOS | +349.45% | 0.89 | -33.72% | 0.003 | 1.00 | 1.00 | 0.00 |
| EqMom baseline (12-1 top decile, hold21, net10bps) | IS | +195.59% | 0.62 | -54.71% | 0.028 | 1.00 | 1.00 | 0.00 |
| EqMom baseline (12-1 top decile, hold21, net10bps) | OOS | +1004.91% | 1.06 | -38.55% | 0.001 | 1.00 | 1.00 | 0.00 |
Verdicts (OOS only, p<0.05 and resid>0 and corrEqMom<0.6 required for PASS)
- Announcement drift (ret1>0, hold60): REJECT (p=0.005, Sharpe 0.75, corrEqMom 0.39, resid 0.19) — resid~0.
- MAX long low (bottom decile, hold21): REJECT (p=0.006, Sharpe 0.78, corrEqMom 0.71, resid -0.19) — high corr/beta.
- Halloween (long SPY Nov-Apr, lag1): REJECT (p=0.055, Sharpe 0.50, corrEqMom 0.62, resid -0.15) — no seasonal alpha.
- SPY buy-hold: — (p=0.003, Sharpe 0.89, corrEqMom 1.00, resid 0.00) — reference.
- EqMom baseline (12-1 top decile, hold21, net10bps): — (p=0.001, Sharpe 1.06, corrEqMom 1.00, resid 0.00) — reference.
Notes
- Announcement drift: ret1 = close[t+1]/close[t]-1 on earnings date t, hold positives from t+2 for 60 calendar days, equal-weight, gross (cost ~0.02% daily).
- MAX: max daily return in prior 21 trading days, signal = -MAX, top decile long, hold21, net 10bps next_open.
- Halloween: long SPY Nov-Apr, flat May-Oct, lag1 (signal at D decides for D+1).
- All three families are price/calendar-based and were never explored in prior rounds (factor zoo, intraday, PEAD, commodity, etc.).