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%

History of web/lib/charts.js · clear filter

  1. 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>
    Simon-Pierre Boucher committed 4 h ago (Aug 12, 2026) · 1 file changed +41 −2
  2. 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>
    Simon-Pierre Boucher committed 5 h ago (Aug 12, 2026) · 1 file changed +38 −2
  3. expF: survival battery — statistical correction is not artifact correction
    - 372 signed rules from the full C/D/E searched space; funnel:
      232 naive (62%) -> 226 FDR (61%) -> 68 SPA step-1 (18%), all GROSS
    - survivors carry absurd Sharpes (10-31 ann.): bounce harvesting +
      frictionless timing; the KNOWN SPX->SPY artifact passes SPA (canary) —
      artifact nulls, search correction and costs are all three required
    - expE calendar block: zero survivors (pipeline tripwire did not fire)
    - 12/14 artifact-adjusted expC triage cells + ES->SPY form the
      double-filtered pool for expG
    - new stats/spa.py (Politis-Romano bootstrap, White RC, Hansen SPA,
      StepM step-1, DSR) with 4-gate synthetic validation; funnel figure
    - 0 network requests: entire battery served by the frozen cache
    
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
    Simon-Pierre Boucher committed 5 h ago (Aug 12, 2026) · 1 file changed +35 −1
  4. fix: expE lint (semicolons) + duplicated Next-experiment block
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
    Simon-Pierre Boucher committed 5 h ago (Aug 12, 2026) · 1 file changed +83 −1
  5. 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>
    Simon-Pierre Boucher committed 5 h ago (Aug 12, 2026) · 1 file changed +228