OBR anchoring is one EFO behind: October 2026 EFO (28 Oct) not yet incorporated
Les mainteneurs répondent en général sous 5 jours
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 18/100
- Type d'issue
- Fonctionnalité
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- html, python
- Domaine
- backend-api-design, documentation
Piste de recherche
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.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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
- obr-macroeconomic-model#53 lands, opt-in, with March as the default.
- #218 pin bump. Every hosted OBR number already moves at this step.
- Switch the adapter default to October and update the strings above in one PR.
- 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."
- Langage dominant
- HTML
- Étoiles
- 3
- Forks
- 0
- Merge moyen
- 4 j 6 h
- PR mergées (30 j)
- 15
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de PolicyEngine/macro
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
PolicyEngine/macro#225 · 2 commentaires ·
Les mainteneurs répondent en général sous 5 jours
-
question
Difficulté 2/5 1-3 heures Accessibilité débutants 67/100
PolicyEngine/macro#214 ·
Les mainteneurs répondent en général sous 5 jours
-
bug documentation
Difficulté 1/5 1-3 heures Accessibilité débutants 76/100
PolicyEngine/macro#211 · 1 commentaire ·
Les mainteneurs répondent en général sous 5 jours
-
question
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 22/100
PolicyEngine/macro#227 · 4 commentaires ·
Les mainteneurs répondent en général sous 5 jours
-
Nowcast can't archive a new round: the hosted forecast_uk is pinned to boe-var data ending 2026Q1Ouvertedata question
Difficulté 4/5 3-5 jours Accessibilité débutants 34/100
PolicyEngine/macro#224 · 4 commentaires ·
Les mainteneurs répondent en général sous 5 jours
Toutes les issues de PolicyEngine/macro
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
langchain4j/langchain4j#7068 ·
Les mainteneurs répondent en général sous 1 jour
-
bug help wanted
Difficulté 2/5 1-3 heures Accessibilité débutants 86/100
-
agent-self
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
yologdev/yoyo-evolve#1175 ·
-
Per line discountOuverteenhancement good first issue
Difficulté 2/5 1-3 heures Accessibilité débutants 67/100
ruyd/agentic-sdlc-lab#4 · 2 commentaires ·
-
Community
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
kedro-org/kedro-plugins#1575 ·
Les mainteneurs répondent en général sous 1 jour