Big-Data VARs — Factor Augmentation & Large-Scale Stochastic Volatility

Python · R · Part 9 of the VAR arc — shrink vs compress

Overview

Part 9 of the VAR arc: letting a VAR see the whole economy. Two strands of the series have run separately — Part 3 built a large VAR disciplined by Minnesota shrinkage but with a constant shock covariance; Parts 4–5 added stochastic volatility and drifting coefficients, but only on a tiny 3-variable system. Real applications need both at once, and there are two complementary routes to big data: shrink or compress. This example builds each from scratch. 9a — the large SV-VAR keeps all the variables and shrinks (Carriero–Clark–Marcellino 2019): stochastic volatility on a 10-variable BVAR, feasible because the triangular factorization splits the covariance into mm univariate SV problems. 9b — the Factor-Augmented VAR (Bernanke–Boivin–Eliasz 2005) takes the opposite route: summarise a 169-series macro panel by a handful of principal-component factors, put those in a small VAR, and recover the impulse response of every underlying series through its factor loadings.

Xt=ΛFFt+ΛRRt+et,Aεt=ut,  ui,tN ⁣(0,ehi,t),  hi,t=hi,t1+ηi,tX_t = \Lambda^F F_t + \Lambda^R R_t + e_t, \qquad A\,\varepsilon_t = u_t,\ \ u_{i,t}\sim\mathcal N\!\big(0,\,e^{h_{i,t}}\big),\ \ h_{i,t}=h_{i,t-1}+\eta_{i,t}

Two routes to big data — shrink (9a) and compress (9b)

9a — large BVAR-SV. A 10-variable VAR(2) in stationary macro series carries the triangular SV structure of Part 4 to all ten equations: a constant unit-lower-triangular AA orthogonalises the shocks into ten independent components, each with its own random-walk log-volatility hi,th_{i,t}. The key to feasibility is that conditional on AA, the mm equations' volatilities separate into mm univariate stochastic-volatility problems — the Carriero–Clark–Marcellino insight — so the whole coefficient block (Minnesota prior), AA, and the 10×T10\times T volatility surface sample jointly by NUTS in minutes. 9b — FAVAR. A large panel XtX_t of n=169n=169 informational series is driven by KK latent factors FtF_t plus the policy rate RtR_t; the Bernanke–Boivin–Eliasz two-step extracts FtF_t as principal components, fits a small VAR on [Ft,Rt][F_t, R_t], and identifies the monetary shock recursively with the rate ordered last — cleaned by the slow–fast correction (factors from the slow-moving real/price block are purged of contemporaneous rate response). The response of any series xix_i is then reconstructed from its loading, IRF(xi)=ΛiIRF([F,R])\text{IRF}(x_i)=\Lambda_i\,\text{IRF}([F,R]).

Results

9a — a common macro-uncertainty factor. Every one of the ten macro shock volatilities collapses at the Great Moderation (~1984) and spikes around the 2008 crisis (most sharply in the real-activity shocks); the constant-variance VAR sits uselessly in the middle, and the log-likelihood rises ~510 moving to SV. The by-product only a large SV system can deliver: the first principal component of the ten volatilities explains 73% of their comovement — the macro system has essentially one common volatility factor that rises in every recession and falls through the Great Moderation, a model-based macroeconomic-uncertainty index (à la Jurado–Ludvigson–Ng). A 3-variable VAR cannot tell common from idiosyncratic volatility. 9b — one VAR, the response of everything. A tightening contracts output, consumption, investment, industrial production and employment (troughs ~−0.1 std), raises unemployment, and cools housing — a coherent economy-wide contraction recovered from a single four-factor VAR, the response of dozens of series rather than the three or ten a VAR can hold directly. Consumer prices show a mild, transient price puzzle that the slow–fast identification tames but does not fully remove (as in BBE's own results) — the richer information set shrinks the puzzle a small VAR would show. Two answers to one problem: shrinkage preserves every series as a modelled object with its own volatility; the factor route buys a far larger information set and a comprehensive impulse-response picture at the cost of treating series as loadings on a few factors. Each is cross-checked in R (vars; stochvol).

Notebooks

Downloads

References