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%
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