fiscal_spending output turns negative from q3 while G is still elevated; impact multiplier 0.18 (rho=0.8) vs 0.075 (hosted default rho=0.9), no external gate

Aperta
#5 3 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
42/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
python

Direzione di ricerca

Start with tests/test_shocks.py and the fiscal shock implementation called by hank_shock; inspect how the tests set persistence and which response paths the result exposes. Reproduce the reported quarter 0–8 responses at persistence 0.8 and 0.9, then compare them with a published tax-financed government spending impulse response or document the observed sign change and persistence dependence in regression coverage.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

question

What

The fiscal_spending output response turns negative from quarter 3, while G is still 51–73% of its impact level. The impact multiplier also halves between persistence 0.8 and 0.9. No external benchmark gates either result.

Calls (hosted MCP hank_shock, us-hank-model@19a8e5e, two_asset, 6 Nov 2026)

hank_shock(kind="fiscal_spending", size=0.01, persistence=ρ); Y, C, I in % deviation from steady state; G in % of SS GDP:

ρ q G Y C I r (pp/q)
0.8 0 1.00 +0.175 −0.536 −2.55 −0.211
0.8 3 0.51 −0.018 −0.403 −1.54 +0.110
0.9 0 1.00 +0.075 −0.692 −2.63 −0.154
0.9 3 0.73 −0.013 −0.611 −2.01 +0.081
0.9 7 0.48 −0.029 −0.459 −1.23 +0.063

ρ=0.8 reproduces the README's "~0.18" impact multiplier. The hosted default is ρ=0.9, which gives 0.075.

Why it needs checking

  • A balanced-budget multiplier below 1 is expected here, because the labour tax finances G period by period (README). But a negative output response while spending is still elevated means crowding out (investment −2.6% on impact, real rate +0.3pp annualised from q1) more than offsets the spending. That is a strong claim, and tests/test_shocks.py only bounds the impact multiplier in (0, 0.5).
  • Persistence is a free argument with default 0.9, so the hosted answer to "what is the multiplier" depends on a default no one chose for fiscal reasons.
  • I have not sourced a published two-asset HANK G-shock IRF to compare against. ABRS 2021 is gated on steady-state targets and signs only. This is a request to find one, not a claim that the number is wrong.

Options

  1. Pin the full IRF (q0–q8) at ρ=0.8 and ρ=0.9 as a regression test, with the sign change documented.
  2. Find a published tax-financed G IRF for this calibration (ABRS replication files, or Auclert–Rognlie–Straub's intertemporal Keynesian cross work) and gate against it.
  3. Return cumulative_multiplier and the tax path in the hosted result, so the crowding-out mechanism is visible.

Recommendation: 1 + 3 now; 2 before any multiplier is quoted on the site.

Related: the monetary response's inflation is −1.34pp annualised on impact for a 100bp-annualised rstar shock (ρ=0.9). That is 3–7× the BoE 1999 range and peaks on impact. It looks like model class (forward-looking NKPC), not a bug, and is recorded in the cross-model table on PolicyEngine/macro.

🤖 Generated with Claude Code

Lingua principale
Python
Stelle
0
Fork
0
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di PolicyEngine/us-hank-model

Tutte le issue di PolicyEngine/us-hank-model

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.