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 · 84 lines markdown
Rendered Raw Blame History
1---2project: anomaly-atlas3document: expE_calendar_scan/hypothesis4author: Simon-Pierre Boucher5contact: contact@spboucher.ai6data_source: hfmarketdata.io7created: 2026-08-128modified: 2026-08-129status: final10---1112# Hypothesis — expE_calendar_scan1314*Pre-specified 2026-08-12 before the scan ran. The calendar space is where15p-hacking is easiest (STW 2001), so the hypothesis budget below is a hard16cap: any test not listed here is not run.*1718```text19Hypothesis20  Tests H13/H14/H18 (scan half) + measures H20. Priors from the verified21  literature: the Monday effect is dead (French 1980 -> decayed); holiday22  effects are dead; turn-of-month was the last survivor as of 200623  (Marquering et al.) and its TRAIN-period status is the open question.24  H20 (intraday U-shape of vol and spread) is expected to be strongly25  present — it is a POSITIVE CONTROL and a cost-model input, not an anomaly.2627Falsification criterion28  H14 (negative control): the pipeline is BROKEN if any weekday passes the29  family-wise permutation test — investigate the pipeline, not the market.30  H13: "turn-of-month survived in train" is falsified if the ToM window31  mean fails the family-wise permutation test. H20: the U-shape control32  FAILS the pipeline if flat (spread/vol profile must peak at open/close).3334Artifact null(s)35  Permuted-calendar null (MANDATORY per charter §8.5): within-YEAR36  permutation of daily returns (preserves annual regimes, destroys calendar37  alignment), n = 2000, seed = 42. Family-wise: the max-|statistic| across38  all 8 tests is recomputed on every permutation (mini reality check) —39  each observed statistic gets both a marginal and a family-wise p.40  T4 guard: daily bars only (one close convention throughout).4142Method (budget pre-counted: 8 tests)43  Instrument: SPY 1day, adj_splitdiv, TRAIN 2000-2016 (single pre-declared44  instrument — no cross-sectional expansion). Statistics, each = mean45  daily return in the class minus overall mean:46    T1..T5  day-of-week (Mon..Fri)                       [H14, 5 tests]47    T6      turn-of-month window: last trading day through48            +3 first trading days of the next month       [H13, 1 test]49    T7      pre-holiday day (day before a non-weekend gap) [H18]50    T8      post-holiday day                               [H18]51  Corrections: BH-FDR over the 8 marginal permutation p-values AND the52  family-wise max-stat p. Sub-period stability (2000-2007 / 2008-2015)53  reported descriptively for anything that passes.54  H20 measurement (no hypothesis test): per half-hour bucket on the liquid55  12, 1min, 2014-2015 (cached): median |1min return|, EDGE spread per56  bucket, staleness per bucket -> taxonomy T1/T2 intraday profile.5758Result59  Run 20260812T065222Z (1 new request — everything else cache-served;60  4 024 trading days). NOTHING SURVIVES: all 8 observed effects sit inside61  their permuted-calendar 95% bands (family-wise p >= 0.93 everywhere;62  best marginal p = 0.24, turn-of-month). Monday: -1.4 bp, p_marg 0.73 —63  the negative control held. Turn-of-month: +4.7 bp overall, and DECAYING64  inside train (+7.9 bp 2000-2007 -> +1.6 bp 2008-2015). Holiday effects:65  wide bands (n=144), nothing. H20 control: PASSED — volatility U-shape66  (6.6 bp open / 2.4 midday / 2.9 close); spread declines monotonically67  (2.8 -> 1.2 bp), i.e. an L-shape, not a U — recorded as measured.6869Interpretation70  (Level 0.) The cleanest possible calendar answer on this data: the71  pre-declared 8-test budget produces zero candidates. The 2006-era "last72  survivor" (turn-of-month) does not clear the permuted-calendar bar in73  train and decays within it — candidate 02 (H13) now carries a strong74  dead-on-arrival prior into its validation-split protocol. Both pipeline75  controls behaved (Monday stayed dead; U-shape present), so this negative76  is a *finding*, not a power failure — though holiday-class power is low77  (wide bands) and is reported as such. H20 numbers feed taxonomy T1/T2:78  first-30-minutes claims face 2-3x the midday artifact level.7980Next experiment81  expF: correction battery (White RC/SPA + DSR with the 22-hypothesis82  budget) over everything C/D/E surfaced.83```84