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 / expC_reversion_scan

expC_reversion_scan

Mean-reversion scan: variance ratios, half-life, AR tests net of the bounce null

View benchmark implementation (benchmark.py) →

Figures

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

FDR survivor (excess < −0.05) other scan cells (Level 0) -0.3 -0.2 -0.1 0 0.1VR(30) excess over the MA(1)-consistent null · negative = multi-lag reversion beyond any lag-1 effect1day · 2000-2007AAPL 1day 2000-2007: VR30 1.07, excess 0.149MSFT 1day 2000-2007: VR30 0.8867, excess -0.068NVDA 1day 2000-2007: VR30 1.0224, excess -0.020AMZN 1day 2000-2007: VR30 0.7792, excess -0.240JPM 1day 2000-2007: VR30 0.9767, excess 0.046XOM 1day 2000-2007: VR30 0.5697, excess -0.319UNH 1day 2000-2007: VR30 0.6322, excess -0.393SPY 1day 2000-2007: VR30 0.7125, excess -0.211QQQ 1day 2000-2007: VR30 0.8025, excess -0.157ATRO 1day 2000-2007: VR30 0.7266, excess -0.041AXDX 1day 2000-2007: VR30 0.5734, excess -0.201BKE 1day 2000-2007: VR30 0.8367, excess -0.072CKX 1day 2000-2007: VR30 0.7351, excess -0.276HTD 1day 2000-2007: VR30 0.8951, excess -0.214ICUI 1day 2000-2007: VR30 0.7916, excess -0.149RPM 1day 2000-2007: VR30 0.6788, excess -0.141SLF 1day 2000-2007: VR30 0.5272, excess -0.4651day · 2008-2015AAPL 1day 2008-2015: VR30 1.0634, excess 0.079MSFT 1day 2008-2015: VR30 0.6912, excess -0.192NVDA 1day 2008-2015: VR30 1.0101, excess -0.003AMZN 1day 2008-2015: VR30 0.791, excess -0.169GOOGL 1day 2008-2015: VR30 0.7967, excess -0.366META 1day 2008-2015: VR30 1.1455, excess 0.132TSLA 1day 2008-2015: VR30 0.9938, excess -0.026JPM 1day 2008-2015: VR30 0.503, excess -0.297XOM 1day 2008-2015: VR30 0.4637, excess -0.251UNH 1day 2008-2015: VR30 0.81, excess -0.122SPY 1day 2008-2015: VR30 0.6838, excess -0.164QQQ 1day 2008-2015: VR30 0.8166, excess -0.084ATRO 1day 2008-2015: VR30 1.1814, excess 0.151AXDX 1day 2008-2015: VR30 0.9285, excess -0.056BKE 1day 2008-2015: VR30 0.8767, excess -0.033CECO 1day 2008-2015: VR30 0.7399, excess -0.219CKX 1day 2008-2015: VR30 0.2717, excess -0.259 (FDR survivor)CKXHTD 1day 2008-2015: VR30 1.1662, excess -0.130ICUI 1day 2008-2015: VR30 0.6223, excess -0.383PBYI 1day 2008-2015: VR30 1.0679, excess 0.112RPM 1day 2008-2015: VR30 0.8597, excess -0.062SLF 1day 2008-2015: VR30 0.8347, excess -0.092SPB 1day 2008-2015: VR30 0.884, excess -0.21830min · 2000-2007AAPL 30min 2000-2007: VR30 0.887, excess -0.086MSFT 30min 2000-2007: VR30 0.9381, excess -0.027NVDA 30min 2000-2007: VR30 0.9766, excess -0.061AMZN 30min 2000-2007: VR30 0.9883, excess -0.061JPM 30min 2000-2007: VR30 0.862, excess -0.136XOM 30min 2000-2007: VR30 0.9534, excess -0.013UNH 30min 2000-2007: VR30 0.9746, excess 0.015SPY 30min 2000-2007: VR30 1.0115, excess 0.009QQQ 30min 2000-2007: VR30 0.9476, excess -0.092ATRO 30min 2000-2007: VR30 0.5993, excess -0.029AXDX 30min 2000-2007: VR30 0.6595, excess -0.209 (FDR survivor)BKE 30min 2000-2007: VR30 1.01, excess 0.026HTD 30min 2000-2007: VR30 0.6253, excess -0.000ICUI 30min 2000-2007: VR30 0.77, excess 0.036RPM 30min 2000-2007: VR30 0.9671, excess 0.054SLF 30min 2000-2007: VR30 0.8314, excess 0.00130min · 2008-2015AAPL 30min 2008-2015: VR30 0.8804, excess -0.125MSFT 30min 2008-2015: VR30 0.8706, excess -0.166NVDA 30min 2008-2015: VR30 0.9781, excess -0.007AMZN 30min 2008-2015: VR30 0.8564, excess -0.144GOOGL 30min 2008-2015: VR30 0.9835, excess -0.020META 30min 2008-2015: VR30 0.9636, excess -0.083TSLA 30min 2008-2015: VR30 0.9828, excess 0.029JPM 30min 2008-2015: VR30 0.8974, excess -0.093XOM 30min 2008-2015: VR30 0.7897, excess -0.231UNH 30min 2008-2015: VR30 0.8428, excess -0.132SPY 30min 2008-2015: VR30 0.8984, excess -0.202QQQ 30min 2008-2015: VR30 0.8987, excess -0.166ATRO 30min 2008-2015: VR30 0.8589, excess 0.047AXDX 30min 2008-2015: VR30 0.7418, excess 0.023BKE 30min 2008-2015: VR30 0.7195, excess -0.258 (FDR survivor)BKECECO 30min 2008-2015: VR30 0.8414, excess 0.000HTD 30min 2008-2015: VR30 1.0113, excess 0.029ICUI 30min 2008-2015: VR30 0.895, excess -0.041PBYI 30min 2008-2015: VR30 0.9996, excess 0.023RPM 30min 2008-2015: VR30 0.9851, excess 0.007SLF 30min 2008-2015: VR30 1.0324, excess -0.088SPB 30min 2008-2015: VR30 0.9819, excess 0.0305min · 2000-2007AAPL 5min 2000-2007: VR30 0.8516, excess -0.052 (FDR survivor)MSFT 5min 2000-2007: VR30 0.8371, excess -0.108 (FDR survivor)NVDA 5min 2000-2007: VR30 0.919, excess -0.016AMZN 5min 2000-2007: VR30 0.9954, excess 0.013JPM 5min 2000-2007: VR30 0.968, excess 0.020XOM 5min 2000-2007: VR30 0.837, excess -0.050 (FDR survivor)UNH 5min 2000-2007: VR30 1.0124, excess -0.015SPY 5min 2000-2007: VR30 0.8906, excess 0.002QQQ 5min 2000-2007: VR30 0.9354, excess -0.035ATRO 5min 2000-2007: VR30 0.4872, excess -0.027BKE 5min 2000-2007: VR30 1.0285, excess 0.098HTD 5min 2000-2007: VR30 0.4046, excess -0.089 (FDR survivor)ICUI 5min 2000-2007: VR30 0.5688, excess -0.046RPM 5min 2000-2007: VR30 0.5994, excess -0.023SLF 5min 2000-2007: VR30 0.7249, excess -0.125 (FDR survivor)5min · 2008-2015AAPL 5min 2008-2015: VR30 0.922, excess -0.039MSFT 5min 2008-2015: VR30 0.9346, excess 0.001NVDA 5min 2008-2015: VR30 0.9139, excess -0.021AMZN 5min 2008-2015: VR30 0.9038, excess -0.045GOOGL 5min 2008-2015: VR30 0.9386, excess -0.033META 5min 2008-2015: VR30 0.9537, excess 0.010TSLA 5min 2008-2015: VR30 0.8886, excess -0.048JPM 5min 2008-2015: VR30 0.9202, excess -0.015XOM 5min 2008-2015: VR30 0.8721, excess -0.038UNH 5min 2008-2015: VR30 1.023, excess 0.001SPY 5min 2008-2015: VR30 1.0034, excess 0.048QQQ 5min 2008-2015: VR30 0.9981, excess 0.018ATRO 5min 2008-2015: VR30 0.6477, excess -0.057 (FDR survivor)AXDX 5min 2008-2015: VR30 0.6709, excess 0.006BKE 5min 2008-2015: VR30 0.8455, excess -0.089 (FDR survivor)CECO 5min 2008-2015: VR30 0.6372, excess -0.041HTD 5min 2008-2015: VR30 0.8202, excess 0.092ICUI 5min 2008-2015: VR30 0.7883, excess -0.055 (FDR survivor)PBYI 5min 2008-2015: VR30 0.9018, excess 0.125RPM 5min 2008-2015: VR30 0.8882, excess -0.029SLF 5min 2008-2015: VR30 1.1126, excess 0.100SPB 5min 2008-2015: VR30 0.7901, excess -0.0331min · 2014-2015AAPL 1min 2014-2015: VR30 0.9559, excess -0.017MSFT 1min 2014-2015: VR30 0.8708, excess -0.037NVDA 1min 2014-2015: VR30 0.8274, excess -0.061 (FDR survivor)AMZN 1min 2014-2015: VR30 0.8388, excess -0.047GOOGL 1min 2014-2015: VR30 0.8505, excess -0.014META 1min 2014-2015: VR30 0.8971, excess -0.020TSLA 1min 2014-2015: VR30 0.8903, excess 0.035JPM 1min 2014-2015: VR30 0.5772, excess -0.243 (FDR survivor)JPMXOM 1min 2014-2015: VR30 0.8777, excess -0.075 (FDR survivor)UNH 1min 2014-2015: VR30 1.0417, excess 0.027SPY 1min 2014-2015: VR30 0.9217, excess -0.041QQQ 1min 2014-2015: VR30 1.1045, excess 0.134
expC — multi-lag reversion triage on TRAIN. One dot per ticker-cell; the MA(1)-consistent null absorbs all lag-1 effects (bounce included); values beyond the axis range pile at its edge. Run 20260812T062408Z, regenerated from results.json.

