Rejected thesis
Relative drawdown vs SPY — critical macro overlay
Code: research/relative_drawdown.py
Report: research/relative_drawdown_report.json
Splits the drawdown_bounce cohort (n=9,414 events with stock dd ≤ -30 %) by SPY's drawdown at the same date:
| Macro regime × OOS 2020+ | n | 60d edge | 250d edge |
|---|---|---|---|
| Idiosyncratic (SPY > -5 % from 252d high) | 2,027 | -0.94 % | +1.16 % |
| Mild systemic (-15 % < SPY ≤ -5 %) | 1,914 | +4.42 % | +25.6 % |
| Full systemic (SPY ≤ -15 %) | 1,644 | +7.71 % | +24.4 % |
| Idio + vol_confirm OOS 2020+ | 533 | -1.07 % | +1.10 % |
| Full systemic + vol_confirm OOS 2020+ | 494 | +10.7 % | +35.6 % |
Idiosyncratic deep drawdowns have essentially zero edge. The drawdown bounce thesis is really a macro mean-reversion play disguised as a single-name pattern — when SPY is at highs and a single stock is down 30 %+, the market is usually right and the stock keeps falling (value trap, fraud, dying franchise). When SPY itself is down, the broad recovery sweeps the over-sold names back up.
Live cohort implication: every member of the contrarian family
(drawdown_bounce, gap_capitulation, bounce, bullish_engulf_in_drawdown,
consensus_capitulation) should add a SPY-drawdown gate — only fire
when SPY is at least mildly drawn down (e.g. SPY dd ≤ -5 %). That
single filter likely 2-3× the per-trade edge and removes the value-trap
left tail.
| Sample | 9,414 |
|---|---|
| Validator | research/relative_drawdown.py |
| Verdict | Rejected |
Every result here is reproducible from the script named above. Reports are in the repository.
- Volatility squeeze
- Pre-FOMC drift
- Uptrend pullback
- Momentum continuation
- Industry-relative momentum (at 4-week lookback)
- Earnings-reaction reversal (anti-PEAD)
- Beat-persistence pre-earnings drift
- Sector ETF mean-reversion
- 52-week-high breakout
- Volume accumulation (above-200DMA +...
- Cross-sector momentum
- Analyst-upgrade cluster