Market Microstructure & Quantitative Trading
Probability of Informed Trading (PIN) & Spread Formula
Calculate Easley, Kiefer, O’Hara, and Paperman’s (1996) Probability of Informed Trading PIN = (alpha * mu) / (alpha * mu + epsilon_b + epsilon_s) and Bayesian opening bid-ask quotes.
Extract informed order-flow toxicity from Poisson buy and sell arrival rates!
David Easley, Nicholas Kiefer, Maureen O’Hara, and Joseph Paperman (1996) extended Glosten-Milgrom into a structural Poisson order-arrival tree! Before each trading day, a private information event occurs with probability alpha; conditional on an event, bad news (asset worth V_L) occurs with probability delta and good news (worth V_H) with probability 1 - delta. Throughout the day, uninformed liquidity buyers arrive at Poisson rate epsilon_b and liquidity sellers at epsilon_s, while on event days informed traders arrive at rate mu (buying on good news, selling on bad news)!
Verify on Event_Prob alpha = 0.50 (B2), Bad_News_Prob delta = 0.50 (B3), Uninformed_Buy_Rate epsilon_b = 80/day (B4), Uninformed_Sell_Rate epsilon_s = 80/day (B5), Informed_Arrival_Rate mu = 80/day (B6), High_Value V_H = 52.00 (B7), and Low_Value V_L = 48.00 (B8 -> Prior Unconditional Value V_0 = 0.50*52 + 0.50*48 = 50.00): Expected Informed Order Flow is alpha * mu = 40/day out of Total Order Flow 40 + 80 + 80 = 200/day, yielding PIN = 40 / 200 = 0.2000 (20.00% informed trade probability)! By Bayes’ rule, Opening Ask = V_0 + (alpha*(1 - delta)*mu / (epsilon_b + alpha*(1 - delta)*mu)) * (V_H - V_0) = 50.00 + (20 / 100) * 2.00 = 50.4000, Opening Bid = 50.00 - (20 / 100) * 2.00 = 49.6000, and Opening Adverse-Selection Spread = 50.4000 - 49.6000 = 0.8000 (= PIN * (V_H - V_L) under symmetric order flow)!
| EKOP (1996) PIN Microstructure Metric | Formula | Verified Output |
|---|---|---|
| Probability of Informed Trading (PIN) | (alpha * mu) / (alpha * mu + eps_b + eps_s) | 0.2000 (20.00% Toxicity) |
| Bayesian Opening Ask Quote E[V | Buy] | V_0 + (alpha*(1-delta)*mu / (eps_b + alpha*(1-delta)*mu))*(V_H - V_0) | 50.4000 |
| Bayesian Opening Bid Quote E[V | Sell] | V_0 - (alpha*delta*mu / (eps_s + alpha*delta*mu))*(V_0 - V_L) | 49.6000 |
| Opening Adverse-Selection Spread | Ask - Bid | 0.8000 ($0.80 / share) |
Easley-Kiefer-O’Hara-Paperman (1996) PIN Formula
Notice why illiquid small-cap stocks with low uninformed epsilon_b + epsilon_s exhibit high PIN and wide percentage spreads even when news frequency alpha is lower than large-cap stocks!
=LET(al_ev, B2, dl_bd, B3, ep_b, B4, ep_s, B5, mu_in, B6, vh_vl, B7, vl_vl, B8, IF(OR(al_ev < 0, al_ev > 1, dl_bd < 0, dl_bd > 1, ep_b <= 0, ep_s <= 0, mu_in < 0, vh_vl <= vl_vl), "Invalid PIN Input", ROUND((al_ev * mu_in) / (al_ev * mu_in + ep_b + ep_s), 4)))General Asymmetric Bayesian Opening Ask & Bid Quotes Formula
Use exact separate buy/sell Bayesian denominators so your spread sheet stays exact even when delta != 0.50 or epsilon_b != epsilon_s!
=LET(al_ev, B2, dl_bd, B3, ep_b, B4, mu_in, B6, vh_vl, B7, vl_vl, B8, IF(ISTEXT(E2), E2, LET(v_pr, (1 - dl_bd) * vh_vl + dl_bd * vl_vl, ROUND(v_pr + ((al_ev * (1 - dl_bd) * mu_in) / (ep_b + al_ev * (1 - dl_bd) * mu_in)) * (vh_vl - v_pr), 4))))Try the example
Use the original values or change them to test your understanding.