Hypothesis

documentexpC_reversion_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 — expC_reversion_scan#

Pre-specified 2026-08-12 before the scan ran. New detectors (EDGE, BH-FDR, bootstrap p) passed the §8.1 gate first (6 tests). Splits declared in data/universe.py; scan runs on TRAIN (2000–2016) only.

Hypothesis
  Tests H01 (liquid short-horizon reversion is zero net of bounce) and the
  scan half of H02 (reversal decays across sub-periods). Expectation, from
  the literature priors: raw AC1/VR will show heavy "reversion" that is
  MOSTLY bounce; excess reversion (net of the independent EDGE spread null)
  will be near zero for liquid names, possibly nonzero in 2000-2007 where
  real short-horizon reversal was still documented, and should SHRINK from
  the 2000-2007 to the 2008-2015 sub-period (decay).

Falsification criterion
  H01 falsified if liquid-bucket excess reversion survives FDR(5%) with a
  negative sign in 2008-2015 at any intraday horizon. The decay story is
  falsified if excess reversion is STABLE or GROWING across sub-periods.

Artifact null(s)
  T1 bounce via the EDGE spread measured from the SAME ticker-period's
  DAILY OHLC bars (independent granularity — no AC1 circularity);
  bounce-implied AC1 = -s²/4 / Var(r_timeframe). T2 handled by trade-time
  returns (no LOCF) + min-data guards. Random-walk null via block bootstrap.

