Rejected thesis
Consensus capitulation (stacking triggers in the family)
Code: research/consensus_capitulation.py
Report: research/consensus_capitulation_report.json
For each (symbol, day) inside a drawdown ≥ 30 %, count how many distinct triggers from {death_cross + vol, bullish_engulf, gap_breakaway/runaway/exhaustion/island_down, bear_flag} fired in the trailing 10 trading days. Forward returns are monotonic in trigger count:
| Trigger count × OOS 2020+ | n | 40d edge | 60d edge | hit @ 40d |
|---|---|---|---|---|
| triggers = 1 | 6,818 | +2.40 % | +4.24 % | 58 % |
| triggers = 2 | 2,463 | +5.39 % | +11.27 % | 62 % |
| triggers ≥ 3 (OOS 2020+) | 1,401 | +9.05 % | +23.22 % | 70 % |
The 3+ subset is the highest-conviction sub-cohort in the repo at the 1-3 month horizon. n=1,401 is plenty for productization. Caveat: these are by construction names where lots of bad-news triggers fired on top of each other — single-name sizing risk is real (some names are correctly diagnosed as melt-downs and don't recover).
| Sample | 1,401 |
|---|---|
| Validator | research/consensus_capitulation.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