spb/anomaly-atlas Public License
Systematic discovery & rigorous validation of statistical anomalies in open HF market data (hfmarketdata.io) — pre-registered, artifact-null-driven, fully reproducible. Live atlas: www.anomaly-atlas.io
Python 61.4%
JavaScript 28.7%
CSS 8.6%
Shell 0.7%
Makefile 0.5%
1---2project: anomaly-atlas3document: expC_reversion_scan/hypothesis4author: Simon-Pierre Boucher5contact: contact@spboucher.ai6data_source: hfmarketdata.io7created: 2026-08-128modified: 2026-08-129status: final10---1112# Hypothesis — expC_reversion_scan1314*Pre-specified 2026-08-12 before the scan ran. New detectors (EDGE, BH-FDR,15bootstrap p) passed the §8.1 gate first (6 tests). Splits declared in16`data/universe.py`; scan runs on TRAIN (2000–2016) only.*1718```text19Hypothesis20 Tests H01 (liquid short-horizon reversion is zero net of bounce) and the21 scan half of H02 (reversal decays across sub-periods). Expectation, from22 the literature priors: raw AC1/VR will show heavy "reversion" that is23 MOSTLY bounce; excess reversion (net of the independent EDGE spread null)24 will be near zero for liquid names, possibly nonzero in 2000-2007 where25 real short-horizon reversal was still documented, and should SHRINK from26 the 2000-2007 to the 2008-2015 sub-period (decay).2728Falsification criterion29 H01 falsified if liquid-bucket excess reversion survives FDR(5%) with a30 negative sign in 2008-2015 at any intraday horizon. The decay story is31 falsified if excess reversion is STABLE or GROWING across sub-periods.3233Artifact null(s)34 T1 bounce via the EDGE spread measured from the SAME ticker-period's35 DAILY OHLC bars (independent granularity — no AC1 circularity);36 bounce-implied AC1 = -s²/4 / Var(r_timeframe). T2 handled by trade-time37 returns (no LOCF) + min-data guards. Random-walk null via block bootstrap.3839Method (grid pre-declared)40 Universe: the expB 42 (12 liquid + seed-42 random 30). Period: TRAIN41 2000-2016, sub-periods 2000-2007 / 2008-2015.42 Timeframes: 1day, 30min, 5min for all tickers; 1min for the liquid 12 on43 2014-2016 only (volume restriction, declared here).44 Intraday returns: RTH bars only (09:30-16:00), within-day diffs of log45 close, no overnight. Adjustment: adj_split everywhere.46 Statistics per cell (ticker × timeframe × sub-period): n, AC1, VR(5),47 VR(30), EDGE daily spread, bounce-implied AC1, excess AC1; moving-block48 bootstrap (block = 1 day of bars, n_boot = 200, seed = 42) for CIs and49 two-sided p-values (AC1_excess vs 0; VR vs 1). Half-life on daily closes.50 Correction: BH-FDR at 5% within each statistic family, all cells jointly.51 Cell count declared: ≤ (42×3×2 + 12) ≈ 264 per family.5253Result54 Run 20260812T062408Z (354 requests, 10.5M rows). 127 analyzable cells.55 THE PRE-SPECIFIED BOUNCE NULL WAS MIS-SPECIFIED at intraday frequencies:56 EDGE daily spread + pure-Roll alternation predicts AC1 of -3 to -2757 (impossible; AC1 is bounded by [-1,1]) because consecutive intraday closes58 do not flip sides every bar. Consequence: the excess-AC1 positive family59 (90 "survivors") is an artifact OF THE NULL and is discarded. Corrected60 triage (documented post-hoc null FIX, not a hypothesis expansion — see61 LOG): MA(1)-consistent VR null, VR30_null = 1 + 2*AC1*(1-1/30); negative62 excess = multi-lag reversion beyond ANY lag-1 effect (bounce included).63 Triage output: 14 cells (FDR-vr30 AND excess < -0.05), incl. JPM 1min64 2014-15 (-0.243), MSFT 5min 2000-07 (-0.108), XOM/NVDA 1min; daily65 mega-cap/index reversal 2008-15 (XOM excess_AC1 -0.133, SPY -0.055, both66 FDR; median 1day VR30 excess -0.12 to -0.16 across cells).6768Interpretation69 (Level 0 throughout.) H01 CONFIRMED at lag 1: zero liquid intraday70 negative-excess survivors in 2008-2015. Multi-lag daily reversion in the71 2008-2015 train block is the strongest triage signal (crisis-regime72 index/mega-cap reversal — plausibly regime-bound). Decay clause PARTIALLY73 FALSIFIED: median VR30 excess is flat at 5min (-0.027 vs -0.025) and only74 mildly shrinking at 1day (-0.157 vs -0.122) across sub-periods — the75 clean monotone-decay story does not hold inside train. Methodological76 finding: spread-based bounce nulls must be variance-consistent; adopted77 into taxonomy T1 and Phase-9 methodology.7879Next experiment80 expD (lead-lag scan) on the same universe/splits; survivors of C+D+E81 meet the full correction battery in expF.82```83