Models / BoE SVAR

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.

01 — what it is

The Bank's own empirical lens, replicated in the open.

In July 2025 the Bank of England published Macro Technical Paper No. 3 — A structural VAR model for the UK economy — with no replication package. This project re-implements the full pipeline in Python: data assembly from public sources, Bayesian estimation, identification, and every output figure, validated against the paper's published results.

Within the suite it is the empirical, time-series member — and the baseline/conditioning member. It imposes just enough structure to name the shocks hitting the economy and to say how uncertain the baseline is, before you simulate changing it with the structural members.

Current boe-svar UK real GDP growth forecast Fan chart from the latest complete quarterly data edge, 2026Q1, forecasting 2026Q2 to 2029Q2. Median with 68 and 90 percent predictive bands. Current forecast from 2026Q1 · year-on-year % -1% +0% +1% +2% +3% +4% 90% / 68% bands · median 2026Q2 2027Q2 2028Q2 2029Q2
Live-facing forecast, distinct from the frozen 2024Q2 validation experiment. Data through 2026Q1; forecast begins 2026Q2. 3,000 posterior draws, 244 accepted; five stochastic paths per accepted draw. Source and provenance: papers/boe-svar/figures/current_forecast.json.
02 — how it works

Eight variables, six named shocks.

A VAR in eight quarterly variables — three global, five UK — estimated over the inflation-targeting era — 1992Q1–2025Q1 in both the paper replication and the hosted adapter. The hosted forecast conditions on observations through 2026Q1, but does not re-estimate its coefficients on those later observations. It is estimated in levels, with p = 4 lags and Covid dummies for 2020Q1–2021Q2.

The eight variables of the SVAR, by block
blockvariables
Global World GDP · World CPI (both UK-trade-weighted) · real oil price in sterling
UK Bank Rate · sterling exchange-rate index · CPI · CPI energy · real GDP

Estimation is Bayesian with a Minnesota (normal-inverse-Wishart) prior plus sum-of-coefficients and dummy-initial-observation priors. Identification follows Arias–Rubio-Ramírez–Waggoner (2018): zero restrictions make the UK a small open economy (UK shocks cannot move world variables on impact) and impact sign restrictions name six structural shocks — world demand, world energy, world supply, UK demand, UK supply, and UK monetary policy. Two unidentified shocks absorb residual volatility. Importance weights correct the sampler's non-uniformity and the Chan–Matthes–Yu (2025) permutation search cuts rejections.

This is accept/reject sampling. The production run drew 10,000 posterior (Π, Σ) draws, of which 751 passed the sign restrictions (7.5%), for an importance-weighted effective sample size of 355.9 — so medians and bands are correct but noisier than the paper's. The hosted forecast conditions on the current vintage — data through 2026Q1 — with a 2,000-draw default (135 accepted, ESS 65.3), while retaining the 2025Q1 coefficient-estimation endpoint.

03 — how to run it

Estimate, identify, decompose.

The package installs straight from GitHub with the prepared quarterly dataset inside, so boe_var.data.load_data() works immediately with no credentials. Every input series is public: ONS (CPI, CPI energy, real GDP), Bank of England (Bank Rate, sterling ERI), and FRED (oil, exchange rates, world components).

pip install git+https://github.com/PolicyEngine/boe-var-model

The runner scripts are for development — clone the repository to rebuild the dataset or regenerate the paper outputs:

python scripts/download_data.py     # reassemble the public data

# the paper's core outputs: IRFs, FEVDs, shocks, historical decompositions
python scripts/run_replication.py

# the forecasting toolkit: fan charts, latest-quarter shock distributions,
# composite IRFs, and the forecast-revision decomposition
python scripts/run_forecast_revision.py

outputs land in results/ — the replication figures (fig2–fig6) plus the forecast figures (fig1, fig7–fig9) and two summary reports. runtime scales with draw count; the importance weights are the expensive part, since each needs a numerical Jacobian per accepted draw.

04 — what it can answer

What's happening now, and why.

Four tools, all posterior distributions rather than point estimates:

The SVAR toolkit and what each output tells you
toolwhat it tells you
IRFs & FEVDs How each named shock propagates through the UK economy, and how much of GDP and inflation variance each explains at every horizon.
Historical decompositions Which shocks drove each episode — how much of the 2022 inflation surge was world energy versus UK demand.
Fan-chart forecasts Unconditional forecasts with 68% and 90% credible bands, plus the probability that each shock hitting the latest quarter was positive or negative.
Forecast-revision decomposition The paper's Section 5 exercise: why did the forecast change since last quarter? Splits the revision into news (new shocks) and reassessment via composite impulse responses.

In the current 2026Q1 round the tool reads the latest quarter as most likely hit by negative world-demand (probability 0.71) and world-energy (0.90) shocks, against positive UK demand (0.81) and expansionary monetary policy (0.84); the composite effect revises the year-on-year path by +0.27pp on GDP growth at impact and +0.22pp on CPI inflation at its peak three quarters out.

It does not score reforms, and it won't. Mapping a policy reform into identified structural innovations is conceptually dubious, not merely unbuilt. For reform scoring use the OBR emulator (short-run, fiscal) or the OLG model (long-run, structural). This model tells you what you are scoring against.
05 — how far to trust it

Replicates the paper; beat by outturn on its own frozen forecast.

Two independent checks. First, against the published paper: Figures 2–6 replicate and the headline variance decompositions land on the paper's benchmarks. Second — and rarer — the 2024Q2-frozen forecast study can be scored against ONS outturns that have arrived since, a genuine out-of-sample test that only exists because the data edge is frozen.

This replication against Brignone & Piffer (2025), check by check
checkthis replicationthe 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
out-of-sample RMSE 0.32pp GDP growth and CPI, 7 quarters from a frozen edge
68% band coverage 14/14 no outturn escaped even the 68% band
tests comprehensive estimation, identification, and analysis coverage

The honest reading of the forecast score: 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 in validation; full quarterly scorecard in the working paper.

This is an independent replication built from Bank of England Macro Technical Paper No. 3 and public data. It is not produced, maintained, or endorsed by the Bank of England, and its results should not be presented as Bank of England estimates.

06 — limits

Where this departs from the Bank's model.

Known limits of the structural VAR replication
limitdetail
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.

07 — sources

The paper, the code, the method.

Where the SVAR's inputs and outputs live
whatwhere
The source paper Macro Technical Paper No. 3 — Brignone & Piffer, Bank of England, July 2025.
Companion paper Brignone & Piffer, structural forecast analysis — the Section 5 forecast-revision method, later BoE Staff Working Paper No. 1,165 (January 2026).
Our working paper papers/boe-svar — the full replication write-up, quarterly forecast scorecard, and enumerated deviations.
This replication github.com/PolicyEngine/boe-var-model — code, prepared data, figures, and the annotated RESOURCES.md.
Method papers Arias, Rubio-Ramírez & Waggoner (2018) — zero/sign identification · Chan, Matthes & Yu (2025) — permutation-search speedup · Giannone, Lenza & Primiceri (2015) — the prior framework.
Reference toolboxes bsvarSIGNs (R, the exact Arias et al. machinery) · ECB BEAR · Cesa-Bianchi VAR-Toolbox — used in the independent econometrics review, which caught and fixed a genuine bias in the zero-restriction importance weights.