SPB Git

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

# project: anomaly-atlas document: README author: Simon-Pierre Boucher contact: contact@spboucher.ai data_source: hfmarketdata.io created: 2026-08-12 modified: 2026-08-12 status: reviewed

anomaly-atlas logo — atlas graticule with a circled outlier

anomaly-atlas

An honest atlas of what is real, what is artifact, and what is merely wishful
in open high-frequency market data.

Live atlas Experiments Synthetic gate Findings Hypothesis budget Data Rows analyzed Platform License

Which statistical regularities in open high-frequency market data are real — and which are artifacts? A systematic, pre-registered, fully reproducible research project that scans 1-minute-to-daily bars (equities, ETFs, futures, indices, FX, crypto, options chains) for mean-reversion, lead-lag, and calendar anomalies, then pushes every candidate through a three-layer validation ladder: measured artifact nulls → multiple-testing correction → transaction costs → out-of-sample confirmation.

Honesty doctrine. Every candidate anomaly is an artifact until proven otherwise. In-sample results are never findings. Negative results are first-class. Nothing here is investment advice or a trading system.

# Headline results (train 2000–2016 → validation 2016–2021)

Validation layer Survivors
Searched rule universe (2 signs × every scanned cell/pair/class) 372
Naive |t| > 1.96 232 (62 %)
Benjamini–Hochberg FDR 5 % 226 (61 %)
Hansen SPA (data-snooping correction) 68 (18 %) — gross, artifact-laden
EDGE cost model, full half-spread per trade 0
Out-of-sample (validation split, opened once) 0 — the negative replicates

The SPA survivors carried paper Sharpes of 10–31 — bounce harvesting, not economics — and a deliberately included known artifact (the SPX→SPY "lead") passed statistical correction unharmed: statistical correction corrects for search, not for mechanism. Median breakeven cost: the surviving rules capture ~1 % of one half-spread per trade. Meanwhile the artifacts themselves replicate out-of-sample perfectly.

First atlas entries (Level 2 — corrected, OOS-confirmed, robust):

  • F001Nothing in the searched universe survives the full ladder (negative finding, the project's headline).
  • F002The SPX→SPY minute-scale "lead" is index content staleness (Fisher 1966, measured live; survives print synchronization AND SPA).

Full write-up: P001 — The Artifact Frontier, Part I (every figure regenerates live from committed results.json).

# What's in the box

Path Contents
research/ Pre-registered charter artifacts: data-source profile, artifact taxonomy T1–T7 with measured magnitudes, 52-source verified bibliography, 22-hypothesis budget, append-only LOG, publications
src/anomaly_atlas/ The library: single cache-first API client (never silently refetches; committed data manifest), gated statistics (VR, AC1, lead-lag, block/stationary bootstrap, BH-FDR, White RC, Hansen SPA, DSR), artifact detectors (Roll, EDGE, staleness, LOCF)
benchmarks/synthetic/ The §8.1 gate — 29 tests on series with known properties; no detector touches real data before passing (it caught 2 real bugs)
experiments/micro/ expA–expH, each with pre-registered hypothesis.md (falsification criterion + artifact nulls) and analysis.md
atlas/ Confidence-labeled findings (Level 0–3) with full provenance, created only via tools/new_finding.py
web/ The public platform (Node/Express, server-rendered SVG figures from results JSON, mobile-first, comments)

# Methodology in one paragraph

Universes, time splits (train / validation / sealed holdout 2022→), and the 22-hypothesis budget were frozen in writing before any scan. Every detector passes a synthetic gate first (random walk → nothing; planted effects → recovered; pure bounce → flagged artifact). Scans report effects net of measured artifact nulls (variance-consistent bounce null, both-fresh synchronization, permuted calendar). Survivors face White RC / Hansen SPA over the full searched universe, then an EDGE-spread cost sweep, then the validation split — opened exactly once. All data flows through one frozen cache indexed by a committed manifest; two experiments ran with zero network requests.

# Reproduce

bash
make setup      # venv + deps (macOS / Apple Silicon)
make test       # 29 synthetic-gate + unit tests
make headers    # author-header compliance
python experiments/micro/expA_data_reality/benchmark.py   # then B..H in order

Every result JSON embeds the hardware manifest, client instrumentation, and attribution; every finding cites its commits and the SHA-256 of the data manifest.

# Author

Simon-Pierre Bouchercontact@spboucher.ai Data source: hfmarketdata.io (sole source) · Live atlas: www.anomaly-atlas.io

Research on statistical properties of market data. Not investment advice, not a trading system; past statistical regularity does not imply future returns. All rights reserved.