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.30%, consumption 0.49% (2025Q1–2027Q4); GDP 0.67% 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.27%, consumption 0.19%; 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, and GDP made endogenous — the emulator’s raw structural dynamics. In the OBR’s published model GDP is an input, so this is not a measure of OBR forecast error. | Weak, and reported as such. GDP 4.32%, consumption 7.22%, household income 6.18%, business investment 15.28%, company profits 82.77%, current account 3.02% of GDP — 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 7 October 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 | 733.7 | 728.6 | +0.70% |
| Consumption, 2025Q1 | 429.7 | 429.3 | +0.09% |
| Consumption, 2027Q4 | 448.5 | 443.4 | +1.16% |
| 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 emulator does with GDP made endogenous and no add-factors.
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.32% free-running miss is
not a measure of OBR forecast error. In the OBR's published model GDP
(GDPM) is an exogenous input, so that model cannot miss
GDP; the gap measures this emulator's closure swap, which makes GDP
endogenous, together with inputs the OBR does not publish. That 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 5.94%, RPI 1.71pp —
and every figure here is the March 2026 vintage after the upstream
OSHH ONS anchor and the recovery of eight ONS series
(355 in all) that a failed download had dropped.
papers/obr-macro/figures/fig_free_running_data.csv and fig_anchored_data.csv, regenerated on 7 October 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 (about 0.15× on average in the first year, ~0.34× by the twelfth quarter) rather than as a per-quarter percentage, because per-quarter values depend on where the solver stops as well as on the model (see convergence). Reforms are scored around the anchored baseline: the anchoring add-factors are held fixed in both the baseline and the shocked run and cancel in the difference.
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: sign right, scale untested | Scored around the anchored baseline, a sustained +100bp lowers GDP by about £121m on impact, £431m by quarter 4, £482m by quarter 8 and £416m by quarter 12; a 100bp cut raises it by a similar amount (about £126m to £579m). The earlier finding that a rise barely moved GDP while a cut raised it roughly ninety times as much came from scoring around the free-running model. The response runs through household spending alone — there is no monetary rule, and unemployment, prices and trade do not move — and it has not been compared with any published estimate. |
| 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