Skip to content

Regime-robustness block for the distributional backtest #88

Description

@MaxGhenis

Diane Schanzenbach's 8/27 feedback (email thread "sampling error"): the QC system made several discrete shifts across our FY2012–24 panel, which is why Bauer–Schanzenbach stayed post-pandemic. Answer with numbers, not argument.

Extend analysis/persistence_backtest.py (merged in #87) with a regime_robustness block:

  1. Regime-crossing test: fit variance components on FY2012–19 only; score FY2022–24 targets with the same CRPS/pinball/coverage battery. If the persistence widths transfer across the pandemic break, the "shifts did not break prediction" claim gets its strongest form.
  2. Post-pandemic-targets summary: the existing per-cell rows already cover targets 2022–24 — add a filtered summary table alongside the full-panel one.
  3. Memo + locks per the existing conventions (generated-memo equality, live input hashes, exact regeneration; see tests/test_persistence_backtest.py).

Context: the answers went to Diane in the held 8/27 reply ("models fit only on earlier years still score well on 2022-2024, and the persistence model wins 2024 outright") — this issue makes that claim a committed artifact. Existing per-year CRPS in persistence_backtest_results.json already shows 2022/2023/2024 results from expanding windows; the new piece is the frozen-2012–19 fit.

Gate: sol review before merge (both prior rounds' reports under ~/.cache/axiom-oracles/snap-fy27/backtest-review/).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions