SPB Git

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%

# project: anomaly-atlas document: expC_reversion_scan/analysis author: Simon-Pierre Boucher contact: contact@spboucher.ai data_source: hfmarketdata.io created: 2026-08-12 modified: 2026-08-12 status: reviewed

# Analysis — expC_reversion_scan

Run: results/expC_reversion_scan/20260812T062408Z/results.json (354 requests, 10.5M rows, manifest embedded; protocol pre-specified; detectors §8.1-gated). All conclusions Level 0.

# 1. The scan's most valuable output is about the NULL

The pre-specified bounce null (EDGE daily spread, pure Roll alternation, -s²/4/Var(r)) predicts intraday AC1 of −3 to −27 — outside [−1, 1], mathematically impossible. Diagnosis: the daily effective spread implies far more bounce variance than 1–5min bar closes contain, because consecutive intraday closes rarely flip bid/ask side (order-flow persistence). Lesson (now taxonomy T1, methodology rule): a spread-based bounce null must be variance-consistent with the return series it is applied to — otherwise "excess" statistics are artifacts of the null itself. The 90 positive-excess "survivors" are exactly that and are discarded.

# 2. Corrected triage — MA(1)-consistent VR null

Bounce (any lag-1-only process) implies VR(q) = 1 + 2·AC1·(1−1/q). Negative VR30 − VR30_MA1 = multi-lag reversion beyond ALL lag-1 effects — a conservative null (it also absorbs any real lag-1 reversion). This correction is a documented post-hoc null fix (LOG §12 entry), computed from the same saved cells.

14 triage cells pass FDR(vr30) with excess < −0.05:

  • Daily 2008–2015 mega-cap/index reversal — the broadest pattern: XOM AC1 −0.148 (excess_AC1 −0.133, FDR), JPM −0.104, SPY −0.079 (−0.055, FDR); median 1day VR30 excess −0.12/−0.16 across all cells. Consistent with crisis-regime multi-day reversal; likely regime-bound.
  • 1min multi-lag reversion in 2014–2015 liquid names: JPM (−0.243), XOM (−0.075), NVDA (−0.061) — 30-minute-horizon reversion visible in 1min bars, not explained by lag-1 bounce.
  • Scattered 5min/30min cells (MSFT 2000–07 −0.108; illiquid names where staleness (T2) remains a live confound).

# 3. Verdicts on the pre-registered clauses

  • H01 (liquid intraday lag-1 reversion = 0 net of bounce): CONFIRMED — zero liquid negative-excess survivors in 2008–2015 intraday. The expected-negative held.
  • Decay clause: PARTIALLY FALSIFIED — median VR30 excess is flat at 5min across sub-periods and only mildly shrinking at 1day. Recorded as-is; the clean monotone decay narrative does not hold inside train.

# 4. Hand-off

The 14 triage cells + the daily-reversal family go to expF (SPA vs artifact-null benchmark, DSR with the 22-hypothesis budget) and expH (validation split). Nothing here enters the atlas. expD should reuse the MA(1)-consistency lesson for its cross-correlation nulls.