Simon-Pierre Boucher
All apps & projects
Web Platform
Python

Anomaly Atlas

What is real, what is artifact, and what is merely wishful

A systematic, pre-registered, fully reproducible scan of open high-frequency market data for mean-reversion, lead-lag, and calendar anomalies — every candidate pushed through artifact nulls, data-snooping corrections, transaction costs, and out-of-sample confirmation.

~68M

bars analyzed

372 → 0

rules searched → cost-ladder survivors

8/8

micro-experiments complete

29

synthetic-gate tests passing

22

hypotheses in the declared budget

2

Level-2 atlas findings

Overview

Anomaly Atlas asks which statistical regularities in open high-frequency market data are real — and which are artifacts. It scans 1-minute-to-daily bars across equities, ETFs, futures, indices, FX, crypto, and options chains from hfmarketdata.io (the sole data source, ~68M bars analyzed), then pushes every candidate through a three-layer validation ladder: measured artifact nulls → multiple-testing correction → transaction costs → out-of-sample confirmation.

The honesty doctrine is absolute: every candidate anomaly is an artifact until proven otherwise, in-sample results are never findings, and negative results are first-class. Universes, time splits (train / validation / sealed holdout), and a 22-hypothesis budget were frozen in writing before any scan; every detector must first pass a 29-test synthetic gate on series with known properties — a gate that caught two real bugs before they touched data.

The headline result is the negative: of 372 searched rules, 68 survive Hansen SPA data-snooping correction with paper Sharpes of 10–31 — and zero survive the EDGE transaction-cost model, a zero that replicates perfectly out-of-sample. A deliberately included known artifact (the SPX→SPY minute-scale "lead", actually index content staleness per Fisher 1966) sailed through statistical correction unharmed: statistical correction corrects for search, not for mechanism. Full write-up in P001 — The Artifact Frontier, Part I, where every figure regenerates live from committed results.

Key Features

Pre-registered everything

Universes, train/validation/sealed-holdout splits, and the 22-hypothesis budget were frozen in writing before any scan ran; the LOG is append-only.

Artifact nulls, measured

Effects are reported net of a variance-consistent bounce null, both-fresh print synchronization, and permuted calendars — a taxonomy T1–T7 with measured magnitudes.

Data-snooping corrections

Survivors face Benjamini–Hochberg FDR, White Reality Check, and Hansen SPA over the full searched universe — plus the Deflated Sharpe Ratio.

Costs kill what stats can't

The EDGE cost model at full half-spread per trade takes the 68 SPA survivors — paper Sharpes of 10–31, bounce harvesting — to exactly zero.

The synthetic gate

No detector touches real data before passing 29 tests on series with known properties: random walk → nothing, planted effects → recovered, pure bounce → flagged. It caught 2 real bugs.

One frozen cache

All data flows through a single cache-first API client indexed by a committed, SHA-256-checksummed manifest — it never silently refetches; two experiments ran with zero network requests.

How It Works

  1. Freeze the search space

    Universes, time splits, and the hypothesis budget are written down before any scan — the sealed holdout (2022→) stays closed.

  2. Gate every detector

    29 synthetic tests on series with known properties must pass before a detector sees real data — random walks yield nothing, planted effects are recovered, bounce is flagged.

  3. Scan net of artifacts

    Mean-reversion, lead-lag, and calendar scans report effects net of measured artifact nulls: bounce, staleness, synchronization, and calendar permutation.

  4. Correct for the search

    Everything that survives faces FDR, White RC, and Hansen SPA over the full 372-rule searched universe, then the EDGE cost sweep.

  5. Open validation exactly once

    The validation split is opened one time; findings enter the atlas only via tools/new_finding.py, with confidence levels and full provenance.

Tech Stack

Analysis

Python
DuckDB
Block/stationary bootstrap
BH-FDR · White RC · Hansen SPA · DSR
Roll & EDGE spread estimators

Data

hfmarketdata.io (sole source)
1-minute to daily bars
Equities · ETFs · futures · FX · crypto · options
Committed SHA-256 data manifest

Platform

www.anomaly-atlas.io (Node/Express)
Server-rendered SVG figures from results JSON
Apple Silicon / macOS

Highlights

  • F001 — nothing in the searched universe survives the full ladder: the negative finding is the project's headline, and it replicates out-of-sample
  • F002 — the SPX→SPY minute-scale "lead" is index content staleness (Fisher 1966), measured live; it survives print synchronization AND SPA
  • Statistical correction corrects for search, not for mechanism — a deliberately planted artifact passed SPA unharmed
  • Median breakeven: surviving rules capture ~1% of one half-spread per trade — bounce harvesting, not economics
  • Every result JSON embeds the hardware manifest, client instrumentation, and the SHA-256 of the data manifest
  • Built on hfmarketdata.io, the author's own 26.5-billion-row open market-data platform

Explore Anomaly Atlas

What's real in HF market data — the full source is on GitHub.