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

Offen
#230 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 5 Tagen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Anfängerfreundlichkeit
18/100
Issue-Typ
Feature
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
html, python

Rechercherichtung

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.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

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."

Vorherrschende Sprache
HTML
Sterne
3
Forks
0
Ø Merge
4 T. 6 Std.
Gemergte PRs (30 T.)
15

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus PolicyEngine/macro

Alle Issues in PolicyEngine/macro

Ähnliche Issues

Weitere Issues zu Backend & API Design

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.