model 02 — OBR macroeconometric model · obr-macro · UK · hosted
UK fiscal reform, quarter by quarter.
Run selected UK tax and spending scenarios and trace GDP, consumption, and investment over 3–5 years against the March 2026 EFO baseline. Borrowing is not yet returned by the PolicyEngine Macro adapter.
How far to trust it, and where it stops.
What the three configurations score, the anchored fit, the one independent test, what the equations do free-running, and the limits that follow. The panel alongside carries the figures.
How far to trust it
Excellent anchored. Weak free-running. Both published.
Three configurations, three levels of trust. Errors are MAPE against the published EFO path.
| configuration | what it is | how it scores |
|---|---|---|
| Anchored | Add-factors matched to the March 2026 EFO. Every reform score uses it. | GDP 0.15%, consumption 0.25% (2025Q1–2027Q4); 0.29% out to 2031Q1. Unemployment unreliable past 2027Q4. CI gates tolerance, finiteness, the expenditure identity and signs. |
| Held add-factors | Fitted 2024Q1–2025Q4, held flat, scored 2026Q1–2027Q4. Initialised at the EFO values it is scored against, and its fitting window contains OBR-forecast quarters — so it partly encodes “agree with the OBR”. | GDP 0.37%, consumption 0.33%; 6 of 8 in band. The paper’s 2.2% / 3.6% is the same window on the November 2025 vintage. |
| Free-running | De-seeded, add-factors off — raw structural dynamics, no OBR judgement. | Weak, and reported as such. GDP 4.48%, consumption 7.49%, household income 6.27%, business investment 15.73%, company profits 63.29% — the model contracts while the EFO grows. |
in band rates within 1.0pp · net balances within 1.5% of GDP · levels within 10% MAPE.
gated CI enforces the anchored tolerance and the multiplier band; the HMRC comparison and the outturn backtest are computed for the working paper and refreshed by hand.
An independent implementation built from the OBR's published model code and forecast data. Not produced, maintained or endorsed by the Office for Budget Responsibility, and not official OBR estimates.
Anchored against the EFO
One test, not two.
Anchored GDP and consumption are one test, not two: the £m deviation is identical in all twelve quarters, because every other term in the demand identity is exogenous or pinned.
papers/obr-macro/figures/fig_anchored_data.csv, regenerated from the March 2026 detailed forecast tables on 21 July 2026.The independent test
HMRC's own ready reckoner.
A 1pp basic-rate rise from April 2026, costed through the PolicyEngine static-costing bridge: £6.46bn against HMRC's £6.9bn, −6.4%. Every PolicyEngine year is below every HMRC year, and the gap widens where HMRC's administrative data carry fiscal drag that survey microdata capture less fully. HMRC's reckoner stops at 2028–29, so the 2030 row is set against that same figure carried forward. A benchmark, not a validation — caveats in full.
| Ours | Official | Deviation | |
|---|---|---|---|
| Anchored levels vs EFO March 2026, £bn/qtr | |||
| Real GDP, 2025Q1 | 703.8 | 703.4 | +0.05% |
| Real GDP, 2027Q4 | 730.6 | 728.6 | +0.28% |
| Consumption, 2025Q1 | 429.7 | 429.3 | +0.09% |
| Consumption, 2027Q4 | 445.5 | 443.4 | +0.46% |
| Basic rate +1pp vs HMRC ready reckoner, £bn/yr | |||
| 2026–27 | 6.46 | 6.9 | −6.4% |
| 2028–29 (interpolated) | 6.92 | 8.2 | −15.6% |
| 2030 (end of window) | 7.38 | ≈8.2 (HMRC's 2028–29 figure — its reckoner stops there) | −10.0% |
Free-running
What the equations do with no OBR judgement.
docs/calibration_scorecard.md in the obr-macroeconomic-model repository.The spending multiplier is 1.0 by construction, against the OBR's own published 0.6 for day-to-day public services and welfare spending. Under the demand closure a spending shock lands straight in the GDP identity with the behavioural second round inactive, so £5bn in returns £5bn of GDP — a two-thirds overstatement of every spending-side figure on this page.
The honest scorecard, outturns, and the March 2026 re-anchoring
The honest scorecard. The 4.48% free-running miss is
the gap the OBR's own add-factor judgement closes — which is why
reform deltas are scored against the anchored baseline and never the
raw one. Company profits, the worst line, trace to a single
unpublished constant in households' operating surplus
OSHH: documented and regression-gated rather than
re-tuned, since tuning it would be fitting to the answer. Two lines
not in the chart above — real household income 6.03%, RPI 1.71pp —
and every figure here is the March 2026 vintage after the upstream
OSHH ONS anchor.
papers/obr-macro/figures/fig_free_running_data.csv and fig_anchored_data.csv, regenerated on 12 August 2026.Forecast versus outturn. Comparing one forecast vintage with another tests agreement, not accuracy. The emulator tracks the three 2025 outturns to within 0.06pp and — like the November EFO it inherits — misses the strong 2026Q1 outturn by roughly a quarter point. It is mostly a test of that November vintage: the emulator's own contribution is the 0.02–0.13pp gap between the two model rows. ONS quarterly estimates are themselves revised.
papers/obr-macro/figures/fig_outturn_data.csv.Vintage. Re-anchored from the November 2025 EFO to March 2026, and every headline on this page is computed on that baseline. Only the outturn backtest above retains November 2025, because changing its forecast vintage would erase the historical forecast being tested. Reform effects are differences between structurally identical runs, so the re-anchoring leaves the £6.46bn/£7.38bn static costing untouched. The second-round GDP effect is quoted as a ratio to the revenue raised (~0.35× by the end of the window) rather than as a per-quarter percentage: the earlier −0.057% figure for 2027Q4 does not reproduce on either the current or the previous pinned model revision, and per-quarter values are in any case a function of where the solver stops rather than of the model (see convergence).
Known limitations
What it cannot be used for.
| limit | detail |
|---|---|
| Two household-income equations never fire | The listing's only bare log() left-hand sides — log(HHTFA) and log(NDIVHH) — never execute: their inputs MAJGDP and CORP are absent from the databank. The profits → dividends → household-income channel is inert: a 5pp corporation-tax rise moves FYCPR by −£1,780m and NDIVHH by exactly zero. Reviving it needs a CORP series. Every published figure has the channel inert. |
| Impact multiplier 1.0 by construction | 1.0 vs the OBR's published 0.6 — the warning above explains why and what it biases. |
| Government investment does not transmit | CGIPS does not transmit, in two separate ways. Total fixed investment (IF) moves exactly zero at any shock size, because IF has no live equation in the published listing — the chain never reaches the GDP identity. Business investment (IBUSX) does move, but wrong-signed and grossly non-proportional: mean responses of −£6.8bn, −£8.8bn and −£11.6bn for shocks of £1.5bn, £3bn and £6bn per quarter. Quadrupling the shock changes the response by under a factor of two, so that is residue, not a multiplier, and the ratio must never be quoted as one. Against the OBR's published 1.0. Capital spending should not be scored on this model. |
| Corporation-tax closure converges slowly | The published TCPRO → cost-of-capital → investment chain, with the business-investment equation reconstructed from the OBR's truncated line and MSGVA, PIF, PIRHH frozen against uncalibrated feedback. Since the anchor add-factors moved to log space (August 2026) the deviation reaches a steady state — for a sustained +5pp rise: £0.24bn at q8, £0.38bn at q12, toward a ~£0.95bn/q plateau — but the root is slow (~0.958/quarter), so a 12-quarter run captures only ~40% of the full effect and every result reports its plateau_fraction. The response size now rests on allowance present values estimated from statute and the OBR's own gilt assumption rather than invented constants; full expensing makes it ~0.42× its former magnitude. A controlled scenario closure, not a calibrated supply block. |
| Passthrough channels | Exports, imports and CPI are exogenous here, held at the OBR value. They score 0.00% error without being behavioural wins — 10 of 21 scorecard lines are passthroughs, labelled as such. |
| Whole blocks do not respond to policy | Distinct from the baseline passthroughs above: this is about shock response. Across every lever tested — government consumption, the household tax bridge, corporation tax, Bank Rate and the exchange rate — the unemployment rate, employment, retail prices, exports and imports move by exactly zero, not approximately zero. There is no Okun channel, no Phillips channel and no trade channel: a 6% sterling appreciation moves exports and imports not at all. The second round is consumption — or, under the investment closure, business investment — and nothing else. Pinned per block in tests/test_sign_conventions.py. |
| Bank Rate is not usable | +100bp moves GDP by about −£26m; −100bp moves it by about +£2,393m — the cut is roughly ninety times the rise. Business investment falls under both directions, so the sign carries no information either. There is no monetary-policy experiment this model can answer. |
| Approximated add-factors | Recent corrections are averaged and held flat. The OBR's judgemental, quarter-by-quarter add-factors are not reproduced. |
| Vintage | October 2025 equation listing, March 2026 EFO, current-vintage ONS series. Where the ONS has revised history the identities don't close exactly; that slack lands in the add-factors. |
| No behavioural micro | Aggregate equations only. Distributional questions belong to PolicyEngine. |
CGG is exactly 1.0000, flat, against the OBR's 0.6CGIPS does not transmit — do not score itTCPRO converges slowly: 12 quarters is ~40% of plateau