Code / experiments/micro/expE_calendar_scan/hypothesis.md
experiments/micro/expE_calendar_scan/hypothesis.md
84 lines
---
project: anomaly-atlas
document: expE_calendar_scan/hypothesis
author: Simon-Pierre Boucher
contact: contact@spboucher.ai
data_source: hfmarketdata.io
created: 2026-08-12
modified: 2026-08-12
status: final
---
# Hypothesis — expE_calendar_scan
*Pre-specified 2026-08-12 before the scan ran. The calendar space is where
p-hacking is easiest (STW 2001), so the hypothesis budget below is a hard
cap: any test not listed here is not run.*
```text
Hypothesis
Tests H13/H14/H18 (scan half) + measures H20. Priors from the verified
literature: the Monday effect is dead (French 1980 -> decayed); holiday
effects are dead; turn-of-month was the last survivor as of 2006
(Marquering et al.) and its TRAIN-period status is the open question.
H20 (intraday U-shape of vol and spread) is expected to be strongly
present — it is a POSITIVE CONTROL and a cost-model input, not an anomaly.
Falsification criterion
H14 (negative control): the pipeline is BROKEN if any weekday passes the
family-wise permutation test — investigate the pipeline, not the market.
H13: "turn-of-month survived in train" is falsified if the ToM window
mean fails the family-wise permutation test. H20: the U-shape control
FAILS the pipeline if flat (spread/vol profile must peak at open/close).
Artifact null(s)
Permuted-calendar null (MANDATORY per charter §8.5): within-YEAR
permutation of daily returns (preserves annual regimes, destroys calendar
alignment), n = 2000, seed = 42. Family-wise: the max-|statistic| across
all 8 tests is recomputed on every permutation (mini reality check) —
each observed statistic gets both a marginal and a family-wise p.
T4 guard: daily bars only (one close convention throughout).
Method (budget pre-counted: 8 tests)
Instrument: SPY 1day, adj_splitdiv, TRAIN 2000-2016 (single pre-declared
instrument — no cross-sectional expansion). Statistics, each = mean
daily return in the class minus overall mean:
T1..T5 day-of-week (Mon..Fri) [H14, 5 tests]
T6 turn-of-month window: last trading day through
+3 first trading days of the next month [H13, 1 test]
T7 pre-holiday day (day before a non-weekend gap) [H18]
T8 post-holiday day [H18]
Corrections: BH-FDR over the 8 marginal permutation p-values AND the
family-wise max-stat p. Sub-period stability (2000-2007 / 2008-2015)
reported descriptively for anything that passes.
H20 measurement (no hypothesis test): per half-hour bucket on the liquid
12, 1min, 2014-2015 (cached): median |1min return|, EDGE spread per
bucket, staleness per bucket -> taxonomy T1/T2 intraday profile.
Result
Run 20260812T065222Z (1 new request — everything else cache-served;
4 024 trading days). NOTHING SURVIVES: all 8 observed effects sit inside
their permuted-calendar 95% bands (family-wise p >= 0.93 everywhere;
best marginal p = 0.24, turn-of-month). Monday: -1.4 bp, p_marg 0.73 —
the negative control held. Turn-of-month: +4.7 bp overall, and DECAYING
inside train (+7.9 bp 2000-2007 -> +1.6 bp 2008-2015). Holiday effects:
wide bands (n=144), nothing. H20 control: PASSED — volatility U-shape
(6.6 bp open / 2.4 midday / 2.9 close); spread declines monotonically
(2.8 -> 1.2 bp), i.e. an L-shape, not a U — recorded as measured.
Interpretation
(Level 0.) The cleanest possible calendar answer on this data: the
pre-declared 8-test budget produces zero candidates. The 2006-era "last
survivor" (turn-of-month) does not clear the permuted-calendar bar in
train and decays within it — candidate 02 (H13) now carries a strong
dead-on-arrival prior into its validation-split protocol. Both pipeline
controls behaved (Monday stayed dead; U-shape present), so this negative
is a *finding*, not a power failure — though holiday-class power is low
(wide bands) and is reported as such. H20 numbers feed taxonomy T1/T2:
first-30-minutes claims face 2-3x the midday artifact level.
Next experiment
expF: correction battery (White RC/SPA + DSR with the 22-hypothesis
budget) over everything C/D/E surfaced.
```