data/finra_short_volume.py · 499 names · 2020-09-01..2026-08-12 · IS<2023-01/OOS>=2023-01 · next-open · 10bps one-way
A–E pre-screen
| variant | IS net SR | OOS net SR | OOS gross SR | ret net | maxDD | turn/yr |
|---|---|---|---|---|---|---|
| PRIMARY -z30 hold5 LS | -2.84 | -2.05 | +0.44 | -54.5% | -54.8% | 147.2 |
| reverse +z30 hold5 LS | -2.92 | -2.83 | -0.44 | -62.3% | -63.2% | 147.2 |
| long-only low-ratio | +0.69 | +0.98 | +1.48 | +113.5% | -25.8% | 73.8 |
| hold1 LS | -12.23 | -9.35 | +0.75 | -96.3% | -96.4% | 591.6 |
| hold10 LS | -2.22 | -1.99 | -0.66 | -49.2% | -49.8% | 77.9 |
| raw ratio hold5 LS | -1.08 | -0.87 | +0.75 | -31.3% | -33.0% | 117.9 |
EW-panel benchmark OOS Sharpe 1.44 (ret +103.8%).
Verdict — PRIMARY
REJECT / near-miss (control reverse-sign net SR -2.85; if the reverse wins, the primary is wrong-signed.)
| check | result | detail |
|---|---|---|
| A alignment (lag-1, next-open) | PASS | framework-enforced |
| B incrementality (OOS gross > EW) | FAIL | OOS gross SR 0.44 vs EW 1.44; rank-corr(signal,mom126) +0.00 |
| C economics (OOS net@10 > 0) | FAIL | OOS net SR -2.05, 147 turns/yr |
| D stability (IS & OOS same sign) | FAIL | IS -2.84, OOS -2.05 |
| E null+power (perm p<0.05) | PASS | perm p 0.000 |
| stress (OOS net@25 > 0) | FAIL | OOS net@25 SR -4.74 |
Notes
- sv_ratio = FINRA short volume / total volume; the flow includes market-maker hedging, so a vol/momentum proxy is live risk (see B).
- CDN retention: older-than-~2020 rows 403; window is stated, not worked around.