Back to Research
Volatility & Risk September 10, 2026 • 11 min read

Volatility Is Forecastable: The HAR Model and the Long Memory of Risk

Returns are famously hard to predict. Volatility is not. It is one of the most forecastable quantities in all of finance — it clusters, it persists, and its memory fades slowly enough to see coming. The trick is capturing that memory without drowning in parameters. The HAR model does it with three numbers.

1. The one thing markets let you forecast

Tomorrow's return is close to a coin flip; tomorrow's volatility is not. Quiet days cluster with quiet days and turbulent days with turbulent days — volatility clustering, the single most robust empirical regularity in financial time series. Feed a stream of high-frequency returns into a realized-variance estimator and you get a daily measure of how much the market actually moved. Plot it, and the persistence is unmistakable: today's realized variance tells you a great deal about tomorrow's. The question is not whether volatility is forecastable — it is — but how to model its memory without over-fitting.

2. Long memory, and why simple models miss it

Volatility's memory is not just long, it is slowly decaying: the influence of a turbulent day fades not over a day or two but over weeks, tapering gradually rather than dropping off a cliff. Statisticians call this long memory, and it is awkward to model. A short-memory model — regress today's variance on yesterday's and stop — throws away the weeks-long tail and is perpetually a step behind a regime change. At the other extreme, formal long-memory models (fractionally integrated processes) fit the decay properly but are fiddly to estimate, hard to interpret, and easy to mis-specify. For years that was the trade-off: too simple, or too baroque.

3. The HAR idea: three horizons, three kinds of trader

Fulvio Corsi's Heterogeneous Autoregressive model (2009) resolves the trade-off with a piece of economic intuition. Markets are not populated by one representative agent; they are a mix of participants acting on different horizons — a day trader reacting to yesterday, a portfolio manager rebalancing weekly, a pension fund moving over a month. Each cares about volatility measured over their horizon, and each feeds a little of it back into the next day's price moves. So instead of modelling the awkward long-memory decay directly, Corsi approximates it with three simple averages of past realized variance:

RVₜ₊₁ = β₀ + β_d·RVₜ(d) + β_w·RVₜ(w) + β_m·RVₜ(m) + εₜ

where RV(d) is yesterday's realized variance, RV(w) the average of the last five days, and RV(m) the average of the last twenty-two. Three regressors and an intercept — a plain linear regression anyone can fit — and the superposition of a short, a medium, and a long average reproduces the slow, gradual decay that a single lag cannot. It is long memory faked convincingly with parsimony.

4. Why a fake beats the real thing

The HAR model is not, strictly, a long-memory process — it is a short-memory model whose three timescales mimic one. And in practice the mimic wins. It is trivial to estimate (ordinary least squares), impossible to mis-specify in the way a fractional model can be, and it forecasts realized volatility as well as or better than far more elaborate alternatives across equities, currencies, commodities, and crypto. That combination — cheap, robust, and hard to beat — is why HAR became, and remains, the benchmark every new volatility-forecasting paper is measured against. When a three-line regression is the model to beat, elegance has done its job.

5. Reading the coefficients

Fit HAR on real data and the coefficients tell a consistent story: all three load positively — yesterday, last week, and last month each add genuine, separately-weighted information — and they sum to a number a little below one. Corsi's original finding, replicated across markets ever since, is exactly that pattern. The daily term usually carries the most weight (recent news matters most), but the weekly and monthly terms are far from redundant; strip them out and the forecast degrades. The sub-one sum is mean reversion made quantitative: volatility is pulled back toward its long-run level, and how far below one the coefficients sum tells you how fast. A sum close to one is a market whose turbulence lingers; a smaller sum, one that calms quickly.

6. What it needs to work

HAR is only as good as the realized variance you feed it. That input is itself an estimate, and a noisy one if built carelessly — microstructure noise inflates naive realized variance, and price jumps contaminate it with moves that do not persist the way ordinary volatility does. Corsi and others extend the basic model to separate the continuous and jump parts of variance (the HAR-RV-CJ family) precisely because jumps forecast differently from diffusive volatility. So the honest pipeline is: estimate realized variance well first — noise-robust, jump-aware — then let HAR do the forecasting. Garbage in, forecast out. And like any regression fit on a rolling history, it needs enough observations to pin four coefficients down; a handful of days will not do.

7. Computing it

Our open-source orderflow-metrics library ships HAR-RV, dependency-free, in TypeScript and Python — the ordinary-least-squares fit included, no linear-algebra library required:

import { harForecast, harComponents } from "orderflow-metrics";

// a history of per-period realized variances, oldest → newest
const rv = [
  0.8, 1.0, 0.9, 1.2, 1.1, 0.7, 0.6, 0.9, 1.3, 1.5, 1.2, 1.0, 0.8, 0.9, 1.1,
  1.4, 1.6, 1.3, 1.1, 0.9, 0.7, 0.8, 1.0, 1.2, 1.5, 1.7, 1.4, 1.2, 1.0, 1.1,
  0.95, 1.25, 1.35, 1.05, 0.85, 0.9, 1.15, 1.45, 1.55, 1.2, 1.0, 0.9, 1.1, 1.3, 1.25,
];

const { forecast, coefficients } = harForecast(rv);
forecast;       // ≈ 1.27 — next-period realized variance
coefficients;   // { intercept, daily, weekly, monthly } — the fitted β's

harComponents(rv); // { daily, weekly, monthly } — the three averages the forecast is built from

`harForecast` builds the daily/weekly/monthly regressors over the whole history, fits the model by least squares, and applies it to the tail of the series to produce the one-step-ahead forecast — here about 1.27 — alongside the fitted coefficients. `harComponents` exposes the three averages that go into it, so you can see exactly what the forecast is reacting to. The Python distribution exposes the same functions (har_forecast, har_components), and the window lengths (5 and 22 by default) are configurable. They sit beside the realized-variance, jump, and noise-robust tools inside the wider market-microstructure toolkit we build in the open — install it from our open-source page (npm and PyPI, MIT-licensed).

8. Conclusion

Volatility is the rare thing markets let you see coming, and the HAR model is the reason a forecast of it need not be complicated. Three averages of the past — a day, a week, a month — stand in for the slow decay of risk and for the mix of traders who create it, and a plain regression turns them into tomorrow's number. It is not the fanciest model of volatility; it is the one that is hard to beat, which is a better thing to be. Explore the rest of the toolkit in our quantitative research library, or read the implementation in our open-source metrics.

For more on volatility analytics and open-source tooling, visit our official resources:

🧩 Open Source 💻 orderflow-metrics on GitHub 📚 More Research