Honesty doctrine. Every candidate anomaly is an artifact until proven otherwise; in-sample results are never findings; past statistical regularity does not imply future returns. This is research on statistical properties of market data — not investment advice, not a trading system.

Experiments / expE_calendar_scan

expE_calendar_scan

Calendar scan: intraday, day-of-week, turn-of-month with pre-counted hypothesis budget

View benchmark implementation (benchmark.py) →

Figures

Generated server-side from the latest committed results.json — never hand-typed.

-20 -10 0 10 20mean daily SPY return in class minus overall mean (bp) · gray bar = permuted-calendar 95% bandmon mon: observed -1.4 bp — marginal p 0.7286, family-wise p 1tue tue: observed 3.965 bp — marginal p 0.2974, family-wise p 0.99wed wed: observed -0.468 bp — marginal p 0.9075, family-wise p 1thu thu: observed 1.501 bp — marginal p 0.7031, family-wise p 1fri fri: observed -3.767 bp — marginal p 0.3368, family-wise p 0.992turn of month turn_of_month: observed 4.734 bp — marginal p 0.2444, family-wise p 0.9735pre holiday pre_holiday: observed 5.723 bp — marginal p 0.5752, family-wise p 0.9275post holiday post_holiday: observed 2.855 bp — marginal p 0.7766, family-wise p 0.9995
expE — all 8 pre-declared calendar tests on SPY (train 2000–2016): every observed effect (dot) sits inside its permuted-calendar 95% band (bar). Nothing survives; the last-survivor turn-of-month included. Run 20260812T065222Z, regenerated from results.json.
0 2 4 609:3010:3011:3012:3013:3014:3015:3009:30 — median |1min return|: 6.586 bp10:00 — median |1min return|: 4.37 bp10:30 — median |1min return|: 3.541 bp11:00 — median |1min return|: 3.162 bp11:30 — median |1min return|: 2.761 bp12:00 — median |1min return|: 2.496 bp12:30 — median |1min return|: 2.425 bp13:00 — median |1min return|: 2.387 bp13:30 — median |1min return|: 2.362 bp14:00 — median |1min return|: 2.503 bp14:30 — median |1min return|: 2.444 bp15:00 — median |1min return|: 2.602 bp15:30 — median |1min return|: 2.88 bp09:30 — median EDGE spread: 2.777 bp10:00 — median EDGE spread: 2.008 bp10:30 — median EDGE spread: 1.348 bp11:00 — median EDGE spread: 1.858 bp11:30 — median EDGE spread: 1.289 bp12:00 — median EDGE spread: 1.401 bp12:30 — median EDGE spread: 2.015 bp13:00 — median EDGE spread: 1.556 bp13:30 — median EDGE spread: 1.663 bp14:00 — median EDGE spread: 1.631 bp14:30 — median EDGE spread: 1.714 bp15:00 — median EDGE spread: 1.311 bp15:30 — median EDGE spread: 1.212 bp median |1min return| (bp) median EDGE spread (bp) half-hour bucket (RTH) · liquid 12, 1min, 2014–2015
expE / H20 — the intraday artifact profile (taxonomy input): volatility is U-shaped (6.6 bp at the open, 2.4 midday, 2.9 at the close); the spread declines monotonically (2.8 → 1.2 bp). Any "first-30-minutes" return claim faces 2–3× the midday artifact level. Run 20260812T065222Z.

Hypothesis

documentexpE_calendar_scan/hypothesisauthorSimon-Pierre BouchercreatedTue Aug 11 2026 20:00:00 GMT-0400 (heure avancée de l’Est)modifiedTue Aug 11 2026 20:00:00 GMT-0400 (heure avancée de l’Est)statusfinal

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.

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.

Analysis

documentexpE_calendar_scan/analysisauthorSimon-Pierre BouchercreatedTue Aug 11 2026 20:00:00 GMT-0400 (heure avancée de l’Est)modifiedTue Aug 11 2026 20:00:00 GMT-0400 (heure avancée de l’Est)statusreviewed

Analysis — expE_calendar_scan#

Run: results/expE_calendar_scan/20260812T065222Z/results.json (protocol and 8-test budget pre-specified; single declared instrument SPY; permuted-calendar null n=2000; manifest embedded). Level 0 throughout.

1. The calendar is empty (and that is the finding)#

class observed (bp) perm 95% band p family-wise
mon −1.4 [−7.9, +7.9] 1.00
tue +4.0 [−7.9, +8.0] 0.99
fri −3.8 [−8.0, +8.2] 0.99
turn_of_month +4.7 [−8.2, +8.3] 0.97
pre_holiday +5.7 [−20.8, +21.0] 0.93
post_holiday +2.9 [−21.2, +20.7] 1.00

Every dot inside its band; zero FDR rejections; the family-wise max-stat (mini reality check) never gets close. Turn-of-month — the last calendar survivor as of Marquering et al. (2006) — fails the permuted-calendar bar in train (2000–2016) and decays inside it (+7.9 bp in 2000–2007 → +1.6 bp in 2008–2015). This is exactly the Sullivan–Timmermann–White prediction, reproduced on open data with an honest budget.

2. Controls behaved — the negative is trustworthy#

  • Monday (negative control): −1.4 bp, p 0.73. Had the pipeline "found" the canonical corpse, the pipeline would have been declared broken (the pre-registered criterion). It did not.
  • H20 U-shape (positive control): strongly present. Volatility 6.6 bp (09:30) → 2.4 (midday) → 2.9 (15:30); EDGE spread declines monotonically 2.8 → 1.2 bp — the spread profile is an L, not a U (the close's liquidity is cheap; the open's is expensive). Both numbers now live in the taxonomy: any first-30-minutes return claim fights 2–3× the midday artifact level, and open-heavy strategies pay double spread.

3. Honest caveats#

Holiday classes have n=144 → bands of ±21 bp: low power, reported as such (absence of evidence here is weak evidence of absence). Single instrument by design — cross-sectional calendar claims were deliberately out of budget.

4. Hand-off#

Nothing from expE enters the expF candidate pool. Candidate 02 (H13 turn-of-month) keeps its pre-registered validation protocol but now carries a strong dead-on-arrival prior — the honest expectation is a Level-1-fails negative finding for the atlas. expF (correction battery) is next.

README

documentexpE_calendar_scan/READMEauthorSimon-Pierre BouchercreatedTue Aug 11 2026 20:00:00 GMT-0400 (heure avancée de l’Est)statusdraft

expE_calendar_scan#

Calendar scan: intraday, day-of-week, turn-of-month with pre-counted hypothesis budget

Status: completed 2026-08-12 — zero of 8 pre-declared calendar tests survive the permuted-calendar null; turn-of-month decayed inside train; controls held. H20 intraday artifact profile measured.

Result runs