Method (grid pre-declared)
  Universe: the expB 42 (12 liquid + seed-42 random 30). Period: TRAIN
  2000-2016, sub-periods 2000-2007 / 2008-2015.
  Timeframes: 1day, 30min, 5min for all tickers; 1min for the liquid 12 on
  2014-2016 only (volume restriction, declared here).
  Intraday returns: RTH bars only (09:30-16:00), within-day diffs of log
  close, no overnight. Adjustment: adj_split everywhere.
  Statistics per cell (ticker × timeframe × sub-period): n, AC1, VR(5),
  VR(30), EDGE daily spread, bounce-implied AC1, excess AC1; moving-block
  bootstrap (block = 1 day of bars, n_boot = 200, seed = 42) for CIs and
  two-sided p-values (AC1_excess vs 0; VR vs 1). Half-life on daily closes.
  Correction: BH-FDR at 5% within each statistic family, all cells jointly.
  Cell count declared: ≤ (42×3×2 + 12) ≈ 264 per family.

Result
  Run 20260812T062408Z (354 requests, 10.5M rows). 127 analyzable cells.
  THE PRE-SPECIFIED BOUNCE NULL WAS MIS-SPECIFIED at intraday frequencies:
  EDGE daily spread + pure-Roll alternation predicts AC1 of -3 to -27
  (impossible; AC1 is bounded by [-1,1]) because consecutive intraday closes
  do not flip sides every bar. Consequence: the excess-AC1 positive family
  (90 "survivors") is an artifact OF THE NULL and is discarded. Corrected
  triage (documented post-hoc null FIX, not a hypothesis expansion — see
  LOG): MA(1)-consistent VR null, VR30_null = 1 + 2*AC1*(1-1/30); negative
  excess = multi-lag reversion beyond ANY lag-1 effect (bounce included).
  Triage output: 14 cells (FDR-vr30 AND excess < -0.05), incl. JPM 1min
  2014-15 (-0.243), MSFT 5min 2000-07 (-0.108), XOM/NVDA 1min; daily
  mega-cap/index reversal 2008-15 (XOM excess_AC1 -0.133, SPY -0.055, both
  FDR; median 1day VR30 excess -0.12 to -0.16 across cells).

