Rejected thesis
Dormant awakening (sustained quiet + sudden spike)
Thesis (rejected unconditional; CONFIRMED only with day-2 confirmation): A stock with 60 days of sustained dormancy (annualised σ ≤ 0.30, range ≤ 15 % of midpoint) that suddenly closes up ≥ R on ≥ V × the dormant-window mean volume is institutional accumulation breaking surface — forward drift should follow.
Distinctness from existing:
- coil_breakout requires a prior thrust (+50 %/30d). Here we
require the OPPOSITE — sustained quiet.
- volatility_squeeze (null) tested band-tightness alone, no
trigger-day return / volume condition.
- burst_continuation has no dormancy precondition.
- accumulation_validate is a 20-day vol z-score above the 200DMA,
not a single-day spike inside a quiet base.
Code: research/dormant_awakening.py
Report: research/dormant_awakening_report.json (n=2,309 base events)
Controls are dormancy-matched: random days from the same name that themselves passed the 60-day dormancy gate but did NOT trigger. This is apples-to-apples and harder to beat than random-day controls.
Cell sweep (cumulative — events at the threshold or stricter):
| Cell | n | 5d edge | 20d edge | 40d edge | 60d edge | hit@20d |
|---|---|---|---|---|---|---|
| X >= 5 % & Y >= 3x | 2309 | +0.33 % | +0.74 % | +0.63 % | +0.79 % | 0.56 |
| X >= 5 % & Y >= 5x | 677 | +0.26 % | +0.74 % | +0.60 % | +0.49 % | 0.55 |
| X >= 5 % & Y >= 8x | 168 | -0.25 % | +0.19 % | +0.48 % | -0.46 % | 0.50 |
| X >= 7 % & Y >= 3x | 1486 | +0.24 % | +0.64 % | +0.31 % | +0.47 % | 0.55 |
| X >= 10 % & Y >= 5x | 362 | +0.39 % | +0.71 % | +0.32 % | -0.07 % | 0.55 |
| X >= 10 % & Y >= 8x | 104 | +0.34 % | +1.04 % | +0.64 % | -0.41 % | 0.53 |
Strictness does not monotonically improve the signal — the loosest base cohort sits at the top of the long-horizon edges. That's inconsistent with "this is a real cohort-specific edge" and more consistent with "we are picking up noise from a moderately positive prior."
Strata (base = X >= 5 % & Y >= 3x):
| Stratum | n | 5d | 20d | 40d | 60d | hit@20d |
|---|---|---|---|---|---|---|
| base all | 2309 | +0.33 % | +0.74 % | +0.63 % | +0.79 % | 0.56 |
| stage2 TRUE | 937 | +0.41 % | +1.17 % | +1.02 % | +1.44 % | 0.59 |
| stage2 FALSE | 1372 | +0.27 % | +0.45 % | +0.36 % | +0.35 % | 0.54 |
| dd <= -15 % | 186 | +0.23 % | +0.43 % | +0.66 % | +0.49 % | 0.51 |
| dd > -5 % | 1685 | +0.34 % | +0.92 % | +0.70 % | +1.00 % | 0.57 |
| second_day T+1 | 216 | +4.77% | +5.97% | +5.95% | +5.72% | 0.79 |
| no second_day | 2093 | -0.13 % | +0.20 % | +0.08 % | +0.28 % | 0.53 |
| OOS 2020+ | 659 | +0.06 % | -0.44% | -2.23% | -1.23% | 0.48 |
Two findings worth keeping:
-
Same day-2-confirmation pattern that defines burst. Among 2,309 dormant-awakening events, 216 (~9 %) have a T+1 follow- through (>= +3 % on >= 1.5x dormant-window vol). That sub-cohort drifts ~+6 %/20d, ~+6 %/40d, ~+6 %/60d at hit-rate 0.79. The mirror cohort (no follow-through, n=2,093) is FLAT across every horizon. As with
burst_continuation, the signal is entirely in the names that confirm on the next day — the single-day trigger is noise on its own. -
OOS 2020+ is negative. The base cohort flips sign post-2020 (20d -0.44 %, 40d -2.23 %, 60d -1.23 % at n=659). Pre-2020 the edge was modestly positive (+1.2 % avg 20d). Likely decay as dormant names became more algo-traded; the day-2-confirmation sub-cohort may have survived (n is too small in OOS to split further with confidence), but the unconditional signal has not.
Verdict: Reject the unconditional dormant-awakening cohort. The day-2-confirmation sub-cohort is a noisier version of the burst-chain already in the scanner (burst's +9 %/20d edge on n=720 vs this one's +6 %/20d on n=216), so productizing it adds n=216 borderline-similar events on top of n=720 cleaner ones — not worth the cohort surface.
Meta-finding: Day-2 follow-through is becoming THE selector.
It carries the signal in:
- burst_continuation: +9.2 % / +13.3 % 20d/40d edge (n=720).
- dormant_awakening: +6.0 % / +6.0 % 20d/40d edge (n=216).
Both cohorts have flat-to-null forward drift in their "no second day" mirror sets. If we want a single meta-cohort, "any name that closed up materially on heavy volume AND followed through on day 2" looks like the productizable abstraction — distinct from the prior-day conditioning (dormancy / burst / coil base).
| Sample | 2,309 |
|---|---|
| Validator | research/dormant_awakening.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