Spec: preann_mom top_k=30, hold=10, long-only, next_open, 10bps one-way. Main _ADJ panel, 2006-2026. Predicted-date hit rate (|err|<=15d) = 0.90.
Rule: REJECT if score- or window-placebo p>=0.05; else VIABLE if p_vs_mom<0.10 (beats momentum); else DIVERSIFIER if corr_mom<0.50 (decorrelated equal-Sharpe); else VARIANT. N_perms=200.
Observed Sharpe 0.73 (OOS>=2016 1.00, p_vs0 0.000, block p 0.000), positive years 11/21.
Nulls
| Null | null mean | null p95 | observed | empirical p |
|---|---|---|---|---|
| score permutation | 0.62 | 0.70 | 0.73 | 0.020 |
| window permutation (jitter 120d) | 0.49 | 0.59 | 0.73 | 0.000 |
Momentum control
unconditional 10d momentum (same k/hold): Sharpe 0.71, corr 0.34, p_vs_mom 0.985.
Significance
sr0 0.39 (K=11); MinTRL 6009 obs (have 5030); locked 24mo holdout Sharpe 1.85 (p=0.004).
Verdict: DIVERSIFIER
- score-placebo p=0.020; window-placebo p=0.000; p_vs_mom=0.985; corr_mom=0.34.
- REJECT = the earnings-window conditioning (or the ranking) is noise; DIVERSIFIER = real and decorrelated (equal Sharpe) -> candidate for the combined book, not a standalone upgrade; VARIANT = correlated momentum repackaging; VIABLE = independent and better.