Market Microstructure & Quantitative Trading
Glosten-Milgrom Adverse-Selection Bid-Ask Spread Formula
Derive Bayesian market-maker Ask = E[V | Buy], Bid = E[V | Sell], and Glosten-Milgrom spread from informed-trader probability mu and asset value range V_H - V_L.
Explain why bid-ask spreads exist even with zero inventory risk and zero order-processing fees!
Lawrence Glosten and Paul Milgrom (1985) proved that asymmetric information alone generates a positive bid-ask spread for a risk-neutral, competitive dealer: suppose an asset is worth V_H (prior probability theta_0) or V_L < V_H (probability 1 - theta_0), fraction mu_inf in [0, 1) of arriving orders come from insiders who know V, and fraction (1 - mu_inf) come from noise traders splitting 50/50 between buys and sells. Applying Bayes’ rule, a buy order raises posterior probability of V_H to theta_buy = (theta_0 * (1 + mu_inf)) / (1 + mu_inf * (2*theta_0 - 1)) and a sell order lowers it to theta_sell = (theta_0 * (1 - mu_inf)) / (1 - mu_inf * (2*theta_0 - 1)) — setting Ask = E[V | Buy] and Bid = E[V | Sell] so dealer losses to insiders exactly match gains from noise traders!
Verify at symmetric prior theta_0 = 0.50 (B4) with V_H = 110 (B2), V_L = 90 (B3 -> range 20, midpoint 100), and insider share mu_inf = 0.25 (B5): Ask = 90 + 0.625 * 20 = 102.50, Bid = 90 + 0.375 * 20 = 97.50, and Quoted Spread = 0.25 * 20 = 5.00! After observing that first Buy, update prior to theta_1 = 0.625: next-trade Ask rises to 90 + (25/34) * 20 = 104.7059 while next-trade Bid returns exactly to the original midpoint 100.0000 (because one Buy followed by one Sell cancels out in Bayes’ odds!), tightening the spread to 4.7059!
| Glosten-Milgrom Quote (V_H=110, V_L=90, mu=0.25) | Prior theta_0 = 0.50 | Updated theta_1 = 0.625 |
|---|---|---|
| Posterior High-State Prob | Buy | 0.6250 | 0.7353 (25 / 34) |
| Competitive Ask Price E[V | Buy] | 102.5000 | 104.7059 |
| Competitive Bid Price E[V | Sell] | 97.5000 | 100.0000 (Buy+Sell Cancels!) |
| Quoted Bid-Ask Spread (Ask - Bid) | 5.0000 (= mu * (V_H - V_L)) | 4.7059 |
Bayesian Market-Maker Ask = E[V | Buy] and Bid = E[V | Sell] Formula
Validate V_H > V_L >= 0, interior prior 0 < theta_0 < 1, and informed order-flow share 0 <= mu_inf < 1.
=LET(v_hi, B2, v_lo, B3, th_0, B4, mu_in, B5, IF(OR(v_lo < 0, v_hi <= v_lo, th_0 <= 0, th_0 >= 1, mu_in < 0, mu_in >= 1), "Invalid Microstructure Input", LET(p_bh, (th_0 * (1 + mu_in)) / (1 + mu_in * (2 * th_0 - 1)), ROUND(v_lo + p_bh * (v_hi - v_lo), 4))))Exact Glosten-Milgrom Quoted Bid-Ask Spread (Ask - Bid) Formula
Compute exact unrounded E[V | Buy] - E[V | Sell] = (4 * mu_inf * theta_0 * (1 - theta_0) * (V_H - V_L)) / (1 - mu_inf^2 * (2*theta_0 - 1)^2)!
=LET(v_hi, B2, v_lo, B3, th_0, B4, mu_in, B5, IF(OR(v_lo < 0, v_hi <= v_lo, th_0 <= 0, th_0 >= 1, mu_in < 0, mu_in >= 1), "Invalid Microstructure Input", LET(num_s, 4 * mu_in * th_0 * (1 - th_0) * (v_hi - v_lo), den_s, 1 - (mu_in^2) * ((2 * th_0 - 1)^2), ROUND(num_s / den_s, 4))))Try the example
Use the original values or change them to test your understanding.