← Back to Projects

Quant Macro Engine

BVAR posterior forecasts become Black-Litterman views with the forecast covariance as view uncertainty, so model uncertainty reaches position sizing.

Capability: Macro engine
Category: Macro Systems
Date: July 2026

At a glance

Views into Black-Litterman
BVAR posterior
Conditional forecasts
Waggoner–Zha
DFAST 2026: BVAR vs Fed trough GDP
−2.9% vs −4.6%
BVAR conditional forecast under the published severely adverse DFAST assumptions
Conditional forecast under the published 2026 severely-adverse path: GDP growth, inflation, unemployment and the 3-month bill, baseline versus scenario with 90% bands.

About this project

An end-to-end macro pipeline on public data (FRED, BEA, OECD, ACM term premium, ECB): preprocessing, a dynamic-factor nowcast, Kalman latent states, a Minnesota-prior BVAR with a scenario engine, an HMM regime classifier on BVAR residuals, an inflation block, a Taylor-rule implied path, derived signals, and a Black-Litterman layer that consumes BVAR posterior forecasts as views. The add-ons module contributes Waggoner-Zha conditional forecasting with hard and soft conditions, a stationary block bootstrap with step-down multiple-testing correction, a market-making P&L simulator, and a worked Fed DFAST 2026 severely-adverse scenario.

Why it matters

Most macro code stops at a forecast. A desk needs the forecast conditioned on a published policy path, with uncertainty that reflects estimation as well as shocks, and a way to turn it into positions. The engine is built around those handoffs.

Methodology

  • Minnesota BVAR via dummy observations (Banbura, Giannone and Reichlin 2010) with Normal-inverse-Wishart posterior sampling; HMM regimes on residuals; ACM term premium and Taylor-rule layers.
  • Black-Litterman with BVAR posterior means as views and forecast covariance as the view-uncertainty matrix.
  • Conditional forecasts by Waggoner and Zha (1999): hard conditions written on future structural shocks, soft conditions by rejection sampling, parameter uncertainty propagated from a posterior sample.
  • Stationary bootstrap (Politis and Romano 1994) with a step-down maximum-statistic correction; calibrated on iid noise (false-positive rate 0.03) and on twelve junk factors (no survivors).

Strongest findings

  • Imposing the Fed’s published 2026 severely-adverse assumptions (unemployment to 10%, 3-month bill to 0.1%) on a BVAR estimated through 2026Q1 implies real GDP falls 2.9% to trough with a 90% band of −8.6 to +3.1, against the Fed model’s −4.6%: inside the band, a weak test rather than a validation, and milder because a linear VAR misses the Okun asymmetry.
  • Hard conditions are met to 1e−8 on every draw; conditioning visibly moves unconstrained variables; posterior draws widen the bands as they should.

Robustness and caveats

  • An engine and a set of tested modules rather than a single empirical study; the VAR lab and the DSGE project carry the research findings.
  • The market-making simulator’s Sharpe is implausibly high by construction (guaranteed arrivals, no queue); the shape of the adverse-selection trade-off is the output, not the level.

Challenges

Writing conditional forecasts on the shocks rather than overwriting the path, propagating posterior uncertainty through to scenario bands, and wiring model uncertainty into a portfolio layer without discarding it at the handoff.

Learnings

Bayesian macro time-series as infrastructure: the value is in the handoffs between models, scenarios and positions.

Stack

PythonNumPypandasFREDBEAOECDECB