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.

validation

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.

1

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.

anchored — real GDP 0.15% MAPE by construction, not skill; CI fails at 1%
anchored — consumption 0.25% MAPE not a second test — same £m error as GDP
held-add-factor forecast 0.37% MAPE real GDP, 2026Q1–2027Q4; 6 of 8 computed in band
free-running 4.48% MAPE real GDP; 6 of 11 computed in band — report-only
The three emulator configurations and how each one scores
configurationwhat it ishow 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.

the three configurations
anchored
GDP 0.15% MAPE, consumption 0.25% — by construction, not skill
held add-factors
GDP 0.37%, 6 of 8 computed in band
free-running
GDP 4.48%, consumption 7.49% — report-only
CI gate
the build hard-fails if anchored GDP drifts past 1%
2

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.

obr-macro: anchored baseline vs March 2026 EFO, quarterly deviation Line chart. Quarterly percentage deviation of the anchored emulator from the published March 2026 EFO, 2025Q1 to 2027Q4. Real GDP ranges from -0.16% to +0.28% (mean absolute deviation 0.15%); consumption from -0.27% to +0.46% (mean absolute deviation 0.25%). Both series stay well inside the plus or minus 1% band at which continuous integration hard-fails the build, which is off the top and bottom of this frame. real GDP (peak +0.28%) consumption (peak +0.46%) -0.6% -0.3% 0 +0.3% +0.6% 2025Q1 2026Q1 2027Q1 2027Q4
Current March 2026 EFO baseline. Quarterly deviation from the published EFO; CI hard-fails at ±1.00%, off the top and bottom of this frame. Computed from papers/obr-macro/figures/fig_anchored_data.csv, regenerated from the March 2026 detailed forecast tables on 21 July 2026.
anchored fit
real GDP
0.15% MAPE, 2025Q1–2027Q4
consumption
0.25% — the same £m error as GDP, not a second test
why
every other demand-identity term is exogenous or pinned
3

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.

