Quant Memo
Core

The Corwin-Schultz High-Low Spread Estimator

A way to estimate a stock's bid-ask spread using only daily high and low prices, exploiting the fact that a wider true spread inflates the observed high-low range more over one day than over two.

Prerequisites: Bid-Ask Spread Decomposition

Effective bid-ask spreads are usually estimated from trade-level or quote-level data, but that data is expensive, noisy, or simply unavailable for long historical stretches — daily high and low prices, by contrast, exist for almost every stock going back decades. The Corwin-Schultz estimator recovers an approximate spread from nothing but those two daily numbers.

The key insight is a scaling argument. The observed daily high-low range reflects two things: the stock's true price volatility over the day, and the bid-ask bounce (trades ricocheting between the bid and the ask add extra apparent range on top of the true price movement). Volatility scales with the square root of time, so the true-price component of a two-day range grows by roughly 2\sqrt{2} relative to a one-day range. The bid-ask bounce component, however, doesn't compound the same way across the two days as it does within a single day. By comparing the sum of two single-day squared log high-low ranges against one two-day squared high-low range, Corwin and Schultz solve for the piece of the range attributable to the spread alone, back out an implied percentage spread, and average it into a rolling estimate over the sample.

The estimator is not exact — it can occasionally produce a negative implied spread on a quiet day, which is simply floored at zero in practice — but it correlates well with spreads measured from actual quote data and is widely used to build long historical liquidity time series, such as an approximate cost-of-trading history for a stock going back to before intraday data was even recorded.

The Corwin-Schultz estimator infers a stock's bid-ask spread from daily high and low prices alone, using the fact that true volatility scales with the square root of time while the bid-ask bounce component does not, making it possible to build decades-long liquidity histories where only high-low data survives.

Related concepts

Practice in interviews

Further reading

  • Corwin & Schultz, A Simple Way to Estimate Bid-Ask Spreads from Daily High-Low Prices (2012)
ShareTwitterLinkedIn