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%
4.1 KB · 86 lines markdown
Rendered Raw Blame History
1---2project: anomaly-atlas3document: expH_oos_stability/hypothesis4author: Simon-Pierre Boucher5contact: contact@spboucher.ai6data_source: hfmarketdata.io7created: 2026-08-128modified: 2026-08-129status: final10---1112# Hypothesis — expH_oos_stability1314*Pre-specified 2026-08-12 before any validation data was touched. The15VALIDATION split (2016-01-01 → 2022-01-01, frozen in `data/universe.py`16before the first scan) is opened HERE for the first time. The HOLDOUT17(2022→) stays sealed — it is touched once, only to confirm whatever18survives this experiment.*1920```text21Hypothesis22  Four pre-registered questions on the untouched validation split:23  (Q-a) CKX 1day — the lone kappa=0.25 cost survivor — does NOT replicate24        (skeptical prior: sparse-name estimation artifact).25  (Q-b) The NEGATIVE finding replicates: zero intraday rules from the26        expG pool have positive net mean at kappa=0.25 on validation.27  (Q-c) ES->SPY basis effect (fresh corr(SPY_{t-1}, ES_t) = -0.032 in28        train) replicates in sign with a small day-block bootstrap p,29        and remains splice-invariant.30  (Q-d) The daily 2008-2015 mega-cap reversal family was crisis-regime:31        its VR30 excess and excess AC1 SHRINK toward zero on validation.3233Falsification criterion34  (Q-a) falsified (CKX real) if net@0.25 > 0 with bootstrap CI excluding35  0 on validation AND in both validation sub-periods. (Q-b) falsified if36  ANY intraday rule has net@0.25 CI above 0. (Q-c) falsified if the sign37  flips or splices disagree. (Q-d) falsified if the family's median VR3038  excess is as negative or more negative than 2008-2015 (regime story39  wrong -> persistent structure, escalate to holdout).4041Artifact null(s)42  Inherited from the scans: EDGE-based costs (expG model), MA(1)-consistent43  VR null (expC), both-fresh synchronization (expD). No new nulls.4445Method (pre-declared)46  Window: VALIDATION 2016-2021; sub-periods 2016-2018 / 2019-2021.47  (a,b) The expG pool (31 rules, rebuilt mechanically) re-evaluated with48  identical machinery: gross, kappa*, net@{0.25, 1.0} with 21-day-block49  bootstrap CIs (n=300, seed 42).50  (c) expD machinery on 2016-2021: ES(3 splices)->SPY and SPX->SPY fresh51  xcorr +/-3, day-block bootstrap p (n=200, seed 42).52  (d) Liquid-12 daily cells on validation: AC1, VR30, MA(1) excess, EDGE53  excess AC1 — side by side with their 2008-2015 train values.54  Everything through the cached client; results sanitized JSON.5556Result57  Run 20260812T072518Z (418 requests, 18.8M rows — the validation window's58  first and only download). (Q-b) REPLICATES: zero rules net-positive with59  CI>0 at kappa=1.0; at kappa=0.25 only CKX. (Q-a) CKX fails its60  pre-registered robustness clause: validation overall net@0.25 = +16.361  bp/day CI [1.4, 26.5], BUT 2019-2021 sub-period CI covers zero62  ([-19.5, +22.0]) and kappa* decays 0.445 -> 0.263 within validation —63  NOT confirmed, NOT escalated to the holdout. (Q-c) ES->SPY FAILS to64  replicate: fresh corr = +0.003 (p=0.68), sign flipped, all three splices65  agree. (Q-d) regime story CONFIRMED: the daily family's median VR3066  excess goes -0.143 (train 2008-15) -> +0.023 (validation); the crisis67  reversal vanished OOS (a few single names retain small negative excess68  AC1: MSFT, NVDA, QQQ — noted for the record, not promoted).6970Interpretation71  The full ladder closes with the charter's anticipated honest outcome:72  NOTHING in the searched universe survives artifact nulls + search73  correction + costs + out-of-sample validation. The negative finding74  ("short-horizon anomalies in open bar data do not survive costs, and the75  gross survivors do not replicate") is itself corrected, OOS-confirmed76  and robust -> Level 2; it becomes the atlas's first entry, together with77  the SPX->SPY artifact demonstration (present in train +0.132 AND78  validation +0.080 — the artifact replicates even though the "anomalies"79  do not, which is exactly the point). The sealed holdout (2022->) is NOT80  spent on a dead pool; it remains sealed for any future Level-2 claim.8182Next experiment83  Atlas entries (via tools/new_finding.py) for whatever this settles;84  anything that PASSES here goes to the sealed holdout exactly once.85```86