How Do I Handle Missing and Mixed-Frequency Data in My VAR?
Based on Chan, Poon and Zhu (2023)
[ Journal Version | Working Paper | Full tutorial on GitHub ]
Chan (2020)
[ Journal Version | Working Paper | Code ]
In this tutorial we estimate a VAR on data with three kinds of missing values: series published only quarterly, values that were never published, and the months at the end of the sample that no quarterly value covers yet. The quarterly series are US real GDP and real private fixed investment. Following Schorfheide and Song (2015), the VAR is specified at the monthly frequency, and the monthly values of each quarterly series are treated as missing data, tied to the published quarterly growth rates by the log-linear aggregation of Mariano and Murasawa (2003). Given the parameters, the missing values are jointly Gaussian with a banded precision matrix, so Chan, Poon and Zhu (2023) draw all of them in one block. We use the model and priors of their first application, a VAR with common stochastic volatility, on five monthly FRED-MD series and the two quarterly series from 1959 to 2026.
Monthly GDP falls by 7.92 percent in April 2020, with a 90% credible band from −13.3 to −2.8 percent, and grows by 4.22 percent in June. Over 1960 to 2026 the estimated monthly growth rates have a correlation of 0.93 with the Brave-Butters-Kelley series, which comes from a collapsed dynamic factor model (Figure 1). The same draw fills in the values that were never published: the unemployment rate for October 2025 is estimated at 4.43 percent.

Figure 1: Monthly growth of US real GDP, 100 times the log change, 2006:01–2026:07: the posterior mean (black) and 68% credible band (gray) from the mixed-frequency VAR, and the Brave-Butters-Kelley series (orange, dashed), divided by 12 to put its annualized rate in the same units.
Try it
In MATLAB, from the root of a copy of bvar-toolkit:
run tutorials/mixed_frequency/your_data.m: the same model from 1990 with short chains, the monthly estimates of GDP and investment, and a report (about a minute)run tutorials/mixed_frequency/build.m: every number and figure in the full tutorial (about 25 minutes)