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 research/LOG.md · 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 +21
  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 4 h ago (Aug 12, 2026) · 1 file changed +24
  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 4 h ago (Aug 12, 2026) · 1 file changed +24
  4. fix: expE lint (semicolons) + duplicated Next-experiment block
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
    Simon-Pierre Boucher committed 4 h ago (Aug 12, 2026) · 1 file changed +25
  5. expD: lead-lag scan — decay on synchronized pairs, splice-invariant ES-SPY, SPX content staleness
    - 2006-07: real both-fresh diffusion (SPY->sectors +0.07..+0.148 FDR);
      2014-15: collapse to tiny residuals (a few FDR survivors -> expF;
      H08 expected-negative clause formally falsified, recorded)
    - ES->SPY -0.032 both-fresh, identical across all 3 splice variants
    - SPX->SPY +0.132 both-fresh (fresh_frac .996): content staleness beats
      print synchronization — H11 confirmed at scan level
    - T3 amended: LOCF artifact non-monotone in staleness (inflates mid-stale,
      dilutes ultra-stale)
    
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
    Simon-Pierre Boucher committed 5 h ago (Aug 12, 2026) · 1 file changed +20
  6. 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>
    Simon-Pierre Boucher committed 5 h ago (Aug 12, 2026) · 1 file changed +25
  7. Phases 2-4: state of the art, 22-hypothesis research gaps, candidate ranking
    - state_of_the_art.md: 10 anomaly families (charter §5 template) with
      epistemic status; methods inventory with macOS arm64 availability
    - research_gaps.md: H01-H22, each with constructable artifact null;
      multiple-testing budget declared (22) for expF
    - candidate_ranking.md: 10-axis scoring; selected C01=H15 intraday momentum
      decay, C02=H13 turn-of-month, C03=H11+H03 index-artifact decomposition,
      C04=H10 crypto-weekend gap; reserve H09
    
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
    Simon-Pierre Boucher committed 5 h ago (Aug 12, 2026) · 1 file changed +21
  8. Phase 1: literature sweep — 6 theme notes + 52-source verified bibliography
    All citations verified against OpenAlex (DOI/venue/year, accessed
    2026-08-12). Priors adopted: McLean-Pontiff decay base rate, STW calendar
    reality check, t>=3 hurdle, EDGE spread estimator for expG.
    
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
    Simon-Pierre Boucher committed 5 h ago (Aug 12, 2026) · 1 file changed +26
  9. 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>
    Simon-Pierre Boucher committed 5 h ago (Aug 12, 2026) · 1 file changed +28
  10. 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>
    Simon-Pierre Boucher committed 6 h ago (Aug 12, 2026) · 1 file changed +26
  11. Bootstrap: full research skeleton (CLAUDE.md §3, localvm-research layout) + web platform
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
    Simon-Pierre Boucher committed 6 h ago (Aug 12, 2026) · 1 file changed +30