Rejected thesis
Double bottom / double top
Thesis (rejected): Two pivot lows (or highs) within 15-80 trading days, prices within 2 ATR of each other, with a mid-rally / mid-dip prominence of ≥ 2 ATR, that then break the neckline on volume, reverse direction for 5-40 days.
Code: research/double_bottom_top.py
Report: research/double_bottom_top_report.json (n=31,116)
Why it failed: Edges are basically zero in both directions.
| Pattern | n | 5d edge | 20d edge | 40d edge |
|---|---|---|---|---|
| double_bottom | 15,269 | -0.07 % | -0.23 % | -0.62 % |
| double_top | 15,847 | -0.09 % | -0.10 % | +0.04 % |
Even the deduplicated detector (each p1 produces at most one event, each (pattern, p2) produces at most one event) shows no edge. Pivot- to-pivot retests of the same level are common enough — and the volume-confirmed neckline break is loose enough — that the cohort captures a sample of mostly random breakouts.
Verdict: Skip. Could potentially be salvaged by tightening to "first significant" pivot pairs only (e.g. through a ZigZag indicator with a 5-10 % move filter) but the unconditional signal is dead.
| Sample | 31,116 |
|---|---|
| Validator | research/double_bottom_top.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