Quant Memo
Advanced

MIDAS and Mixed-Frequency Regression

A way to forecast a low-frequency variable (like quarterly GDP) using many lags of a high-frequency predictor (like daily credit spreads) without either throwing away the extra daily detail or estimating an unmanageable number of separate coefficients.

Prerequisites: Vector Autoregression (VAR), Matching Data Frequency to Signal Frequency

You want to forecast next quarter's GDP growth using daily credit-spread data. GDP is measured once a quarter — roughly 65 trading days per quarter's worth of daily spread observations sit between each GDP release. The naive fix is to average the daily spreads down to a single quarterly number, throwing away 64 out of every 65 daily observations' worth of timing information. The other naive fix is to include all 65 daily lags as separate regressors, which would need more parameters than you have quarters of history to estimate them with. MIDAS (Mixed Data Sampling) regression is the middle path: it keeps every daily lag in the model, but forces their coefficients to follow a smooth, low-dimensional weighting pattern instead of estimating each one freely.

An analogy: how much should yesterday matter versus a month ago

A weather forecaster predicting this week's average temperature naturally weights yesterday's reading more than a reading from three weeks ago — not by discarding the older data, and not by treating every day as equally informative either, but by applying a smoothly decaying weight that gives recent days more influence. MIDAS applies exactly this logic to economic forecasting: instead of estimating 65 separate, noisy coefficients (one per daily lag, an impossible task with limited quarterly history), it assumes the coefficients follow a smooth decay curve controlled by just two or three parameters, letting recent observations count more than older ones without discarding any of them.

The idea, one symbol at a time

A MIDAS regression forecasting a low-frequency target yty_t using a high-frequency predictor xt,kx_{t,k} (the kk-th high-frequency observation within low-frequency period tt) takes the form

yt=β0+β1k=1Kw(k;θ)xt,k+εt,y_t = \beta_0 + \beta_1 \sum_{k=1}^{K} w(k; \theta) \, x_{t,k} + \varepsilon_t,

where w(k;θ)w(k; \theta) is a weighting function — commonly an exponential Almon lag polynomial — controlled by just a small number of parameters θ\theta, and normalized so the weights sum to 1. In plain English: instead of a separate coefficient on each of the KK high-frequency lags, all KK lags share a single overall coefficient β1\beta_1, and the relative importance of lag kk versus lag kk' is set by the shape of w(;θ)w(\cdot;\theta), which typically declines smoothly as kk moves further back in time. This collapses what would be KK free parameters down to just θ\theta (often only 2 numbers) plus β1\beta_1, making estimation feasible even with a modest number of low-frequency observations.

Worked example 1: exponential weights by hand

Suppose a simplified MIDAS setup uses only the last 3 daily lags within the quarter (illustrative — a real MIDAS model typically uses far more) with an exponential weighting w(k)eθkw(k) \propto e^{-\theta k}, θ=0.5\theta = 0.5, for k=1,2,3k=1,2,3 (1 = most recent). Unnormalized weights: e0.5(1)=0.607e^{-0.5(1)}=0.607, e0.5(2)=0.368e^{-0.5(2)}=0.368, e0.5(3)=0.223e^{-0.5(3)}=0.223; summing to 1.1981.198. Normalized: 0.507,0.307,0.1860.507, 0.307, 0.186. If the last 3 daily credit spread readings were 2.1,1.9,1.72.1, 1.9, 1.7 (bps, most recent first), the MIDAS-weighted predictor value is

0.507(2.1)+0.307(1.9)+0.186(1.7)1.065+0.583+0.316=1.964.0.507(2.1) + 0.307(1.9) + 0.186(1.7) \approx 1.065 + 0.583 + 0.316 = 1.964.

This single number, 1.9641.964, then enters the regression as kw(k)xt,k\sum_k w(k)x_{t,k}, with the most recent reading (2.1) contributing more than half the total weight despite being just one of three lags.

Worked example 2: what a flatter theta changes

Now suppose cross-validation instead selects a much smaller θ=0.1\theta = 0.1 (slower decay, near-equal weighting). Unnormalized weights: e0.1=0.905e^{-0.1}=0.905, e0.2=0.819e^{-0.2}=0.819, e0.3=0.741e^{-0.3}=0.741, summing to 2.4652.465; normalized: 0.367,0.332,0.3010.367, 0.332, 0.301 — close to an equal split. The weighted predictor becomes 0.367(2.1)+0.332(1.9)+0.301(1.7)1.9140.367(2.1)+0.332(1.9)+0.301(1.7)\approx1.914, barely different from an unweighted average since the weights are nearly flat. θ\theta matters far more when recent and older lags diverge sharply — a crisis quarter with a sudden spread spike is exactly where a flat-weighted average would badly underweight the most relevant, most recent signal.

Function explorer
-2260.1
x = 1.00f(x) = 2.718

Drag the decay parameter in the explorer above — it traces the same shape MIDAS uses to weight high-frequency lags, faster decay concentrating weight on the most recent observations, slower decay spreading weight more evenly across the whole window.

65 trading days within one quarter most recent, most weight oldest, least weight → one quarterly regressor
MIDAS collapses all 65 daily observations within a quarter into a single weighted regressor, with weight declining smoothly from most recent to oldest — no daily information is discarded, but only a handful of decay parameters need to be estimated.

What this means in practice

MIDAS regression is used for nowcasting — updating a GDP, inflation, or earnings forecast in real time as new daily or weekly data arrives, well before the official quarterly figure is released — and for volatility forecasting, where realized daily volatility is used to predict a lower-frequency (say, monthly) risk measure. It sits between the two lazy extremes of "aggregate everything to the lowest frequency" and "estimate a hopeless number of separate lag coefficients," and is the standard tool whenever your predictor and target genuinely live at different sampling frequencies.

MIDAS regression forecasts a low-frequency target using many high-frequency lags of a predictor, with all those lags sharing a single overall coefficient scaled by a smooth, low-parameter weighting function — this keeps every high-frequency observation in the model without needing to estimate one free coefficient per lag.

The weighting function's shape (how fast it decays) is itself estimated from data, and with only a modest number of low-frequency observations (a few dozen quarters, say), the decay parameter can be poorly identified — a MIDAS model can end up fitting an implausible weighting pattern that happens to work in-sample but generalizes badly. Always sanity-check the estimated weight shape against economic intuition (recent data should not receive less weight than older data, for instance) rather than trusting the estimated theta blindly.

Related concepts

Practice in interviews

Further reading

  • Ghysels, Santa-Clara & Valkanov, 'The MIDAS Touch: Mixed Data Sampling Regression Models'
  • Ghysels & Valkanov, 'Forecasting Volatility with MIDAS'
ShareTwitterLinkedIn