The Market Making Book

5. The Two Fears: Inventory Risk & Adverse Selection

Why does a spread exist at all? Two Nobel-grade answers: because holding things is risky (Ho–Stoll), and because some of your customers know more than you (Glosten–Milgrom, Kyle).

Part II · Chapter 5

Fear #1 — Inventory risk (Ho & Stoll, 1981)

Ho and Stoll gave the first rigorous treatment of Rosa's first fear: a risk-averse dealer facing random buy and sell arrivals should not quote symmetrically around fair value once they hold a position. Holding inventory exposes the dealer to price moves they have no opinion about; a rational dealer charges for that exposure by skewing quotes — long inventory pushes both bid and ask down (eager to sell, reluctant to buy more), short inventory pushes both up. The skew grows with risk aversion, variance, and the time you expect to hold the position. Avellaneda–Stoikov (Chapter 6) turned this insight into the closed-form equations everyone uses today.

Fear #2 — Adverse selection (Glosten & Milgrom, 1985)

Glosten and Milgrom proved something stranger: even a risk-neutral market maker with zero costs and zero profit must quote a positive spread, purely because of information asymmetry. In their model, each arriving trader is informed with probability μ (they know the asset's true value) or a noise trader with probability 1−μ (they trade for liquidity reasons). The MM can't tell them apart. But the MM knows that a buy order is more likely to come from someone who knows the value is high — so the very act of receiving a buy order should raise the MM's estimate of value. The zero-profit quotes are conditional expectations:

Glosten–Milgrom quotes ask = E[ V | next trader buys ]    bid = E[ V | next trader sells ] What the symbols mean V — the asset's true (unknown) value  ·  E[ V | … ] — read the bar "|" as "given that": the average value of V given that the event after the bar happens. So the ask is: "what is the asset worth, on average, in the worlds where someone chooses to buy from me?" Since buyers are disproportionately people who know V is high, that conditional average sits above the plain average — and that's the ask.

The ask sits above the unconditional expectation and the bid below it; the gap is the pure adverse-selection spread. Each trade then updates the MM's beliefs (Bayes' rule), which is precisely how prices come to reflect information over time.

Parable · The used-car dealer A used-car dealer offers to buy any car, sight unseen. Who shows up first? Disproportionately, people whose cars have hidden problems. The dealer isn't quoting against the average car — they're quoting against the cars that choose to come. So the buy price must be lowered below the average value until the deal breaks even against the self-selected flow. That discount is adverse selection, and it exists even if the dealer fears no risk at all.

Glosten–Milgrom by the numbers

The model becomes unforgettable with one concrete case. Take a binary contract (a Kalshi-style YES) whose true value is $1 or $0 with equal prior probability. A fraction μ of arriving traders are informed (they know the answer); the rest flip a coin. Bayes' rule gives the zero-profit quotes in closed form — and at a 50/50 prior they collapse to something beautiful:

GM quotes at a 50¢ prior ask = (1 + μ)/2      bid = (1 − μ)/2      spread = μ What the symbols mean μ (mu) — the fraction of arriving traders who are informed (they already know the outcome), from 0 to 1. Prices are in dollars on a contract that settles at $1 or $0. Example: μ = 0.2 → ask = (1+0.2)/2 = 60¢, bid = (1−0.2)/2 = 40¢, spread = 20¢.

The spread equals the informed fraction. If 20% of your counterparties know the outcome, the break-even market is 40¢ bid / 60¢ ask — a 20¢ spread on a 50¢ contract, with zero risk aversion and zero fees. And the model doesn't stop at one trade: after each fill the market maker updates the prior (a buy moves it up to the old ask, a sell down to the old bid) and posts fresh quotes around the new belief. Run it yourself:

interactive — bayesian quoting & price discovery
Belief P(V=1)50.0¢
Bid
Ask
Spread
The amber line is the market maker's belief; the shaded band is the bid–ask pair Bayes' rule demands. Every BUY pushes belief up to the old ask, every SELL down to the old bid — this staircase is price discovery: the market learning from its own order flow. Slide μ up and watch the band widen and each step grow — informed markets move fast and charge a toll; slide μ to 0 and the band closes to nothing, because uninformed flow teaches the market nothing. Auto-flow simulates a true value the crowd slowly reveals.

Kyle (1985): how much does flow move price?

Kyle modeled a single informed trader hiding inside noise-trader flow, with a market maker setting price as a linear function of the net order flow:

Kyle's lambdaΔP = λ · (net order flow) What the symbols mean ΔP — the change in price (Δ, delta, always means "change in")  ·  λ (lambda) — price impact per unit of flow: how many cents the price moves for each extra contract of one-sided pressure  ·  net order flow — buy volume minus sell volume over the window. A small λ means a deep market that absorbs flow; a big λ means a shallow one where every trade moves the price.

λ (lambda) is the price impact per unit of flow — the inverse of market depth. Kyle showed λ rises with the variance of the true value and falls with the amount of noise trading: the more uninformed flow there is to hide in, the deeper the market. For a practitioner, λ is something to estimate continuously: when your fills start predicting price moves (your post-fill markouts go negative), the flow has turned toxic and your quotes are too tight.

The simulation below makes adverse selection visceral. Noise traders hit your quotes at random — you collect the spread. Informed traders only hit you just before the price jumps in their favor — every informed fill is money out. Slide μ and watch the business die.

simulation — adverse selection
Noise fills0
Informed fills0
P&L0.00
Verdict
Yellow flashes are informed traders: they buy right before an up-jump and sell right before a down-jump, so each of their fills costs you roughly (jump − half-spread). Past a certain μ, no realistic spread saves you — the only correct move is to stop quoting. Remember this figure when we discuss tennis courtsiders in Chapter 8.

The complete anatomy of a spread

Empirically, real spreads decompose into three components — and this decomposition is your profitability audit:

ComponentCompensates forTheory
Order-processing costFees, infrastructure, capital
Inventory risk premiumVariance of held positionsHo–Stoll · Avellaneda–Stoikov
Adverse-selection premiumTrading against informed flowGlosten–Milgrom · Kyle
The operational testMeasure your post-fill markout: the price change a few seconds after each of your fills. If markouts are systematically negative and bigger than your half-spread, adverse selection is eating you. No spread you can quote fixes informed flow — you fix it by quoting wider at dangerous moments, or not at all.

On this page

GitHubGitHub repository