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.4 KB · 92 lines markdown
Rendered Raw Blame History
1---2project: anomaly-atlas3document: expF_multiple_testing/hypothesis4author: Simon-Pierre Boucher5contact: contact@spboucher.ai6data_source: hfmarketdata.io7created: 2026-08-128modified: 2026-08-129status: final10---1112# Hypothesis — expF_multiple_testing1314*Pre-specified 2026-08-12 before the battery ran. RC/SPA/DSR passed the15§8.1 gate first (4 tests: pure noise never survives; a planted profitable16rule always does).*1718```text19Hypothesis20  The survival curve (charter result-type E): after honest correction for21  the FULL searched universe, few or none of the C/D scan leads survive.22  Prior: the daily 2008-2015 reversal family and possibly ES->SPY have the23  best odds; the tiny 2014-2015 lead-lag residuals and most intraday24  reversion cells should die.2526Falsification criterion27  Not falsifiable as a directional claim — the DELIVERABLE is the measured28  survival rate at each layer. The pipeline is broken (investigate, not29  publish) if a rule from the expE calendar family survives SPA (expE30  already showed all 8 inside the permutation band).3132Artifact null(s)33  The searched-universe null itself: RC/SPA bootstrap under H0 "no rule34  beats zero", universe = EVERYTHING the scans looked at (not only the35  FDR survivors) — 2 signed variants of every cell/pair/class.3637Method (pre-declared)38  Rule construction (mechanical, no tuning):39    R-family (expC, 127 cells x2 signs): contrarian rule at the cell's40      timeframe on RTH trade-time returns, pos_t = -sign(r_{t-1});41      1day cells use the previous daily return. Daily aggregation; days42      without data = 0 (idle).43    L-family (expD, 49 pairs x2): follower timed by leader's previous44      1min return on both-fresh minutes, daily aggregation.45    C-family (expE, 8 classes x2): +/-(r_t - unconditional mean) on class46      days, 0 elsewhere (drift-adjusted so "long Mondays" cannot free-ride47      the equity premium).48  Blocks (common day calendars): expC 2000-2007, expC 2008-2015, expC 1min49  2014-2015, expD 2006-2007, expD 2014-2015, expE train.50  Battery per block: (1) naive |t|>1.96 count; (2) BH-FDR on two-sided51  rule p-values across ALL blocks jointly; (3) Hansen SPA (500 stationary52  bootstraps, mean block 5 days, seed 42) + StepM-style step-1 survivor53  count (rule t >= bootstrap max-stat 95th pct); (4) DSR of each block's54  best rule, n_trials = total universe size, sr_variance across the55  universe. White RC reported alongside SPA.56  IMPORTANT honesty note: rules are evaluated on the SAME train data the57  scans ran on — expF measures survival of the in-sample search under58  correction. Out-of-sample survival is expH's job on the validation split.5960Result61  Run 20260812T072749Z — 0 network requests (582 cache hits; the frozen62  cache carried the whole battery). Universe: 372 signed rules, 6 blocks.63  Survival funnel (GROSS, frictionless): naive |t|>1.96 = 232 (62%) ->64  BH-FDR = 226 (61%) -> SPA step-1 = 68 (18%). All expC/expD blocks reject65  at the bootstrap floor (RC and SPA p = 0.002); the expE calendar block66  survives nothing (naive 0, spa_p 0.87) — the pipeline-broken tripwire did67  NOT fire. Best rules carry annualized Sharpe 10-31 — physically absurd,68  the §12 red flag. Intersection with the artifact-adjusted expC triage:69  12/14 cells also pass SPA. L-family step-1 includes -L:ES->SPY (the70  splice-invariant basis effect) and -L:SPX->SPY (the KNOWN index-staleness71  artifact, deliberately kept in the universe as a canary — it survives72  statistical correction, which proves the point below).7374Interpretation75  (Level 0.) The survival curve's headline is METHODOLOGICAL and it is the76  strongest result of the project so far: statistical correction corrects77  for SEARCH, not for MECHANISM. 18% of gross rules survive Hansen SPA —78  and the survivors are dominated by bounce harvesting (a contrarian rule79  earns -autocov1 > 0 on paper and pays the spread in reality) plus80  frictionless lead-lag timing; the known artifact (SPX->SPY) sails through81  SPA unharmed. Honest validation therefore REQUIRES all three layers:82  artifact nulls (scans) AND search correction (expF) AND costs (expG).83  The double-filtered pool going to expG: 12 reversion cells + ES->SPY +84  the expD 2014-2015 FDR set. DSR by block is reported but is mostly a85  universe-heterogeneity diagnostic here (bounce-inflated Sharpe variance);86  documented, not over-read.8788Next experiment89  expG (cost frontier) on the double-filtered pool; expH (validation split)90  for whatever survives costs.91```92