Skip to content

Adverse Selection and Informed Trading: The Glosten-Milgrom Model

Why do spreads exist? Not because dealers are greedy, but because somebody always knows more than they do. Glosten-Milgrom turns that fear into a formula: the spread is proportional to the informed-trader share.

1 of 12 ~10 min

Ask a finance undergraduate why the bid-ask spread exists, and you’ll get an answer about “dealer compensation” or “order processing costs.” That’s not wrong. It’s just incomplete.

The honest answer is that the spread exists because informed traders extract money from dealers, and the spread is the dealer’s insurance policy. Without informed traders, the spread could be a fraction of a tick, just enough to cover order routing and clearing. With informed traders, the spread has to be wide enough that the dealer comes out ahead even after the toxic flow.

This is the Glosten-Milgrom model (1985). It’s the cleanest derivation of the spread in the microstructure literature, and Harris devotes significant space to it (Harris, Trading and Exchanges, Ch. 10 and Ch. 13). The whole article does one thing: it turns “the dealer is afraid of being picked off” into a formula you can compute, and then reads that formula from both sides of the market.

The Setup

A dealer posts a bid BB and an ask AA. Two types of traders arrive.

Liquidity traders arrive randomly with no information about the asset’s value. They buy or sell for exogenous reasons (rebalancing, hedging, life events), equally likely in each direction. Informed traders arrive knowing the true value VV: they buy if V>AV > A (the ask is below value), sell if V<BV < B (the bid is above value), and stay out whenever B≤V≤AB \leq V \leq A.

Let π\pi be the probability that the next trader is informed, 1−π1 - \pi the probability they’re a liquidity trader. The dealer’s job is to set BB and AA so that expected profit is zero (or some target margin in a richer model).

The true value is binary for simplicity: V∈{VL,VH}V \in \{V_L, V_H\} with equal probability 1/21/2. A continuous approximation comes later.

What the Dealer Learns From a Buy

The dealer doesn’t know VV, but every trade is evidence. The key question: after seeing someone buy at the ask, where should the dealer’s belief move?

Start with two conditional probabilities. Given V=VHV = V_H (and A<VHA < V_H, otherwise the informed trader wouldn’t act): the informed trader always buys, the uninformed trader buys with probability 1/21/2, so

P(buy∣VH)=π+1−π2=1+π2P(\text{buy} \mid V_H) = \pi + \frac{1-\pi}{2} = \frac{1+\pi}{2}

Given V=VLV = V_L: the informed trader never buys (the ask is certainly above VLV_L), only the uninformed trader buys with probability 1/21/2, so

P(buy∣VL)=1−π2P(\text{buy} \mid V_L) = \frac{1-\pi}{2}

Unconditionally, with the two values equally likely:

P(buy)=12⋅1+π2+12⋅1−π2=12P(\text{buy}) = \frac{1}{2}\cdot\frac{1+\pi}{2} + \frac{1}{2}\cdot\frac{1-\pi}{2} = \frac{1}{2}

By Bayes:

P(V=VH∣buy)=1+π2⋅1212=1+π2P(V = V_H \mid \text{buy}) = \frac{\frac{1+\pi}{2}\cdot\frac{1}{2}}{\frac{1}{2}} = \frac{1+\pi}{2}

So after observing one buy, the dealer’s belief that V=VHV = V_H moves from 1/21/2 to (1+π)/2(1+\pi)/2. With π=0.1\pi = 0.1 that’s 0.55: one buy nudges the belief only slightly, because that buy most likely came from an uninformed trader. Symmetrically, after a sell, the dealer’s belief that V=VLV = V_L moves to (1+π)/2(1+\pi)/2.

Note that the update applies to every trade. The dealer can’t tell who is standing in front of them, so an uninformed buy shifts the belief exactly as much as an informed one. That is the quiet cruelty of adverse selection: innocent liquidity traders end up testifying on behalf of the informed.

Quoting: Post the Posterior

The dealer picks BB and AA to break even in expectation. There’s a subtlety that’s easy to get backwards: the ask is not posted at the current expected value, but at the expected value conditional on the next trade being a buy. The moment someone lifts the ask, the dealer is already living in the “I just observed a buy” world.

The ask. If a trader buys at AA, the dealer’s expected profit per share is A−E[V∣buy]A - E[V \mid \text{buy}]. Break-even requires:

A=E[V∣buy]=1+π2VH+1−π2VLA = E[V \mid \text{buy}] = \frac{1+\pi}{2} V_H + \frac{1-\pi}{2} V_L

The bid. Symmetrically, break-even on a sell at BB requires:

B=E[V∣sell]=1−π2VH+1+π2VLB = E[V \mid \text{sell}] = \frac{1-\pi}{2} V_H + \frac{1+\pi}{2} V_L

Quotes set this way are called regret-free: whichever side gets hit, the dealer doesn’t wish they had quoted differently.

