Skip to content

Gate fiscal multipliers to published ranges; backtest LONGBASE vs FRED outturns - #7

Merged
vahid-ahmadi merged 1 commit into
mainfrom
gate-multipliers-outturn-backtest
Aug 4, 2026
Merged

Gate fiscal multipliers to published ranges; backtest LONGBASE vs FRED outturns#7
vahid-ahmadi merged 1 commit into
mainfrom
gate-multipliers-outturn-backtest

Conversation

@vahid-ahmadi

Copy link
Copy Markdown
Contributor

Closes the two validation gaps from the audit: the published fiscal-multiplier claims were validated once but never gated, and nothing backtested the LONGBASE baseline against realized data.

1. Fiscal multipliers gated (Test 4, tests/test_multipliers.py, marked slow)

Calendar-year multipliers recomputed from sustained standard runs (2026Q1–2028Q4, VAR expectations, demo fiscal configuration, policy switches shared with scripts/scenarios.py):

multiplier computed gate band source
purchases yr1, inertial Taylor rule 0.725 0.7–1.0 Coenen et al. (AEJ: Macro 2012); Whalen & Reichling (CBO WP 2015-02)
purchases yr2, funds rate pegged (dmpex=1) 0.904 0.8–1.2 Coenen et al. 2012, two-year accommodation
tax cut yr1 / yr2 (ex-ante revenue denominator) 0.223 / 0.317 0.15–0.45 each, yr2 > yr1 Whalen & Reichling, CBO ≈ 0.3

These match the published claims (0.72 / ~0.99 / 0.22 / 0.32); the pegged yr2 value computes to 0.90 under this experiment definition, inside the 0.8–1.2 band. A slow pytest marker is registered; fast CI jobs deselect it and the scheduled-validation job runs it as a named gate step.

2. LONGBASE-vs-outturn backtest (scripts/backtest_longbase.py)

Compares the pinned April 2026 LONGBASE near-term path against realized FRED outturns (GDPC1, UNRATE, PCEPILFE, FEDFUNDS via the public CSV endpoints) for 2026Q1–Q2, writing JSON/markdown reports (committed under backtests/). A raw-observation snapshot fetched 2026-08-04 is committed at tests/data/fred_outturns_snapshot.csv so tests/test_backtest.py gates the report machinery hermetically. First backtest (error = LONGBASE − outturn):

quarter GDP growth unemployment core PCE inflation fed funds
2026Q1 +0.33pp +0.12pp −1.69pp +0.14pp
2026Q2 +0.91pp +0.17pp −0.69pp +0.04pp

Activity and rates were close; core PCE inflation was substantially underprojected. Per the audit's instruction this is a report, not a gate — the new weekly longbase-backtest CI job runs --fetch with continue-on-error. VALIDATION.md gains Test 4 and a "LONGBASE vs the 2026 outturns" section recording these numbers.

Testing

uv run pytest -q — 33 passed, 1 skipped (includes the new slow multiplier gates and hermetic backtest test); ruff check clean.

🤖 Generated with Claude Code

…D outturns

Two validation gaps closed (audit: multiplier claims validated-once-never-
gated; no baseline backtest):

* tests/test_multipliers.py (Test 4, marked slow): recomputes the calendar-
  year fiscal multipliers from sustained standard runs and gates them --
  purchases yr1 under the inertial Taylor rule (0.72, band 0.7-1.0 per
  Coenen et al. 2012 / CBO Whalen-Reichling 2015), purchases yr2 with the
  funds rate pegged (0.90, band 0.8-1.2), tax cut yr1/yr2 (0.22/0.32, band
  0.15-0.45 vs CBO ~0.3). Runs in the scheduled-validation CI job; the fast
  jobs deselect -m slow.

* scripts/backtest_longbase.py: compares the pinned April 2026 LONGBASE
  near-term path against realized FRED outturns (GDPC1, UNRATE, PCEPILFE,
  FEDFUNDS; 2026Q1-Q2), writing JSON/markdown reports. A snapshot fetched
  2026-08-04 is committed (tests/data/fred_outturns_snapshot.csv) so
  tests/test_backtest.py gates the machinery hermetically; LONGBASE accuracy
  itself is deliberately NOT gated -- the weekly longbase-backtest CI job is
  continue-on-error. First backtest recorded in VALIDATION.md and
  backtests/: activity/rates close, core PCE inflation underprojected by
  1.7pp (2026Q1) and 0.7pp (2026Q2).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@vahid-ahmadi
vahid-ahmadi merged commit e6f7bb2 into main Aug 4, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant