model 02 — Bank of England structural VAR · boe-svar · UK · hosted
Explain UK growth and inflation.
Decompose UK GDP and inflation into six structural shocks, forecast with credible bands, and explain revisions between quarters.
Replicates the paper; forecast evidence remains limited.
Two independent checks: replication against the published paper, and — rarer — a 2024Q2-frozen forecast study scored against ONS outturns that arrived since, a genuine out-of-sample test that exists because the data edge is frozen.
| check | this replication | the paper |
|---|---|---|
| Global shocks' share of UK GDP variance (1 year) | 42.1% | ~40% |
| Global shocks' share of UK CPI variance (1 year) | 49.5% | ~50% |
| IRFs, FEVDs, shocks, historical decompositions | Figures 2–6 replicate | qualitative match |
| Out-of-sample forecast error, 2024Q3–2026Q1 | 0.32pp RMSE for both GDP growth and CPI inflation | no published counterpart |
| 68% band coverage over the same seven quarters | 14 of 14 outturns inside | — |
| Forecast-revision adding-up identity | exact per draw (max abs error 5.23e-12) | holds by construction |
The honest reading: the model was right that the 2025 inflation hump would mean-revert and wrong about its peak, by up to 0.6 points — outturns of 3.5 and 3.8% against medians of 3.2%, inside the 68% band but on its upper half. It never saw the Ofgem cap increases, food inflation, or the April 2025 administered price rises. Charts and source data below; full quarterly scorecard in the working paper.
Against a Bank of England paper, and against outturns.
Against Brignone & Piffer (2025), the one-year global-shock shares of UK forecast-error variance land within about a point of the paper's benchmarks.
papers/boe-svar/figures/comparison_numbers.json and the paper's validation table.Why the fast CI configuration lands 6–10 points off
The deliberately cheap unweighted CI configuration lands at 49.6% and 43.8% — 6–10 points off, in opposite directions for the two variables. That gap is itself informative rather than embarrassing: the importance weights correct the Arias et al. (2018) zero-restriction sampler towards the uniform-over-rotations posterior, and applying them moves both shares substantially towards the published values, though on the 2026Q1 vintage GDP still lands 2.1 points high. Both configurations sit inside the wide [30, 60]% acceptance band that CI enforces, which is chosen to catch gross regressions without being flaky to Monte-Carlo variation.
| Global share, 1-yr FEVD | Paper | CI config (fast) | Production (10k draws) | Deviation, CI / production |
|---|---|---|---|---|
| UK GDP | ~40% | 49.6% | 42.1% | +9.6 / +2.1 pp |
| UK CPI | ~50% | 43.8% | 49.5% | −6.2 / −0.5 pp |
Out-of-sample. Forecasting seven quarters ahead from a frozen 2024Q2 edge, RMSE (root-mean-square error) is 0.32pp for both GDP growth and CPI inflation (what the median got right and wrong is in the honest reading above).
Fourteen of fourteen outturns inside the 68% band is a calibration failure, not a pass — a correct 68% interval should contain roughly 9.5 of 14, and the bands are about three times wider than the errors warrant, so this is evidence of over-dispersion, not the validation win it was once presented as. But one frozen origin yields perhaps two or three effectively independent observations, so neither reading carries much weight; the test to weight is the empirical coverage across all 49 rolling origins and eight horizons below.
papers/boe-svar/figures/figure_numbers.json.Rolling-origin audit. A stricter expanding-window test evaluates 49 historical origins without future-data leakage; the full benchmark treatment is in the forecast-accuracy section below. The short version: Bank Rate is the only defensible forecasting claim, and the single frozen-edge result must not be read as broad forecast superiority.
Unemployment satellite. Unemployment is not a VAR variable; its published outlook is an Okun's-law regression of the quarterly change in the ONS unemployment rate on year-on-year GDP growth, fit 1992Q1–2025Q1 with furlough dummies for 2020Q1–2021Q2 (which otherwise attenuate the coefficient about threefold). In a 73-origin rolling test fed by the VAR's own GDP forecasts it beats no-change at horizons 1–4 (relative RMSE 0.82–0.99, excluding furlough targets, not statistically significant) and is clearly worse beyond, so the published path is capped at four quarters; the bands carry GDP-forecast uncertainty only. Full specification and skill table: okun_validation.json in the model repository.
papers/boe-svar/figures/coverage_evaluation.json, generated by make_coverage.py.Why there is no official yardstick for those forecast errors
No official counterpart exists for those RMSEs. The authors' companion paper (Staff Working Paper No. 1,165, January 2026) is a methods paper on a different, four-variable SVAR; it publishes no root-mean-squared errors, coverage rates or benchmark comparisons, so the forecast numbers here stand without an official yardstick and are reported as such.
How does it compare to other forecasters?
Three different statistics answer three different questions, and they are not averaged, ranked, or plotted on one axis: this SVAR's pseudo-out-of-sample accuracy against a naive benchmark (computed here, quarterly), the OBR's and external forecasters' own published real-time errors (cited, annual), and the OBR emulator's tracking of the official forecast (replication accuracy, not forecasting accuracy).
Bank Rate is the only robust forecasting win. CPI loses its advantage against a drift benchmark; GDP does not beat that benchmark over the full sample, and Covid dominates squared error.
Benchmark and sample diagnostics
boe-svar against a random walk, computed from our own runs
An expanding-window pseudo-out-of-sample exercise re-fits the BVAR at 49 quarterly origins (2012Q1–2024Q1, data sample 1992Q1–2026Q1) and scores forecasts one to eight quarters ahead against three naive benchmarks. A ratio below 1.0 means the model beats the benchmark.
The benchmark decides the answer. A no-change random walk on a trending log level forfeits the whole trend as forecast error, so beating it on a price index is close to uninformative. Against a random walk with drift — the textbook naive for a trending series — the CPI result largely evaporates: 0.63 becomes 0.83 at one quarter and 0.67 becomes 1.03 at eight, where the model is no longer ahead at all. The pattern in the original numbers, wins only on the two trending price series and ties or losses on the four series where a random walk is a genuinely hard benchmark, was an artefact of the benchmark rather than a finding about the model.
What survives is Bank Rate. It is the one series here that does not trend, so no-change is the right naive for it, and it is the one series that improves under the harder benchmark: 0.79 against drift at one quarter (Diebold–Mariano p = 0.018) and 0.85 at eight. On the evidence assembled here that, not inflation, is the model's defensible forecasting claim.
UK GDP is not beaten by the benchmark either. Its ratio of 1.06–1.09 is not statistically distinguishable from a random walk at any horizon (p = 0.38 to 0.67), and excluding the six origins whose target quarter falls in 2020Q1–2021Q2 it becomes 0.77 at one quarter. Under squared loss the 2020Q2 collapse dominates a 49-origin average. Both the full-sample and the excluding-Covid figures are published; neither is the preferred number.
The AR(1) comparison is reported in the source file but is
not usable at long horizons: 94.5% of its eight-step
squared error for UK GDP comes from a single origin, because an AR(1)
extrapolates the Covid collapse. The apparent 3:1 win against it is
arithmetic, not evidence. Every benchmark now carries a
worst_origin_mse_share diagnostic for exactly this reason.
papers/boe-svar/figures/rolling_evaluation.json.papers/boe-svar/figures/rolling_evaluation.json.| variable | h=1 | h=2 | h=4 | h=8 | h=1 ex-Covid (vs no-change) | ||||
|---|---|---|---|---|---|---|---|---|---|
| vs drift | vs no-change | vs drift | vs no-change | vs drift | vs no-change | vs drift | vs no-change | ||
| Bank Rate | 0.79* | 0.88 | 0.85* | 0.96 | 0.89* | 1.02 | 0.85 | 1.03 | 0.86 |
| UK CPI (level) | 0.83* | 0.63 | 0.85 | 0.62 | 0.94 | 0.66 | 1.03 | 0.67 | 0.62 |
| World CPI (level) | 0.94 | 0.73 | 0.95 | 0.68 | 1.00 | 0.69 | 1.07 | 0.67 | 0.73 |
| Oil price | 1.01 | 1.03 | 1.02 | 1.05 | 1.01 | 1.06 | 0.98 | 1.08 | 1.05 |
| CPI energy | 0.98 | 0.98 | 0.97 | 0.98 | 1.03 | 1.04 | 1.11* | 1.13 | 0.97 |
| UK real GDP (level) | 1.06 | 1.06 | 1.09 | 1.08 | 1.10 | 1.09 | 1.12 | 1.06 | 0.77 |
| World GDP (level) | 1.07 | 1.04 | 1.10 | 1.03 | 1.11 | 0.93 | 1.10 | 0.71 | 0.51 |
| Exchange rate | 1.03 | 1.04 | 1.09 | 1.11 | 1.19 | 1.22 | 1.33 | 1.41 | 1.05 |
Bank Rate crosses parity beyond h=3 (source file has all eight variables and horizons). These are quarterly, level-basis, pseudo-out-of-sample ratios computed with hindsight-final data — they are not comparable with the real-time annual-growth errors the OBR publishes, which is why they get separate tables.
What the OBR and external forecasters report about themselves
The OBR's Forecast Evaluation Report (July 2025) publishes its own real-time errors on annual growth rates since 2010, beside the median of external forecasters compiled by HM Treasury. Cited, not recomputed; the statistic is the median absolute error on annual rates, so it cannot be compared with the quarterly RMSE ratios above.
| variable · horizon | OBR | external median |
|---|---|---|
| Real GDP growth · 1 year ahead | 0.6pp | 0.6pp |
| Real GDP growth · 2 years ahead | 0.4pp | 0.4pp |
| CPI inflation · 1 year ahead | 0.3pp | 0.3pp |
| CPI inflation · 2 years ahead | 0.9pp | 0.9pp |
The nearest in-house analogue is the frozen-edge experiment above: 0.32pp RMSE on quarterly year-on-year GDP growth and CPI inflation over seven quarters. Different statistic, frequency, and origin count, so it sits beside the OBR's numbers, not against them. For the Bank of England, the only precisely sourceable comparison is the matched-vintage episode on the validation index (August 2024 MPR modal CPI of ~2.4% for late 2025 vs an outturn peak of 3.8%); the MPR publishes no RMSE-by-horizon table.
Where this departs from the Bank's model.
| limit | detail |
|---|---|
| Frozen data edge | Coefficient estimation to 2025Q1; conditioning data to 2026Q1 (refreshed July 2026). Results shift with data revisions. The replication claims are scored on the extended 1992Q1–2025Q1 sample, not the paper's original 1992Q1–2023Q2 window. |
| Proxied world aggregates | The Bank's internal UK-trade-weighted world GDP and CPI are unpublished, so they are rebuilt as chain-weighted US + euro-area + Japan + China aggregates with time-varying UK trade weights. |
| One ranking does not replicate | The paper ranks UK monetary policy as the largest domestic contributor to CPI variance; here UK supply (13.5%) exceeds monetary policy (10.1%). Attributed to the proxy world aggregates and the smaller accepted sample, and documented rather than tuned away. |
| Assumed lag length and simplified pandemic prior | p = 4 is assumed, not selected; the pandemic treatment is simplified to exogenous Covid dummies. |
| Sign-restriction critiques apply | Pointwise medians mix structural models (Fry–Pagan); the Haar prior over rotations is informative about impulse responses (Baumeister–Hamilton). These apply to the Bank's own outputs identically. |
every deviation is enumerated in the repository's
docs/methodology.md.