Large Bayesian VAR

Python · R · Part 3 of the VAR arc

Overview

Part 3 of the VAR arc: scale. Parts 1–2 kept the VAR small (3–5 variables) so every coefficient could be read — but macroeconomists rarely believe the world is 3-dimensional, and a small VAR that omits relevant variables can mistake an omitted-variable correlation for a structural one (part of Part 2's price puzzle). The natural fix — add more variables — runs into over-parameterization: an mm-variable VAR with pp lags has m(1+mp)m(1+mp) coefficients, growing with the square of mm. The 20-variable, 4-lag FRED-QD system here has 1,620 coefficients against ~240 observations. This example reproduces Bańbura, Giannone & Reichlin's (2010) result — that the same bvar.py Minnesota shrinkage, tightened as the system grows, turns an unusable large VAR into a competitive one.

#coefficients=m(1+mp)20(1+204)=1,620 vs  ⁣240 observations\#\,\text{coefficients} = m(1 + mp) \quad\Rightarrow\quad 20\,(1 + 20\cdot 4) = 1{,}620 \ \text{vs} \ \sim\!240 \ \text{observations}

Why the big VAR needs shrinkage

The failure of a big unrestricted VAR is a bias–variance problem, not a "curse of dimensionality" (that term is reserved for costs growing exponentially in the dimension; here the coefficient count grows only quadratically, and OLS stays estimable and consistent). Least squares can fit 1,620 coefficients, but each is mostly estimation noise — and the macro series are highly collinear and near-unit-root, so the regressor matrix is badly conditioned and the noise compounds through the forecast iteration. The fix is to shrink harder as mm grows: the BGR rule sets the overall Minnesota tightness λ1\lambda_1 so that the large model's in-sample fit matches a fixed small benchmark. The R cross-check instead chooses λ1\lambda_1 by maximising the marginal likelihood (the fully-Bayesian route) — a completely different mechanism that lands on the same shrink-with-size pattern, confirming it is real.

Results

Unrestricted OLS breaks down as the system grows — the 20-variable OLS VAR is the worst forecaster everywhere, 1.3–1.9× the AR(4) benchmark for output and prices and a catastrophic 2.5× for the funds rate (worst exactly on the one target whose dynamics differ from the near-random-walk crowd, where the ill-conditioning bites hardest). The same 20 variables under shrinkage are competitive: swapping OLS for the BGR-tightened Minnesota prior — nothing else changes — collapses the relative RMSE to 1.0–1.4, right back into the pack with the small models. The lesson: the 1,620 coefficients are a liability or an asset depending entirely on whether they are disciplined — shrinkage, not the variable count, is what matters. Trained only through 2004, the large BVAR then tracks GDP, the deflator, and the funds rate within its 68% bands over the next two years. Cross-checked in R (the BVAR package, λ1\lambda_1 by marginal likelihood).

Notebooks

Downloads

References