Decide the GPI multiplier's impulse definition (1.78 total spending vs 2.30 power-sector only vs 1.94 with green investment)
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 38/100
Línea de trabajo
Start with gpi_multiplier() in src/define_uk/validation.py and the gpi_multiplier entry in validation/reference_outputs.json; compare the existing calculation with the four denominator definitions and the cached run evidence described in the issue. Decide which definition to publish, then update the validation output and run record as specified. Done means the chosen definition and caveats are recorded consistently, the upstream label explanation is corrected, and the macro-site follow-up is opened.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
The published GPI multiplier is 1.78: cumulative nominal ΔGDP / cumulative nominal ΔSPEND_GVT, GPI + Green Bonds vs baseline, 2023–2040 (src/define_uk/validation.py, gpi_multiplier(); validation/reference_outputs.json gpi_multiplier). PR #15 corrected the caveat on its denominator. This issue asks which impulse definition we publish. Until it is decided, 1.78 stays as published and none of the alternatives below is quoted.
Evidence (cached pinned run 846081a, output/tables/gvt_investment)
All figures are cumulative scenario-minus-baseline sums over the 216 quarters (nonzero from 2023Q1). They are recomputed from the CSVs; no model run was needed.
| Denominator | Cum Δ | Ratio | What it measures |
|---|---|---|---|
| SPEND_GVT = OCONS_GVT + SOCB_GVT + GCF_GVT + SPEND_GVTPS (published) | 118.2 | 1.78 (nominal ΔGDP 209.9) | Total government spending excluding wages. It mixes the policy impulse with endogenous items: OCONS +21.1, SOCB +8.0, GCF −2.3 (GCF_GVTG +17.0 offset by GCF_GVTC −19.3) |
| SPEND_GVTPS only (government power-sector spending) | 91.2 | 2.30 | Closest to the policy switch itself (GREEN_POWER*3.33*P_P per quarter plus the common GVT_ENERGY term) |
| SPEND_GVTPS + GCF_GVTG ("green investment") | 108.3 | 1.94 | Power-sector impulse plus green public GCF. GCF_GVTG is partly endogenous and offset by conventional GCF |
| Upstream's own G: (CONS_GVT + GCF_GVT + SPEND_GVTPS) deflated by the baseline P_P, against ΔGDP_R | 104.1 | 2.41 (real ΔGDP 250.6) | The definition upstream's fiscal_multiplier chunk uses |
Two findings explain the upstream Multiplier_Summary.csv. They change what validation.py says about why that file is unusable:
- The upstream labels are shifted by one. The Rmd's scenario config has S8 = "GPI + Green Bonds" and S9 = "Green Power Subsidy". The multiplier chunk's
sce_listlabels num 8 "Green Public Investment" and num 9 "GPI + Green Bonds". So the row "Green Public Investment" (TotalDeltaG 104.22, TotalDeltaGDP 250.76) is our GPI + Green Bonds, which we reproduce as 104.1 / 250.6 (4-significant-figure CSVs). The row "GPI + Green Bonds" (52.27 / −48.9) is actually Green Power Subsidy, reproduced as 51.95 / −48.9. TotalDeltaG therefore does match a series: upstream's real G at baseline prices.validation.pysays it "matches no variable", and that statement should be corrected. - M_Impact = −32.22 is the same in all eight rows because every policy scenario sets
GVT_ENERGY = 1. The first quarter in which cumulative ΔG moves is the same common switch in every scenario, not the policy. M_Impact/M_4Q/M_8Q are therefore not policy multipliers, and the "unusable" verdict on those columns stands.
Two other facts bear on the choice:
- Nominal and real ratios differ materially, because the scenario lowers the GDP deflator (cum ΔP_P −0.11; nominal ΔGDP 209.9 vs real 250.6). Only a nominal/nominal ratio or a real/real ratio is coherent. 1.78 is nominal/nominal. The upstream 2.41 is real/real at baseline prices.
- The same capacity delivered as a subsidy (Green Power Subsidy,
GVT_INVEST = 0) has SPEND_GVTPS +110.8 but CONS_GVT −49.1 and SOCB −27.7, with real ΔGDP −48.9. Any definition we pick should give a sensible answer for both designs. With SPEND_GVTPS as the denominator it gives −2.24 nominal for the subsidy.
Options
A. Keep 1.78 (total spending excluding wages). It is reproducible and already published. But the denominator includes endogenous responses, so it is not an impulse multiplier, and the caveat has to say so prominently.
B. SPEND_GVTPS only (≈2.30 nominal). The cleanest impulse, because it is the variable the policy switch sets. It ignores GCF_GVTG and the induced OCONS response.
C. SPEND_GVTPS + GCF_GVTG (≈1.94 nominal). Matches the "green investment" wording on the site, but GCF_GVTG is partly endogenous, and the conventional GCF offset is left out.
D. Upstream's definition (≈2.41 real/real at baseline prices). It matches the model authors' own table once the labels are corrected. It is a real ratio, so it is not comparable with A–C.
Recommendation
B as the headline impulse multiplier, with A kept as a secondary "per £ of total non-wage government spending" ratio. B is the only denominator that is the policy instrument itself. D is useful as a cross-check: real/real 2.41 sits close to B's 2.30, which is reassuring. But publishing D would mean adopting a G that excludes social benefits, and its label bug would need explaining. Whichever we choose, the number stays a full-horizon cumulative ratio under a demand-led closure, not comparable to short-horizon multipliers. That caveat does not change.
If B is chosen, the follow-up is:
- add a
definitionswitch togpi_multiplier() - record 2.30 in
reference_outputs.jsonwith a VALIDATION.md run-record row - correct the "matches no variable" text
- open a macro-site issue for the label and number change
Raised from the 6 Nov 2026 review (PR #15).
🤖 Generated with Claude Code
- Lenguaje dominante
- Python
- Estrellas
- 0
- Forks
- 0
- Merge medio
- 4 d 14 h
- PR fusionados (30 d)
- 5
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de PolicyEngine/define-uk-model
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
-
enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
PolicyEngine/define-uk-model#17 · 4 comentarios ·
Todos los issues de PolicyEngine/define-uk-model
Issues similares
-
bug triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
mealie-recipes/mealie#9117 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
freelawproject/courtlistener#8406 ·
Los mantenedores suelen responder en 2 días
-
good first issue help wanted level 1 wocs
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
GianlucaBave/murmury#49 ·
Los mantenedores suelen responder en 1 día
-
regression skipped skipped_bmg
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
intel/torch-xpu-ops#6142 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
good first issue help wanted python up-for-grabs
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
andrewsiah/agentswarm-data-tasks#122 ·
Los mantenedores suelen responder en 1 día