Lecture 3: Information and Prices / The Glosten-Milgrom Model
This is the lecture Lecture 1's algo-callouts kept pointing forward to. Two parts, one video each: first, why prices move at all and what "efficient" actually means; then the first formal model in the course — Glosten and Milgrom's dealer facing an unknown mix of informed and noise traders — which derives the bid-ask spread from first principles instead of just asserting it exists.
- Source
- Real transcripts, both parts, verified via yt-dlp captions
- Textbook chapter
- Foucault/Pagano/Röell, Ch. 3 — the lecturer notes almost all of it is devoted to this model
- Course structure note
- This opens Part 1 of the course (~5 lectures building models), used in Part 2 to study fragmentation/transparency/liquidity value, before Part 3 goes beyond the textbook into HFT, public information, and bubbles
Three reasons to trade — only one of them moves prices
The lecture opens by asking why stock prices move at all, and dismisses financial-news "explanations" as often just plausible-sounding stories after the fact (the lecture cites a Twitter account that randomly pairs stock directions with unrelated headlines — "serial killer let loose" or "city installs new traffic lights" — to make exactly this point). It then gives three genuine reasons anyone trades:
Risk — rebalancing your exposure (a worker in a counter-cyclical industry buying pro-cyclical stocks to hedge their income). Funding liquidity — needing cash now, or having excess cash to invest (the same concept from Lecture 2). Information — believing the asset is mispriced given what you know.
The key distinction: risk and funding-liquidity trades are idiosyncratic — specific to you, uninformative about the asset's actual value. If the market knew you were selling purely to buy a house, it wouldn't revise its valuation. Information-based trades are different: if you're selling because you know something the market doesn't, the market should revise its valuation once it figures that out — which is exactly why you'd rather it didn't figure that out. This asymmetry is what the rest of the lecture, and the whole model to follow, is built on.
Public vs. private information — and the course's specific interpretation
Public information: known to everyone, and — crucially — a public announcement moves everyone's valuation by the same amount simultaneously, so it doesn't need any trading to get incorporated into prices. Private information: known to some, not others — this is what generates the asymmetry that makes trades informative to observe.
The lecture is explicit that "private information" here does not mean insider information in the legal sense (trading on non-public company secrets, illegal in most jurisdictions). Instead it adopts what it calls the "academic interpretation": all information is technically publicly available, but some traders are simply better at analyzing it and extracting its implications — the same public facts, better processed. This is the working definition the rest of the course uses for "informed trader," and it's the one worth keeping in mind whenever "informed" comes up later.
The Efficient Markets Hypothesis, and why it breaks in three specific ways
Hayek: prices coordinate dispersed knowledge. Fama's EMH pushes this further — prices should fully reflect available information — in three increasingly strong versions: weak form (prices reflect past price history), semi-strong form (prices reflect all public information), strong form (prices reflect all public and private information, instantly).
The lecture walks through why the strong form specifically can't be right, using three real problems:
| Problem | The logic |
|---|---|
| No-trade theorem | If any desire to trade instantly reveals your information and moves the price against you, informed trading becomes unprofitable — so no one should ever trade on information. Real markets trade constantly. |
| Grossman-Stiglitz paradox | If prices already reflect all private information perfectly, there's no profit in acquiring information — so no one has an incentive to analyze anything, so nothing gets analyzed, so prices can't actually become efficient. Self-contradicting. |
| Excess volatility | Real intraday prices move far more, far more often, than any plausible stream of genuine public news could explain. |
The lecture's conclusion isn't "efficiency is wrong" — it's that the course won't assume strong-form efficiency; instead it'll build models and see whether, and how much, efficiency emerges as a result. This is exactly the approach the Glosten-Milgrom model (§06 onward) takes.
Formalizing it: market valuation as a martingale
Let Ωₜ be the public information set at time t (cumulative — nothing is forgotten). The market's valuation μₜ = E(V|Ωₜ), the expectation of the true fundamental value V given current public knowledge. Semi-strong efficiency means price pₜ = μₜ.
The lecture proves, using the law of iterated expectations, that if this holds, the best forecast of tomorrow's valuation is today's valuation: E[μₜ₊₁|Ωₜ] = μₜ. This is the defining property of a martingale — price changes are unpredictable from current information, not because nothing is knowable, but because anything knowable is already priced in. It's the formal version of "you can't beat the market using only information the market already has."
The Glosten-Milgrom setup: a dealer who can't tell who they're trading with
Every period, one trader arrives. With probability π they're a speculator (informed — they know the true value V exactly, and trade to maximize profit). With probability 1−π they're a noise trader (trades for the risk/liquidity reasons from §01, buying with probability β_b, selling with probability β_s, for reasons unrelated to value). The dealer is risk-neutral, competitive (zero expected profit in equilibrium — real competition drives out any margin), and — critically — cannot tell which type just walked in. The dealer only knows the probabilities π and 1−π.
Because the dealer must quote before knowing which side will be hit, they quote both a bid and an ask, always, on one unit at a time (a multi-unit order is just modeled as several one-unit orders in sequence, with the dealer free to reprice between them).
The lecture cites NASDAQ's own rulebook: a registered market maker "shall be willing to buy and sell such security for its own account on a continuous basis... and shall enter and maintain a two-sided trading interest." And from Helsinki Exchange: quotes must be live at least 85% of the time, with a bid-ask spread capped at 4%, and a minimum order size of €4,000 — specifically so a dealer can't technically comply by quoting one share at $0 bid / $1 billion ask. The model's abstract "dealer always quotes both sides" assumption is a real regulatory requirement, not just a modeling convenience.
Solving the binary case — the actual spread formula
Simplify: the true value V is either high (v_H) or low (v_L). Before any trade, the dealer's belief is θ (probability V=v_H), so the unconditional estimate is μ = θv_H + (1−θ)v_L. A speculator who knows V=v_H will only ever buy; one who knows V=v_L will only ever sell. So a buy order is more likely to have come from an informed trader specifically when the value is actually high — the order itself is evidence.
Setting the dealer's expected profit to zero (competition) and working through Bayes' rule on the very first trade of the day (θ=1/2, so μ₀ = (v_H+v_L)/2):
- Context
- The lecture's own closed-form result for the first spread of the day: S₁ = π(v_H − v_L) — the entire quoted spread, derived, not assumed.
- Algo-relevant?
- Yes — this is the actual formula behind the "adverse selection" component every earlier lesson gestured at without deriving.
- What's applied
- ask = μ₀ + (π/2)(v_H−v_L); bid = μ₀ − (π/2)(v_H−v_L). Spread widens linearly in π (more informed traders → wider spread) and linearly in the value range v_H−v_L (more uncertainty about fundamentals → wider spread).
- Action
- A market-making algorithm calibrating its own quotes can use this exact structure: estimate π (the likely fraction of informed flow in a given name/venue/time-of-day) and the plausible value range, and set the half-spread proportional to their product — not a fixed number, not a guess.
- Why
- Every extra informed trader raises the dealer's expected loss on the next trade, one-for-one, in proportion to how much value is actually at stake — that's why both terms enter multiplicatively, not additively.
| Quantity | Formula | Value |
|---|---|---|
| Unconditional value μ₀ | (20+10)/2 | $15.00 |
| Ask | 15 + (0.1/2)(20−10) | $15.50 |
| Bid | 15 − (0.1/2)(20−10) | $14.50 |
| Spread S₁ = π(v_H−v_L) | 0.1 × 10 | $1.00 |
What this means: even with only 1-in-10 traders informed, the dealer needs a full $1.00 spread (6.7% of the $15 midpoint) just to break even — not to profit, to break even against the adverse-selection risk. This isn't a cost imposed by the dealer's greed; it's the minimum compensation competition allows them to charge and still survive contact with informed order flow. Raise π and the spread widens linearly — this is the direct, quantified version of "more insider trading risk → less liquidity" that earlier lessons only stated qualitatively.
Price discovery: the market actually learns V over time
In a multi-period version with persistent V, every single order — informed or not — nudges the dealer's belief θₜ a little. Over enough trades, θₜ converges to 1 (or 0), and the price converges to the true value — strong-form efficiency emerges as a long-run result, not an assumption. The lecture's own simulation (v_H=102, v_L=98, θ₀=0.5) shows exactly how fast, for different values of π:
| π (share informed) | Trades to full price discovery |
|---|---|
| 0.1 (10% informed) | Barely any progress even after 100 trades |
| 0.5 (50% informed) | ~15 trades, on average |
| 0.9 (90% informed) | ~5 trades, on average |
What this means: this is the liquidity/price-discovery trade-off made concrete — the same π that widens the spread (§06, bad for traders) is exactly what speeds up how fast the market learns the true value (good for informational efficiency). A regulator (or a market designer) tuning insider-trading enforcement is, whether they realize it or not, choosing a point on this exact curve — there's no policy that improves both at once by changing π alone.
What the model deliberately leaves out
The lecture is candid about three simplifications: (1) it's a pure dealer model with no market clearing — aggregate demand and supply need not balance in any period, since the dealer absorbs the imbalance; (2) only fundamental value matters to traders — no resale motive, no consideration that a trader buying today might need to sell into an illiquid market later; (3) informed traders are all-or-nothing (know V exactly) in the base model, though the textbook's own exercises extend this to a noisy signal with accuracy ρ, which changes the spread smoothly rather than in the binary case above.
Before the next lecture
- 1
Textbook Ch. 3, Exercise 2: a small stock worth $10 or $20 with equal probability. Compute the bid/ask with no informed trading, then with π=0.1 — then compute the average trading cost to an uninformed trader and the average gain to an informed one.Nearly all of Ch. 3's exercises are on this model — lecturer's own pointer
- 2
Textbook Ch. 3, Exercise 3: extend the model so the informed trader's signal is only accurate with probability ρ (not perfectly informed) — derive how the spread changes as a function of ρ.
- 3
Find a real stock's bid-ask spread right after an earnings announcement vs. mid-session on an ordinary day — the model predicts the spread should be wider exactly when the odds of facing an informed trader are higher.
This model is a market-making algorithm's actual pricing engine
Every earlier lesson's algo-callouts referenced "the adverse-selection component of the spread" without deriving it. This lecture is where it comes from — and it's directly implementable:
// Glosten-Milgrom-derived quoting engine — the formulas from §06, live pi_hat = estimate_informed_share(recent_flow, venue, time_of_day) // §06 — π v_range = estimate_value_uncertainty(vol, upcoming_news_calendar) // §06 — (v_H − v_L) half_spread = (pi_hat / 2) * v_range // §06 — the closed-form result, not a guess mu = current_belief_estimate() // §04/§07 — μ_t, updated after every fill bid = mu - half_spread ask = mu + half_spread // on fill: Bayesian update to mu using the fact that THIS side got hit — // exactly the §07 belief-update loop, run one trade at a time mu = bayesian_update(mu, filled_side, pi_hat)
The pi_hat estimation step is where real market-making systems spend serious engineering effort — it's exactly the problem of telling informed flow from noise flow in real time, the same problem the dealer faces in the model, just automated. Everything downstream of that estimate is the closed-form math this lecture derived.