obr-macro: 1p on the basic rate, ours vs HMRC ready reckoner (£bn/yr) Grouped bar chart in billions of pounds per year. PolicyEngine's static costing of a 1 percentage point rise in the UK basic rate of income tax, against HMRC's Direct effects of illustrative tax changes ready reckoner, June 2025 vintage. For the basic rate +1pp, 2026–27 group, ours is 6.46 against HMRC’s 6.90, a deviation of -6.4%. For the basic rate +1pp, 2028–29 group, ours is 6.92 against HMRC’s 8.20, a deviation of -15.6%. The 2028–29 emulator figure is interpolated between the scored endpoints £6.46bn in 2026 and £7.38bn in 2030. 0 2 4 6 8 10 6.46 ours 6.90 HMRC basic rate +1pp, 2026–27 6.92 ours 8.20 HMRC basic rate +1pp, 2028–29
£bn/yr, against HMRC's Direct effects of illustrative tax changes (June 2025 vintage). The 2028–29 emulator bar is interpolated between the scored endpoints £6.46bn (2026) and £7.38bn (2030). Source: obr-macro working paper, comparison table panel B.
obr-macro against the current March 2026 OBR EFO and HMRC's ready reckoner
OursOfficialDeviation
Anchored levels vs EFO March 2026, £bn/qtr
Real GDP, 2025Q1703.8703.4+0.05%
Real GDP, 2027Q4730.6728.6+0.28%
Consumption, 2025Q1429.7429.3+0.09%
Consumption, 2027Q4445.5443.4+0.46%
Basic rate +1pp vs HMRC ready reckoner, £bn/yr
2026–276.466.9−6.4%
2028–29 (interpolated)6.928.2−15.6%
2030 (end of window)7.38≈8.2 (HMRC's 2028–29 figure — its reckoner stops there)−10.0%
1p on the basic rate
ours, 2026
£6.46bn
HMRC reckoner
£6.90bn — a −6.4% gap
status
a benchmark, not a validation
4

Free-running

What the equations do with no OBR judgement.

How much of the OBR emulator scorecard the model actually computes Two stacked bars. Of 21 headline variables in the OBR emulator calibration scorecard, 11 are actually computed by the model and 10 are passthrough, held at the OBR published value and therefore scoring zero error trivially. Of the 11 computed, 5 are fair, 1 is an identity, 3 are poor, 2 are off. 6 of the 11, or 55 per cent, land within band, but one of those is an accounting identity that closes over passthrough inputs, so 5 of the 10 non-trivial computed variables are in band. The worst are company profits 63.29 per cent and the current account 3.60 per cent of GDP. 21 headline scorecard variables 11 computed 10 passthrough — held at the OBR value of which, the 11 the model computes fair 5 identity 1 poor 3 off 2 Only 5 of the 10 non-trivial computed variables are in band. One of the 6 in-band passes is an accounting identity over passthrough inputs. bands: rates ±1.0pp · net balances ±1.5% of GDP · levels ≤10% MAPE
Raw calibration against the March 2026 EFO. The two “off” variables depend on unpublished OBR constants and are regression-gated, not tuned. Source: 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.

obr-macro: real GDP level, anchored vs free-running vs the March 2026 EFO (£bn/qtr) Line chart of quarterly real GDP levels in billions of pounds, 2025Q1 to 2027Q4. The published March 2026 EFO path rises from 703.4 to 728.6. The anchored emulator is visually indistinguishable from it, running from 703.8 to 730.6 (mean absolute deviation 0.15 per cent, recomputed here from the plotted series). The free-running emulator, de-seeded and with no add-factors, contracts from 694.4 to 675.8 — a gap that widens to 53 billion pounds, 4.48 per cent mean absolute deviation over the horizon. Free-running and EFO paths from papers/obr-macro/figures/fig_free_running_data.csv; anchored path from papers/obr-macro/figures/fig_anchored_data.csv. Coordinates: value v in billions maps to y = 292 - (v - 660) * 2.95 on a 660 to 740 axis; quarter i of 12 maps to x = 58 + i * 60.545. anchored (0.15% MAD) free-running (4.48% MAD) EFO Mar 2026 660 680 700 720 740 2025Q1 2026Q1 2027Q1 2027Q4
Current March 2026 EFO baseline. Real GDP, £bn/qtr. The anchored path sits on top of the EFO; the same equations free-running — de-seeded, no add-factors — contract away from it. Computed from 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.

obr-macro: quarterly real GDP growth — emulator vs EFO Nov 2025 vs ONS outturn (% q/q) Grouped bar chart, percentage quarter-on-quarter real GDP growth for the four quarters with ONS outturns since anchoring. 2025Q2: emulator 0.15, EFO 0.28, ONS 0.10; 2025Q3: emulator 0.14, EFO 0.20, ONS 0.20; 2025Q4: emulator 0.25, EFO 0.27, ONS 0.20; 2026Q1: emulator 0.37, EFO 0.39, ONS 0.60. The emulator tracks the three 2025 outturns to within 0.06 points; both the emulator and the November EFO it inherits miss the strong 0.6 per cent 2026Q1 outturn by roughly a quarter of a point. Data from papers/obr-macro/figures/fig_outturn_data.csv. Coordinates: value v maps to y = 258 - v * 331.4 on a 0 to 0.7 axis. emulator EFO Nov 2025 ONS outturn 0 0.2 0.4 0.6 0.15 emul. 0.28 EFO 0.10 ONS 2025Q2 0.14 emul. 0.20 EFO 0.20 ONS 2025Q3 0.25 emul. 0.27 EFO 0.20 ONS 2025Q4 0.37 emul. 0.39 EFO 0.60 ONS 2026Q1
November 2025 EFO vintage — the working paper's study; the live baseline is anchored to the March 2026 EFO. % q/q real GDP growth, each bar labelled. Computed from 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).

the honest scorecard
real GDP
4.48% MAPE — the model contracts while the EFO grows
computed
11 of 21 headline variables; the other 10 are passthrough
in band
6 of the 11, and one of those is a trivial identity
worst
company profits 63.29%
5

Known limitations

What it cannot be used for.

Known limits of the OBR emulator
limitdetail
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.
the headline limits
spending multiplier
CGG is exactly 1.0000, flat, against the OBR's 0.6
capital spending
CGIPS does not transmit — do not score it
corporation tax
TCPRO converges slowly: 12 quarters is ~40% of plateau
inert blocks
unemployment, prices and trade never respond to any lever
convergence
no quarter reaches tolerance — read scale, not quarters