Roll implied spread

The Roll implied spread is an estimate of the effective bid-ask spread computed from price changes alone. Richard Roll showed in 1984 that when trades bounce between bid and ask in an efficient market, successive price changes have a negative autocovariance, and the spread equals twice the square root of minus that autocovariance.

Senzoukria · Glossary · Updated September 2026


The formula

Let γ be the first-order autocovariance of successive price changes over a window. If γ is negative, the Roll estimate of the spread is S = 2 × √(−γ). If γ is zero or positive, the model has no answer: the square root of a positive number's negative does not exist, and the estimate is undefined. The paper is Roll, 'A simple implicit measure of the effective bid-ask spread in an efficient market', Journal of Finance, 1984.

Why it works

Suppose the true value does not change and trades alternate randomly between the bid and the ask. A trade at the ask is followed, on average, by a lower price, and a trade at the bid by a higher one. Consecutive price changes therefore tend to reverse, and the size of that reversal is tied to the spread. The estimator reads the spread from the reversal. Anything else that makes prices reverse, such as mean reversion after a shock or an order split into pieces, is also counted as spread.

A worked example

Over a window, the autocovariance of consecutive changes in the close is −0.015625 squared points. Then S = 2 × √0.015625 = 2 × 0.125 = 0.25 points, which is one tick on a contract with a 0.25 tick. If the next window trends steadily, its autocovariance can turn positive and the estimate disappears for that window rather than falling to zero.

In Senzoukria

Roll Implied Spread is a pane indicator in the Quantitative group. Its 'Window (price changes)' is 100 by default, from 10 to 2,000, and its 'Unit' can be Ticks (the default), Price or Basis points. The 'When autocovariance ≥ 0' setting chooses between 'Gap (undefined)', the default, and 'Zero (Harris 1990)', the convention of studies that average the estimator over many windows. A 'Return definition' setting uses close differences or log returns. Changes are centered on the window mean, so that drift is not counted as bounce, and a window with missing data produces no value. The indicator reads bar closes, not the order book, and its own description states that it says nothing about the spread displayed at a given instant.

Common mistakes

  • Reading the gap as a zero spread. An undefined estimate means the window did not behave as the model assumes.
  • Comparing estimates across bar sizes: bar closes of one-minute and five-minute bars mix different amounts of genuine price movement with the bounce.
  • Treating a large estimate during a sharp reversal as a wide spread; it may be mean reversion counted as bounce.

In the same section

This page in other languages

Frequently asked questions

Why is the Roll estimate so often missing?
Because real price changes are frequently positively autocorrelated over a window, in trends or when information arrives, and the model is then undefined. Leaving a gap is the honest output; replacing it with zero is a convention some studies use when averaging many windows, and Senzoukria offers it as an option.
Is the Roll spread the same as the quoted spread?
No. It is an estimate of the average effective spread over the window, inferred from how trade prices bounce. On a futures contract whose quoted spread is almost always one tick, it can come out above or below one tick depending on how much reversal the window contains.

Keep reading