Rejected thesis
Dormancy window sweep (60 / 120 / 180 / 252 days)
Follow-up to the dormant-awakening entry above: does extending the dormancy precondition beyond 3 months (60d) — to 6mo / 9mo / 1yr — produce a stronger signal? Intuition would say yes: more time quiet = more pent-up energy.
Code: research/dormant_awakening.py --window {120,180,252}
Reports: research/dormant_awakening_{120,180,252}d_report.json
Sample-size collapse:
| Window | Base events | T+1 confirms |
|---|---|---|
| 60d | 2,309 | 216 |
| 120d | 434 | 28 |
| 180d | 104 | 7 |
| 252d | 15 | 1 |
True 252-day dormancy at the $5M ADV / $5 price gate is extremely rare in the cached US universe — only 15 events in 15 years.
Edge degrades monotonically as dormancy lengthens:
| Window | n | 5d edge | 20d edge | 40d edge | 60d edge | hit@20d |
|---|---|---|---|---|---|---|
| 60d | 2309 | +0.33 % | +0.74 % | +0.63 % | +0.79 % | 0.56 |
| 120d | 434 | +0.30 % | +0.59 % | +0.47 % | +0.92 % | 0.56 |
| 180d | 104 | +0.02 % | +0.01 % | -0.25 % | -0.43 % | 0.55 |
| 252d | 15 | -1.53 % | -5.81 % | -6.30 % | -6.29 % | 0.40 |
The 252-day cell is too small (n=15) to lean on individually, but the monotone trend across 60 → 120 → 180 → 252 is hard to miss. The intuition was wrong: longer-required dormancy doesn't compress more spring; it filters into a population with structural reasons to be dormant (small float, distress, no analyst coverage, dying franchise) where the wake-up is more often a one-off catalyst that fades than the start of continuation.
T+1 confirmation pattern survives at every window:
| Window | n | 20d edge | hit@20d |
|---|---|---|---|
| 60d | 216 | +5.97 % | 0.79 |
| 120d | 28 | +5.57 % | 0.79 |
| 180d | 7 | +3.44 % | 0.86 |
| 252d | 1 | +1.84 % | 1.00 |
The day-2-confirmation sub-cohort lifts the edge to ~+5-6 %/20d at hit-rate 0.79+ everywhere it has meaningful n. So the confirmation pattern is window-independent, while the dormancy precondition is mildly destructive at length.
Verdict: Keep dormancy short (60d at most) or drop the dormancy
precondition altogether. The burst_continuation cohort already
captures the cleaner version of "first-day spike + day-2 confirm"
without any dormancy filter (n=720, edge +9 %/20d, hit 0.70). The
dormancy-conditioned variant adds noise rather than signal as the
window lengthens.
Meta-finding extended: Across burst_continuation,
dormant_awakening at 60/120/180/252d, and failed_breakdown, the
day-2 follow-through is the only selector that produces a clean
+5-9 %/20d positive forward drift. Prior-day conditioning (dormancy,
prior crash, prior thrust) modulates which population fires the
trigger but does not itself create the alpha. The pattern is:
the second day tells you whether the first day was real.
| Sample | 15 |
|---|---|
| Validator | research/dormant_awakening.py --window {120,180,252} |
| 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