The Spread

Subtract, and the coefficients on VHV_H and VLV_L each differ by π\pi:

s=A−B=π(VH−VL)s = A - B = \pi (V_H - V_L)

This is the core Glosten-Milgrom result: the spread is linear in the informed-trader probability and proportional to the dealer’s value uncertainty (VH−VLV_H - V_L). Any π>0\pi > 0 makes the spread strictly positive.

Check the endpoints. π=0\pi = 0 (no informed traders): A=B=(VH+VL)/2A = B = (V_H + V_L)/2; the dealer quotes the unconditional expected value on both sides and breaks even, spread zero. π=1\pi = 1 (everyone is informed): A=VHA = V_H, B=VLB = V_L; the dealer quotes the full range of possible values, because every trade is guaranteed to be a pick-off and only the maximal spread keeps them solvent. In between, the spread slides linearly.

Now with numbers. Let VL=99V_L = 99, VH=101V_H = 101, π=0.1\pi = 0.1:

A=0.55⋅101+0.45⋅99=100.10A = 0.55 \cdot 101 + 0.45 \cdot 99 = 100.10 B=0.45⋅101+0.55⋅99=99.90B = 0.45 \cdot 101 + 0.55 \cdot 99 = 99.90

Spread =0.20=0.1×2=π(VH−VL)= 0.20 = 0.1 \times 2 = \pi(V_H - V_L). If informed traders are a tenth of the flow, the dealer turns a tenth of the value range into spread.

The reason spreads exist is sitting right there in the formula. Not order processing, not inventory: it’s the compensation the dealer demands for trading against people who know more than they do.

Empirical Magnitude

In real markets π\pi is not directly observable, but you can back it out from the spread. If VV is continuous and the dealer’s prior has mean MM and standard deviation σV\sigma_V, the Glosten-Milgrom result generalizes approximately to:

s≈2πσVs \approx 2 \pi \sigma_V

(Consistent with the binary case: set VH−VL=2σVV_H - V_L = 2\sigma_V and the two expressions agree.) Half-spread equals π\pi times the dealer’s value uncertainty. Suppose the fundamental-value standard deviation over the dealer’s horizon is 1.001.00 and π=0.005\pi = 0.005 (informed traders are 0.5% of flow): the half-spread is 0.0050.005, which is 5 bps on a $100 stock — the right ballpark for a liquid name. In practice the inversion runs the other way: given an observed spread and an estimate of $\sigma_V$, solve for the implied $\pi$. In liquid markets the $\pi$ you recover this way is small — order of magnitude somewhere between a tenth of a percent and a percent of flow — but never zero, and spreads genuinely track it. The exact figure drifts with sample, market, and method; trust the order of magnitude, not the decimals.

Many Trades: The Belief Snowball

The model above has one trade. Real markets have many, and the dealer’s Bayes update iterates. This is the model’s most interesting extension.

Each observed buy multiplies the posterior odds of VHV_H against VLV_L by a likelihood ratio:

P(buy∣VH)P(buy∣VL)=(1+π)/2(1−π)/2=1+π1−π\frac{P(\text{buy} \mid V_H)}{P(\text{buy} \mid V_L)} = \frac{(1+\pi)/2}{(1-\pi)/2} = \frac{1+\pi}{1-\pi}

After nn buys in a row (no sells):

P(VH∣n buys)=(1+π)n(1+π)n+(1−π)nP(V_H \mid n \text{ buys}) = \frac{(1+\pi)^n}{(1+\pi)^n + (1-\pi)^n}

For any π>0\pi > 0 the likelihood ratio exceeds 1, so this converges to 1 as n→∞n \to \infty. Smaller π\pi means slower convergence, but the direction never changes: after enough one-sided buying, the dealer is convinced value is high, and both quotes shift up.

That is price discovery in microstructure form — and also its dark side, the informational cascade: the price walks in the direction of trade flow even when you happen to know the run of buys was uninformed coincidence. It’s also the foundation of order-flow toxicity: hitting one side of the book with market orders moves the dealer’s belief, and therefore their quotes. In this limiting sense, market impact is permanent. Harris develops this thread in Ch. 10 and Ch. 13.

The Inventory Model, as a Control Group

Glosten-Milgrom is the information model of the spread: spreads exist because of information asymmetry. The older line is the inventory model (Stoll, 1978; Ho and Stoll, 1981): dealers accumulate unwanted inventory, and the spread compensates them for bearing it. The two aren’t mutually exclusive, and empirically both effects are present. Harris Ch. 10 discusses both and concludes information asymmetry is the larger driver; modern microstructure research generally agrees. The spread compensates for information risk first, inventory risk second. That ordering matters for a market maker’s intuition: being long 10,000 shares isn’t the problem — being long 10,000 shares when the next trade is an informed sell is the problem.

What It Means for Strategy

