Quant Memo
Advanced

Intraday Variance Ratios

If price moves were purely random, variance would scale exactly with time — an hour would show four times the variance of 15 minutes. Comparing the actual ratio to that benchmark reveals mean reversion, momentum, or bid-ask noise inside the trading day.

Prerequisites: Bid-Ask Bounce, Autocorrelation and Serial Correlation

If a stock's price genuinely follows a random walk — each tiny move independent of the last, like a drunk person's steps — then variance should scale linearly with the length of the time window. Watch it for twice as long and you should see exactly twice the variance. But real intraday prices don't behave that cleanly: sometimes a stock zigzags on tiny timescales (a bid gets hit, then the ask, then the bid again) in a way that looks jumpy over one minute but oddly calm over an hour, because the zigzags cancel out. Other times a stock trends within the day, so the hourly variance is more than four times the 15-minute variance, because moves keep compounding in the same direction rather than cancelling. The variance ratio test is how you catch which of these is happening.

The analogy is a coin-flipping machine that's supposed to be fair. If you track the running total of heads-minus-tails over many flips, a fair coin's total should wander away from zero at a very specific, predictable rate — proportional to the square root of the number of flips. If it wanders away faster than that, something is pushing it in one direction (a biased coin, i.e. momentum). If it wanders away slower, something is pulling it back toward zero (a coin that somehow "remembers" and corrects, i.e. mean reversion).

Define the variance ratio comparing a long horizon kk (say, one hour) to a short horizon of 1 (say, one minute):

VR(k)=Var(rt(k))kVar(rt(1))VR(k) = \frac{\text{Var}(r_t^{(k)})}{k \cdot \text{Var}(r_t^{(1)})}

where rt(k)r_t^{(k)} is the return over kk short periods and rt(1)r_t^{(1)} is the return over one short period. In words: take the variance of long-horizon returns, divide by kk times the variance of short-horizon returns — under a pure random walk this ratio should equal exactly 1, because variance is supposed to scale linearly with time. VR(k)<1VR(k) < 1 means the price is mean-reverting at that horizon (moves partially cancel out over longer windows — variance grows slower than it should). VR(k)>1VR(k) > 1 means the price is trending or momentum-driven (moves reinforce each other — variance grows faster than it should).

Worked example. One-minute returns on a stock have a variance of Var(r(1))=0.0001\text{Var}(r^{(1)}) = 0.0001 (in squared-percent units). Over a 30-minute window, if returns were truly independent, the 30-minute variance should be 30×0.0001=0.003030 \times 0.0001 = 0.0030. Suppose the measured 30-minute variance is actually 0.00210.0021. Then VR(30)=0.0021/0.0030=0.70VR(30) = 0.0021 / 0.0030 = 0.70. A ratio of 0.70, well below 1, says the stock is exhibiting meaningful mean reversion at the half-hour horizon — consistent with a market-making crowd absorbing order flow and pushing price back toward fair value faster than a pure random walk would predict.

Second example, momentum instead. A different, more volatile name: one-minute variance Var(r(1))=0.00005\text{Var}(r^{(1)}) = 0.00005. Over a 60-minute window the naive random-walk prediction is 60×0.00005=0.003060 \times 0.00005 = 0.0030, but the measured 60-minute variance is 0.00480.0048. VR(60)=0.0048/0.0030=1.60VR(60) = 0.0048 / 0.0030 = 1.60. That's momentum: price moves are reinforcing each other over the hour, consistent with, say, a slow institutional order working through the day and pushing the price steadily in one direction, or with intraday news that takes time to be fully priced in.

horizon k VR = 1 mean reversion (VR<1) momentum (VR>1)
A pure random walk holds VR = 1 at every horizon. Real intraday series often dip below 1 at short horizons (bid-ask bounce, market-making) and can rise above 1 at longer horizons if a persistent order or trend is present.

What this means in practice

Variance ratios are a diagnostic, not a trading signal by themselves, but they tell you what kind of strategy could work on a given name and timescale. A ratio persistently below 1 at short horizons suggests short-horizon mean-reversion or market-making opportunities; a ratio above 1 at medium horizons suggests momentum or trend-following has room to work. They're also used defensively: a backtest that looks great at one bar frequency and falls apart at another is often just picking up a variance-ratio artifact rather than a real edge.

VR(k)=Var(r(k))kVar(r(1))VR(k) = \dfrac{\text{Var}(r^{(k)})}{k \cdot \text{Var}(r^{(1)})}. Equal to 1 under a pure random walk; below 1 signals mean reversion; above 1 signals momentum, at whatever horizon kk you measured.

The classic confusion

At very short horizons (seconds to a couple of minutes), a variance ratio below 1 is very often bid-ask bounce, not genuine mean reversion — trades alternate between hitting the bid and the ask even when the underlying fair value hasn't moved at all, which mechanically inflates one-period variance and deflates the ratio. This is market microstructure noise, not a tradeable mean-reversion signal, and it evaporates the moment you account for transaction costs of trading at the bid-ask spread. Genuine, tradeable mean reversion needs to be checked at horizons long enough (often 10+ minutes) that bounce has washed out.

Variance ratios are closely related to Hasbrouck's Pricing Error Variance, which separates the same noise from the true efficient-price variance using a different decomposition, and to Bid-Ask Bounce, which is the leading mechanical cause of a short-horizon VR below 1.

Related concepts

Practice in interviews

Further reading

  • Lo & MacKinlay (1988), Stock Market Prices Do Not Follow Random Walks
  • Campbell, Lo & MacKinlay, The Econometrics of Financial Markets
ShareTwitterLinkedIn