Gradient-Boosted Realised Volatility Forecasts
Predicting tomorrow's realised volatility from more than just past volatility numbers is where gradient boosting earns its keep, folding order-book, volume and calendar signals into one nonlinear forecast that classic GARCH models can't easily absorb.
Prerequisites: Gradient Boosting as Functional Gradient Descent
Classic volatility models like GARCH forecast tomorrow's volatility mostly from yesterday's volatility and returns — a clean, well-understood recipe, but a narrow one. In practice a lot of other things move volatility too: today's trading volume, the bid-ask spread, whether an earnings announcement is due, even the day of the week. Gradient-boosted realised volatility forecasting feeds all of that in as features to a boosted-tree model, letting the data decide how each one, and their combinations, actually predicts the volatility that realizes over the next period — something a GARCH-style equation can't easily be extended to do.
The analogy: a weather forecaster who also checks the barometer
A weather forecaster who only ever looks at yesterday's temperature to predict today's is ignoring the barometer, the wind direction, and the season — all of which carry real information a temperature-only model can't use. A GARCH model is the temperature-only forecaster: it's a legitimate, disciplined baseline, but it's blind to everything except the volatility series itself. A gradient-boosted model is the forecaster who also reads the barometer: it takes in volume, spread, and calendar effects, and lets a flexible, tree-based model find how they combine.
Worked example 1: realised volatility as the training target
Realised volatility over a day is typically computed from intraday returns (say, 5-minute returns) as:
Suppose a day has just 4 five-minute returns for simplicity: . Then:
This number — annualized and scaled appropriately in practice — becomes the label the boosted model is trained to predict one day ahead, using only information available before that day started: yesterday's RV, yesterday's volume, the current bid-ask spread, and a flag for scheduled earnings.
Worked example 2: how a tree finds a volume-times-earnings interaction
Suppose historical data shows: on ordinary days, yesterday's volume has almost no relationship to tomorrow's RV. But on days with a scheduled earnings announcement, high yesterday-volume (often pre-positioning ahead of the print) is strongly associated with a much higher realized volatility the next day — nearly double the ordinary-day average. A single linear regression of RV on volume alone would average these two very different regimes into one weak, unhelpful coefficient. A boosted tree instead can split first on the earnings flag, and only then split on volume within the earnings-day branch, recovering the interaction cleanly: the first split isolates the regime, the second finds the relationship that only exists inside it.
The clustering you can see by adjusting the path above — calm stretches followed by turbulent ones — is exactly the pattern realised volatility itself shows, day to day: today's RV is not independent of yesterday's, which is why any volatility forecast, GARCH or boosted, leans so heavily on the recent past as its strongest single feature.
Gradient-boosted volatility forecasting reaches the same target — tomorrow's realized volatility — as GARCH, but does it by feeding many features (volume, spread, calendar flags, past RV) into a tree ensemble that can find nonlinear interactions among them, rather than a single fixed equation.
What this means in practice
Risk desks use these forecasts to size positions and set stop levels day to day, and to calibrate options and margin models that need a volatility number as an input. Because the boosted model is only as good as its feature set, most of the real engineering work is in building clean, leak-free features — yesterday's volume, not today's, since today's isn't known yet at prediction time — rather than in tuning the boosting algorithm itself.
The classic mistake is accidentally including a feature that peeks at information only available after the volatility being predicted has already realized — for instance, using the current day's closing volume as a feature for that same day's RV forecast. This kind of look-ahead leakage makes backtested accuracy look excellent while being completely unusable live, since the "future" feature simply won't exist yet at the time a real forecast has to be made. Every feature's timestamp must be checked against the label's timestamp before trusting any backtest result.
Related concepts
Practice in interviews
Further reading
- Engle, Autoregressive Conditional Heteroskedasticity (1982)
- Friedman, Greedy Function Approximation: A Gradient Boosting Machine (2001)