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%
-
expH: validation ladder closes + first atlas entries + Publications tab
…
expH (validation 2016-2021, opened once; holdout stays sealed): - negative finding REPLICATES: 0 net survivors at full half-spread OOS - CKX fails pre-registered sub-period clause (kappa* 0.445->0.263) - ES->SPY flips sign OOS (+0.003, p=0.68) — regime-fragile - daily reversal family: VR30 excess -0.143 -> +0.023 (crisis-regime) - figure: alphas collapse OOS, the SPX staleness artifact persists Atlas (via new_finding.py, Level 2 each): - F001 nothing in the searched universe survives the full ladder - F002 SPX->SPY lead is index content staleness (Fisher), survives SPA Publications: new tab + P001 'The Artifact Frontier, Part I' — formal write-up of expA->expG with live {{figure:...}} tokens rendered from committed results.json Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> -
expG: cost frontier — the double-filtered pool dies at a fraction of the spread
…
- net = gross - kappa*(EDGE/2)*turnover swept over kappa in {0,.1,.25,.5,1,2} - median breakeven kappa* = 0.0114 (max 0.28): the median rule captures ~1% of one half-spread per trade; ES->SPY kappa*=0.0028 splice-invariant - survivors: 3 at kappa=0.1 (all sparse names), 1 at 0.25 (CKX 1day, skeptical prior), 0 at 0.5+; zero intraday at kappa=1 — pre-registered falsification did not trigger; three-layer doctrine closes - results sanitized (NaN -> null: Python json emits bare NaN, invalid for every other consumer); kappa* log-scale figure with cost reference lines Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> -
fix: expE lint (semicolons) + duplicated Next-experiment block
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Web: server-rendered SVG figures from results.json (dataviz-validated)
…
- web/lib/charts.js: expB staleness scatters, expC VR30-excess strip plot (FDR emphasis), expD raw-vs-fresh dumbbells; palette validated (validate_palette.js all-pairs PASS on card surface), native tooltips, ink-token text, selective direct labels - figures injected on experiment pages + latest figure on home - rendered and eyeballed (rsvg): fixed tick-label collision Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
expC: reversion scan — null mis-specification caught, corrected triage
…
- pre-specified EDGE+Roll intraday bounce null predicts impossible AC1 (-3..-27): discarded its positive-excess family as null artifact; variance-consistency rule adopted (taxonomy T1 amended) - corrected MA(1)-consistent VR triage: 14 Level-0 cells (JPM 1min -0.243, MSFT 5min 2000-07...) + daily 2008-15 mega-cap/index reversal family (XOM -0.133 FDR, SPY -0.055 FDR) - H01 confirmed (liquid intraday lag-1 reversion = 0 net of bounce); decay clause partially falsified — recorded as-is - new: stats/multiple_testing.py (BH-FDR, bootstrap p), EDGE wrapper, pre-specified splits in data/universe.py, 6 new gate tests Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
expB: artifact baselines measured (after §8.1 synthetic gate)
…
- synthetic generators with known ground truth + 11-test gate; the gate caught a real VR estimator bug (double division by q) before real data - stats: reversion (VR/AC1/half-life), leadlag, block bootstrap; validation: Roll spread, excess reversion, staleness, LOCF - expB (pre-specified protocol): 31 tickers Q1 2024 RTH 1min — bounce AC1 -0.009/-0.051/-0.232 by staleness tercile, VR30 down to 0.55 with zero economics, SPY spuriously leads stale names (+0.047 at +1min, Spearman +0.43), SPX lags SPY by 1min (+0.065) - artifact_taxonomy.md: 7 entries T1-T7 with measured magnitudes Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Phase 0.5: Experiment A (data reality check) + hf_client implementation
…
- hf_client.py: cache-first single API client (throttle, 429/5xx back-off, 50k-row pagination, committed data-manifest index) + 5 offline unit tests - expA benchmark: 8 probe families, results with embedded hardware manifest - research/data_source_profile.md (reviewed): coverage, timestamps ET, session structure, daily-vs-1min semantics, adjustment re-basing, limits - LOG entry; expA hypothesis/analysis finalized Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>