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: Phase 1 notes — time-series methodology4author: Simon-Pierre Boucher5contact: contact@spboucher.ai6data_source: hfmarketdata.io7created: 2026-08-128status: reviewed9---1011# Time-series methodology (§4.4)1213*Phase 1 literature notes. Citations verified via OpenAlex, accessed142026-08-12.*1516## 1. Variance ratios & long memory1718- Lo & MacKinlay (1988) — the VR test itself (see mean-reversion notes).19 Implementation lesson learned in OUR code: the §8.1 synthetic gate caught a20 double-division-by-q bug in our first VR implementation — the estimator21 read ~1/q on a pure random walk. Estimator subtleties are real risks, not22 textbook trivia.23- Lo, A. W. (1991). Long-Term Memory in Stock Market Prices. *Econometrica* 59(5), 1279–1313. https://doi.org/10.2307/2938368 — modified R/S statistic robust to short-range dependence; classic R/S (and naive Hurst estimation) **mistakes short memory + heteroskedasticity for long memory**. Any Hurst-based Q1 claim must use Lo's correction and a bounce-aware null.2425## 2. Granger causality caveats2627- Granger, C. W. J. (1969). Investigating Causal Relations by Econometric Models and Cross-spectral Methods. *Econometrica* 37(3), 424–438. https://doi.org/10.2307/1912791 — predictive content, not causation. For Q2 at 1min: Granger "causality" from fresh to stale series is *guaranteed* by non-synchronicity (expB measured it); only both-fresh subsamples and staleness-matched nulls make the test meaningful.2829## 3. Bootstrap for dependent data3031- Künsch, H. R. (1989). The Jackknife and the Bootstrap for General Stationary Observations. *Annals of Statistics* 17(3), 1217–1241. https://doi.org/10.1214/aos/1176347265 — moving-block bootstrap (our `stats/bootstrap.py`).32- Politis, D. N. & Romano, J. P. (1994). The Stationary Bootstrap. *JASA* 89(428), 1303–1313. https://doi.org/10.1080/01621459.1994.10476870 — geometric random block lengths → stationary resamples; the resampling engine inside White's Reality Check. To implement for expF.3334## 4. Splits, walk-forward, CPCV3536- Bailey, Borwein, López de Prado & Zhu (2016). The probability of backtest overfitting. *Journal of Computational Finance* 20(4), 39–69. https://doi.org/10.21314/jcf.2016.322 — CSCV/PBO: combinatorial splits measure how often the in-sample winner underperforms out-of-sample. Candidate for expH; must be combined with *purging* (no leakage across split boundaries — overlapping bars/labels).37- Charter constraint: the final holdout is touched ONCE (§8.2) — CPCV38 operates strictly inside the train/validation region.3940## 5. Structural breaks & regimes4142- Bai, J. & Perron, P. (1998). Estimating and Testing Linear Models with Multiple Structural Changes. *Econometrica* 66(1), 47–78. https://doi.org/10.2307/2998540 — multiple unknown breakpoints. Relevance: 2000–2026 spans decimalization aftermath, Reg NMS (2007), the 2008 crisis, HFT rise, 2020 COVID, T+1 (2024). An "anomaly" that is really one regime's plumbing (e.g., pre-2010 latency) must be caught by sub-period analysis (expH), and Bai–Perron gives the formal tool.4344## 6. Methodological rules adopted (feed Phase 9)45461. Every test statistic ships with a block/stationary-bootstrap CI, block47 length ≥ one trading day for intraday data.482. Hurst/long-memory claims: Lo (1991) modified R/S only, with bounce and49 staleness nulls.503. Granger tests only on both-fresh subsamples with staleness-matched nulls.514. Sub-period grid pre-specified: 2000–07 / 2008–14 / 2015–19 / 2020–26 +52 Bai–Perron endogenous breaks as robustness.535. CPCV inside train/validation; single-touch holdout untouched until expH.54