Universe: untouched MidCap-400, 398 names, 2020-07-27..2026-09-18. Frozen spec top_k=30, hold=21, base 10bps, next_open. Viability rule: VIABLE = placebo p<0.05 AND beats MOM_126 (p<0.10) AND grid median Sharpe>0.30 AND >=70% cells positive AND block p<0.05; VARIANT = real but not independent; REJECT = placebo/block p>=0.05.
1. Placebo null (within-date score permutation, N=100)
observed Sharpe 0.65 vs null mean 0.70, p95 0.87, max 1.00 -> empirical p = 0.640
2. Ablation vs controls (midcap Sharpe, same k=30)
| Arm | Sharpe |
|---|---|
| H5 (compression + breakout) | 0.65 |
| PLAIN_BO (no compression gate) | 0.78 |
| COMPRESSION_ONLY (no breakout) | 0.57 |
| MOM_126 (plain momentum) | 0.78 |
| H5_RESID_MOM (momentum-neutral) | 0.45 |
H5 vs MOM_126: corr 0.61, p_vs_mom 0.861 (small = H5 beats momentum).
3. Parameter fragility (one-at-a-time, midcap Sharpe)
min 0.46 | median 0.65 | max 0.74 | positive 100% of cells
| param | value | Sharpe |
|---|---|---|
| atr_look | 10 | 0.56 |
| atr_look | 14 | 0.65 |
| atr_look | 20 | 0.50 |
| rank_look | 63 | 0.74 |
| rank_look | 126 | 0.65 |
| rank_look | 252 | 0.46 |
| pct_thr | 0.15 | 0.52 |
| pct_thr | 0.25 | 0.65 |
| pct_thr | 0.35 | 0.72 |
| bo_look | 10 | 0.65 |
| bo_look | 20 | 0.65 |
| bo_look | 40 | 0.70 |
| hold | 10 | 0.50 |
| hold | 21 | 0.65 |
| hold | 42 | 0.65 |
| top_k | 20 | 0.65 |
| top_k | 30 | 0.65 |
| top_k | 50 | 0.60 |
4. Significance & track record
- iid bootstrap p 0.050; block(10) bootstrap p 0.057
- expected-null Sharpe sr0 0.32 (K=6); MinTRL 6123.6952907695595 obs (have 1545)
- positive years 6/7; halves 0.38 / 0.99
- locked 24mo holdout (main panel): Sharpe 1.90 (p=0.005)
Verdict: REJECT
- placebo p=0.640; p_vs_mom=0.861; grid median=0.65 (100% pos); block p=0.057.
- VIABLE means an independent, robust edge -> next step is a fill-measuring paper shadow. VARIANT means it is momentum/small-cap beta in disguise -> fold into the existing book, do not fund it separately. REJECT means the ranking is noise.