Interpretation
  (Level 0 throughout.) H01 CONFIRMED at lag 1: zero liquid intraday
  negative-excess survivors in 2008-2015. Multi-lag daily reversion in the
  2008-2015 train block is the strongest triage signal (crisis-regime
  index/mega-cap reversal — plausibly regime-bound). Decay clause PARTIALLY
  FALSIFIED: median VR30 excess is flat at 5min (-0.027 vs -0.025) and only
  mildly shrinking at 1day (-0.157 vs -0.122) across sub-periods — the
  clean monotone-decay story does not hold inside train. Methodological
  finding: spread-based bounce nulls must be variance-consistent; adopted
  into taxonomy T1 and Phase-9 methodology.

Next experiment
  expD (lead-lag scan) on the same universe/splits; survivors of C+D+E
  meet the full correction battery in expF.

Analysis

documentexpC_reversion_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 — expC_reversion_scan#

Run: results/expC_reversion_scan/20260812T062408Z/results.json (354 requests, 10.5M rows, manifest embedded; protocol pre-specified; detectors §8.1-gated). All conclusions Level 0.

1. The scan's most valuable output is about the NULL#

The pre-specified bounce null (EDGE daily spread, pure Roll alternation, -s²/4/Var(r)) predicts intraday AC1 of −3 to −27 — outside [−1, 1], mathematically impossible. Diagnosis: the daily effective spread implies far more bounce variance than 1–5min bar closes contain, because consecutive intraday closes rarely flip bid/ask side (order-flow persistence). Lesson (now taxonomy T1, methodology rule): a spread-based bounce null must be variance-consistent with the return series it is applied to — otherwise "excess" statistics are artifacts of the null itself. The 90 positive-excess "survivors" are exactly that and are discarded.

2. Corrected triage — MA(1)-consistent VR null#

Bounce (any lag-1-only process) implies VR(q) = 1 + 2·AC1·(1−1/q). Negative VR30 − VR30_MA1 = multi-lag reversion beyond ALL lag-1 effects — a conservative null (it also absorbs any real lag-1 reversion). This correction is a documented post-hoc null fix (LOG §12 entry), computed from the same saved cells.

14 triage cells pass FDR(vr30) with excess < −0.05:

  • Daily 2008–2015 mega-cap/index reversal — the broadest pattern: XOM AC1 −0.148 (excess_AC1 −0.133, FDR), JPM −0.104, SPY −0.079 (−0.055, FDR); median 1day VR30 excess −0.12/−0.16 across all cells. Consistent with crisis-regime multi-day reversal; likely regime-bound.
  • 1min multi-lag reversion in 2014–2015 liquid names: JPM (−0.243), XOM (−0.075), NVDA (−0.061) — 30-minute-horizon reversion visible in 1min bars, not explained by lag-1 bounce.
  • Scattered 5min/30min cells (MSFT 2000–07 −0.108; illiquid names where staleness (T2) remains a live confound).

3. Verdicts on the pre-registered clauses#

  • H01 (liquid intraday lag-1 reversion = 0 net of bounce): CONFIRMED — zero liquid negative-excess survivors in 2008–2015 intraday. The expected-negative held.
  • Decay clause: PARTIALLY FALSIFIED — median VR30 excess is flat at 5min across sub-periods and only mildly shrinking at 1day. Recorded as-is; the clean monotone decay narrative does not hold inside train.

4. Hand-off#

The 14 triage cells + the daily-reversal family go to expF (SPA vs artifact-null benchmark, DSR with the 22-hypothesis budget) and expH (validation split). Nothing here enters the atlas. expD should reuse the MA(1)-consistency lesson for its cross-correlation nulls.

README

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

expC_reversion_scan#

Mean-reversion scan: variance ratios, half-life, AR tests net of the bounce null

Status: completed 2026-08-12 — 127 cells, corrected triage: 14 multi-lag-reversion cells + daily 2008-15 reversal family -> expF. Key output: the bounce-null variance-consistency lesson (taxonomy T1).

Result runs