OBR anchoring is one EFO behind: October 2026 EFO (28 Oct) not yet incorporated

Aperta
#230 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 9 giorni

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
18/100
Tipo di issue
Funzionalità
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
html, python

Direzione di ricerca

Start by checking the status of obr-macroeconomic-model#53 and the #218 pin bump, since the issue makes those prerequisites for switching the adapter vintage. Then review integration/src/policyengine_macro/core.py and the listed site pages; done means October 2026 is the adapter default, while the track record keeps March for rounds before 28 October and selects the comparator per round. The issue also specifies a dated interim note for the OBR pages until the vintage updates.

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

Descrizione

The OBR published the October 2026 EFO on 28 October 2026 (https://obr.uk/efo/economic-and-fiscal-outlook-october-2026/). The site and the hosted OBR adapter still anchor to the March 2026 EFO, so they are now one EFO behind. The OBR model code and variables listing is unchanged (15 Oct 2025), so only the data anchor is out of date. The model plan is in PolicyEngine/obr-macroeconomic-model#53.

Keep March 2026 here (do not update)

The forecast track record must keep March 2026 as its comparator: forecasts/score.py, forecasts/index.html and forecasts/scorecard.json, including the "OBR March 2026 EFO error 0.66pp" figure and the boe-svar vs EFO fan charts.

Every archived round predates 28 Oct. The official benchmark should be the official forecast available at that round's data edge. Switching those rounds to October would give the OBR comparator hindsight. Rounds archived after 28 Oct should use October. The comparator therefore needs a per-round field rather than the single OFFICIAL_LABEL constant (forecasts/score.py:280).

Out of date (will change once the vintage updates)

Where What
integration/src/policyengine_macro/core.py ~293, ~3026–3069 data_vintage="March 2026 EFO", baseline="March 2026 EFO anchored baseline", CPI reference path (~3688–3768)
integration/src/policyengine_macro/capabilities.py, mcp_server.py, cli.py vintage strings
index.html:277 "Tracks the March 2026 EFO to 0.30% GDP MAPE … free-running 4.32%"
assets/make_current_outlooks.py:34,37 "March 2026 OBR outlook" chart
economy/topics/public-finances/index.html:119,125 baseline wording
obr/index.html, obr/methodology/, obr/code/, obr/validation/, models/index.html vintage wording and scorecard figures
papers/obr-macro/ describes the March 2026 paper; leave as dated unless re-run
integration/tests/test_site_contract.py, test_adapter_contract.py pinned vintage strings

What moves when it updates

  • Every hosted OBR number: baseline levels, scored reforms, the 0.30% anchored MAPE and the 4.32% cold-run gap.
    • The 4.32% is a closure artefact (GDPM is exogenous in the OBR's published model), not OBR forecast error. It will move with the vintage.
  • Conditioning assumptions (from the EFO page's Table 2.1, to be confirmed from the workbook): oil about $63 → $82 a barrel, Bank Rate 3.4% → 4.0%, 10-year gilt 4.6% → 5.0%. This changes the baseline that every reform deviation is measured from.
  • The FYCPR and CB rows depend on the obr-macroeconomic-model#42/#52 decision.

Order

  1. obr-macroeconomic-model#53 lands, opt-in, with March as the default.
  2. #218 pin bump. Every hosted OBR number already moves at this step.
  3. Switch the adapter default to October and update the strings above in one PR.
  4. Give the track record a per-round comparator vintage.

Until then, the honest interim fix is a dated note on the OBR pages: "Anchored to the March 2026 EFO; the October 2026 EFO (28 Oct) is not yet incorporated."

Lingua principale
HTML
Stelle
3
Fork
0
Merge medio
8g 15h
PR unite (30g)
1

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/macro

Tutte le issue di PolicyEngine/macro

Issue simili

Altre issue su Backend & API Design

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.