Quant Memo
Advanced

Bid-Ask Spread Decomposition

The spread is compensation for three distinct costs, order processing, inventory, and adverse selection, plus the Roll model that recovers the effective spread from the autocovariance of transaction prices alone.

Prerequisites: Expectation, Variance & Moments

Why is there a spread at all? A market maker who quoted a single price for both buying and selling would be bankrupt by lunchtime. The bid-ask spread is the price of immediacy, and decomposing it into its economic sources is one of the foundational exercises of microstructure, both because the components behave differently and because you can estimate them from data.

The three components

The quoted half-spread compensates the liquidity provider for three distinct costs:

  1. Order-processing cost. The fixed, mechanical cost of making a market: exchange fees, clearing, technology, and a normal profit for the service of immediacy. It is roughly constant per trade and independent of information, the "toll booth" component.
  2. Inventory-holding cost. A market maker who buys from a seller now holds unwanted inventory and bears price risk until it is unwound. To be compensated for that risk (and to induce mean-reverting quoting), the maker skews quotes: long inventory pushes both quotes down to attract sellers-to-them. This is the Ho–Stoll / Stoll inventory paradigm and the mechanism formalized in The Avellaneda-Stoikov Model.
  3. Adverse-selection cost. Some counterparties know something the maker doesn't. On average the maker loses to informed traders and must recover that loss from the uninformed by widening the spread. This is the Glosten–Milgrom mechanism, see The Glosten-Milgrom Model and Adverse Selection, and it is the component that makes the spread an information phenomenon, not just a cost-of-doing-business one.

These behave differently: order-processing is fixed, inventory depends on the maker's position and risk aversion, and adverse selection scales with how informed the flow is and with the underlying volatility. Empirically (Glosten–Harris, Huang–Stoll) adverse selection and order-processing together dominate, with inventory effects hardest to isolate.

The Roll model: spread from prices alone

Roll's (1984) beautiful result: you can recover the effective spread from the serial covariance of transaction-price changes, without ever seeing the quotes. Assume an efficient mid-price mtm_t that follows a random walk, and that every trade prints at the mid plus or minus half the effective spread cc, depending on whether it was buyer- or seller-initiated:

Pt=mt+c2qt,mt=mt1+ut,P_t = m_t + \frac{c}{2}\,q_t, \qquad m_t = m_{t-1} + u_t,

where qt{+1,1}q_t \in \{+1, -1\} is the trade-direction indicator (buy or sell), assumed i.i.d. with Pr(qt=+1)=Pr(qt=1)=12\Pr(q_t = +1) = \Pr(q_t = -1) = \tfrac12 and independent of the efficient-price innovation utu_t (mean zero, variance σu2\sigma_u^2). Then the transaction-price change is

ΔPt=ut+c2(qtqt1).\Delta P_t = u_t + \frac{c}{2}\,(q_t - q_{t-1}).

Compute its first-order autocovariance. The random-walk innovations are serially uncorrelated and independent of the qq's, so only the direction terms survive:

Cov(ΔPt,ΔPt1)=c24Cov(qtqt1,  qt1qt2).\operatorname{Cov}(\Delta P_t,\, \Delta P_{t-1}) = \frac{c^2}{4}\,\operatorname{Cov}\big(q_t - q_{t-1},\; q_{t-1} - q_{t-2}\big).

With i.i.d. qq's, Cov(qt,qt1)=0\operatorname{Cov}(q_t, q_{t-1}) = 0 and Var(qt)=1\operatorname{Var}(q_t) = 1, so the only nonzero piece is Cov(qt1,qt1)=1\operatorname{Cov}(-q_{t-1}, q_{t-1}) = -1, giving

Cov(ΔPt,ΔPt1)=c24.\boxed{\operatorname{Cov}(\Delta P_t,\, \Delta P_{t-1}) = -\frac{c^2}{4}.}

Invert it to get the Roll effective-spread estimator:

c^=2Cov(ΔPt,ΔPt1).\hat c = 2\sqrt{-\operatorname{Cov}(\Delta P_t,\, \Delta P_{t-1})}.

The economic content is that bid-ask bounce induces negative serial correlation in transaction prices: a buy (up-tick to the ask) tends to be followed by a sell (down-tick to the bid) purely from the mechanical bounce between quotes, even when the fundamental value hasn't moved. The magnitude of that negative autocovariance is the spread.

Worked example

You observe a stock's trade-by-trade prices and estimate the first-order autocovariance of price changes to be γ^1=0.000025\hat\gamma_1 = -0.000025 (in dollars2^2). The Roll estimate of the effective spread is

c^=20.000025=2×0.005=$0.01,\hat c = 2\sqrt{0.000025} = 2 \times 0.005 = \$0.01,

i.e. a one-cent effective spread, or a half-spread of $0.005 per share as the round-trip cost of immediacy. Note the estimator only uses transaction prices, no quote feed required, which is why Roll's measure is still used to proxy liquidity in historical or low-resolution datasets.

Failure modes and caveats

  • Positive autocovariance breaks it. In real data γ^1\hat\gamma_1 is sometimes positive (momentum, trade continuation, stale prices), making γ^1\sqrt{-\hat\gamma_1} imaginary. Practitioners then set the estimate to zero or use signed variants, a sign the model's i.i.d.-direction assumption is violated.
  • Order flow is autocorrelated. Trade signs are strongly persistent (large orders are split into child orders, so buys follow buys). This violates Cov(qt,qt1)=0\operatorname{Cov}(q_t, q_{t-1}) = 0 and biases Roll; it is also the empirical fact behind Market Impact propagators.
  • Roll conflates the components. It recovers the total effective spread, not the decomposition. Separating adverse selection from order-processing needs a richer model (Glosten–Harris regress price change on signed volume; Huang–Stoll use trade indicators at multiple lags).
  • Effective vs quoted vs realized. The quoted spread is what's displayed; the effective spread 2Ptmt2|P_t - m_t| is what you actually pay; the realized spread nets out the post-trade price move and isolates the maker's revenue after adverse selection. The gap between effective and realized is the adverse-selection component, see Adverse Selection.

In interviews

The Roll model is a favorite because it is a clean derivation with a surprising conclusion. Be ready to set up Pt=mt+c2qtP_t = m_t + \tfrac{c}{2}q_t, write ΔPt=ut+c2(qtqt1)\Delta P_t = u_t + \tfrac{c}{2}(q_t - q_{t-1}), and show Cov(ΔPt,ΔPt1)=c2/4\operatorname{Cov}(\Delta P_t, \Delta P_{t-1}) = -c^2/4, then invert to c^=2γ^1\hat c = 2\sqrt{-\hat\gamma_1}. Explain the intuition, bid-ask bounce makes transaction prices negatively autocorrelated even under an efficient midpoint. Expect the follow-up "name the three components of the spread and which one makes it an information story", the answer is order-processing, inventory, and adverse selection, with adverse selection being the informational one that links to The Glosten-Milgrom Model.

Related concepts

Practice in interviews

Further reading

  • Roll (1984), A Simple Implicit Measure of the Effective Bid-Ask Spread
  • Glosten & Harris (1988), Estimating the Components of the Bid-Ask Spread
  • O'Hara, Market Microstructure Theory
ShareTwitterLinkedIn