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%
2.6 KB · 63 lines markdown
Rendered Raw Blame History
1---2project: anomaly-atlas3document: expF_multiple_testing/analysis4author: Simon-Pierre Boucher5contact: contact@spboucher.ai6data_source: hfmarketdata.io7created: 2026-08-128modified: 2026-08-129status: reviewed10---1112# Analysis — expF_multiple_testing1314Run: `results/expF_multiple_testing/20260812T072749Z/results.json`.15Battery: 372 signed rules (every cell/pair/class the C/D/E scans searched),166 blocks, White RC + Hansen SPA (500 stationary bootstraps) + BH-FDR + DSR.17RC/SPA/DSR §8.1-gated first. **0 network requests** — the entire experiment18ran from the frozen cache (the reproducibility anchor doing its job).1920## The survival curve (charter result-type E) — gross, frictionless2122| layer | survivors | rate |23|---|---|---|24| universe (searched) | 372 | 100 % |25| naive \|t\| > 1.96 | 232 | 62 % |26| BH-FDR 5 % | 226 | 61 % |27| Hansen SPA step-1 | 68 | 18 % |2829## The headline is methodological3031The SPA survivors carry annualized Sharpes of 10–31 — **physically absurd**,32which is the charter-§12 red flag, and the diagnosis is clean:33341. **Statistical correction corrects for search, not for mechanism.** A35   contrarian rule mechanically earns −autocov₁ > 0 on paper wherever36   bid-ask bounce exists — frictionless, that is "profit"; in reality it is37   the spread you would pay. SPA has no way to know that.382. **The canary proves it**: −L:SPX→SPY — the index-staleness artifact we39   *know* is fake (T3, measured twice) — survives SPA comfortably.403. The expE calendar block survives nothing anywhere (naive 0, SPA p 0.87):41   the pre-registered pipeline-broken tripwire did not fire.4243Honest validation therefore requires ALL THREE independent layers — artifact44nulls (the scans), search correction (this experiment), and costs (expG) —45and no one of them substitutes for another. This goes into methodology.md46as a design axiom, with this experiment as the demonstration.4748## The double-filtered pool (artifact-adjusted ∩ search-corrected, gross)495012 of the 14 expC artifact-adjusted triage cells also clear SPA:51AAPL/ATRO/BKE/HTD/ICUI/MSFT/SLF/XOM 5min, AXDX 30min, CKX 1day, JPM/NVDA521min. Lead-lag: **−L:ES→SPY** (splice-invariant basis reversion) plus the53expD 2014-2015 FDR residuals; −L:SPX→SPY is excluded from the tradable pool54(routed to candidate 03 as the artifact demonstration). This pool — and55nothing else — proceeds to expG.5657## Caveats5859In-sample by design (rules evaluated on the data that surfaced them;60validation split untouched until expH). DSR values are reported per block61but the bounce-driven Sharpe heterogeneity inflates `sr0`; treat them as62universe diagnostics, not verdicts.63