On the making side, every lesson reads straight off the formula. Your spread must be wide enough to cover the expected loss to informed traders — if your edge per round-trip is smaller than the toxic flow’s price impact, you are bleeding slowly. And π\pi is not a constant: at the open and around major news, the informed share spikes, and both factors in s=π(VH−VL)s = \pi(V_H - V_L) — more informed traders, more value uncertainty — grow at once. Keeping normal-width quotes posted through a macro print is serving yourself on a plate. The correct move is to widen or pull.

On the taking side, read the conclusions in reverse. The spread you pay is mostly fair — it’s the premium the dealer charges for not knowing whether you know something. Your market impact is informational at its root: trade large without information and the dealer’s belief barely moves, so you get filled near the touch; trade on information and the belief moves, so you pay for your own signal. One more point that’s easy to miss: toxicity gets recognized. If you always buy at the ask right before good news, the dealer will eventually quote you wider. Adverse selection is a game both sides learn.

A Python Simulation

The simulation below shows how a Glosten-Milgrom dealer’s belief and quotes evolve with the trade flow. Two implementation details come straight from the derivation above: quotes are the conditional-on-trade expectations (not the current expected value), and every trade updates the belief — the dealer can’t identify the counterparty, so uninformed orders move the quotes just as much.

import numpy as np

def _posterior(p, pi, side):
    """Dealer's posterior P(V = V_H) after observing a buy or sell."""
    l_h = pi + (1 - pi) / 2   # P(buy | V_H)
    l_l = (1 - pi) / 2        # P(buy | V_L)
    if side == "buy":
        num, den = p * l_h, p * l_h + (1 - p) * l_l
    else:  # sell: likelihoods swap
        num, den = p * l_l, p * l_l + (1 - p) * l_h
    return num / den

def glosten_milgrom_path(pi, V_L, V_H, n_trades, rng):
    """
    Simulate a sequence of trades against a Glosten-Milgrom dealer.
    Returns arrays of (belief, bid, ask) over time.
    """
    true_V = V_H if rng.random() < 0.5 else V_L
    p = 0.5  # dealer's P(V = V_H)
    beliefs, bids, asks = [], [], []

    for _ in range(n_trades):
        p_buy, p_sell = _posterior(p, pi, "buy"), _posterior(p, pi, "sell")
        ask = p_buy * V_H + (1 - p_buy) * V_L    # E[V | buy]
        bid = p_sell * V_H + (1 - p_sell) * V_L  # E[V | sell]
        beliefs.append(p); bids.append(bid); asks.append(ask)

        if rng.random() < pi:                      # informed trader
            side = "buy" if true_V == V_H else "sell"
        else:                                      # liquidity trader
            side = "buy" if rng.random() < 0.5 else "sell"
        p = _posterior(p, pi, side)                # every trade updates

    return np.array(beliefs), np.array(bids), np.array(asks)

Run it and you’ll see: when the true value is VHV_H, buys slightly outnumber sells (all the informed traders are buying), the belief converges to 1, and the ask climbs toward VHV_H. Informed buyers profit most early, while the ask is still low; late buyers pay more. Price discovery is the process of the informed traders’ rent being competed away, trade by trade.

Arithmion’s Adverse-Selection Module

The AdverseSelectionModel in arithmion.microstructure turns this into a working tool: it calibrates π\pi from historical quote and trade data using the Glosten-Milgrom likelihood, simulates price paths under different π\pi regimes, and estimates the “expected loss to informed traders” for any execution algo. It also feeds the SpreadAnalyzer from article 3: subtract the Roll-style estimate from the observed spread, and the residual is the adverse-selection component.

Next: From Static to Dynamic

Glosten-Milgrom gives the spread an economic explanation, but it is static and single-period: one trade, one update. Hasbrouck (1991) asks the dynamic version of the question — over a stream of trades, what fraction of price variance is information? He measures the innovation to the dealer’s belief process with a VAR on trade signs and price changes; that is the information share derived in article 5. The two models measure two faces of the same thing: how informative the market believes order flow to be. Read both and you’ll notice that a market maker’s spread and an execution algo’s impact cost are, at the root, the same π\pi.

References

  • Harris, L. Trading and Exchanges: Market Microstructure for Practitioners. Oxford University Press, 2003. Ch. 10 (information-based trading), Ch. 13 (dealers and inventory). ISBN: 978-0-19-514470-3.
  • Glosten, L., Milgrom, P. “Bid, Ask and Transaction Prices in a Specialist Market with Heterogeneously Informed Traders.” Journal of Financial Economics, 1985.
  • Hasbrouck, J. “Measuring the Information Content of Stock Trades.” Journal of Finance, 1991.
  • Stoll, H. “The Supply of Dealer Services in Securities Markets.” Journal of Finance, 1978.
  • Ho, T., Stoll, H. “Optimal Dealer Pricing Under Transactions and Return Uncertainty.” Journal of Financial Economics, 1981.