Market Making and Liquidity Provision › Adverse Selection

Michael BrenndoerferDecember 31, 20257 min read
Quantitative FinanceAll chapters
Part 12 of 15Market Making and High-Frequency Trading
Chapter 65Market Making and Liquidity Provision › Adverse Selection
Reading section 5 of 13 · Adverse Selection · 7 minSection 5 of 13 · 7 min

Book contents

Section 5 of 13 · 7 min read

Market Making and Liquidity Provision › Adverse SelectionOne section · Sections in this chapter5 / 13 ↓
Reading tools Definitions & inline links

Choose your expertise level to adjust how many terms are explained. Beginners see more tooltips, experts see fewer to maintain reading flow. Hover over underlined terms for instant definitions.

Article links

Make inline references clickable

Beyond inventory risk, you face adverse selection, the risk of trading against informed counterparties who know more about future prices than you do. This concept, which we touched on in our discussion of liquidity risk Part V, is fundamental to understanding why market making spreads exist. While inventory risk can be managed through quote adjustment and hedging, adverse selection represents a more insidious challenge because it systematically extracts value from you.

Information Asymmetry

Consider the market for a stock about to report earnings. Some traders may have superior analysis or even inside information about the announcement. When these informed traders buy, it signals that the stock is likely undervalued, meaning you are selling too cheaply. When informed traders sell, you are buying something that will soon be worth less. You cannot distinguish between informed and uninformed traders at the moment of the trade; you only discover afterward, when prices move, whether your counterparty was informed.

Adverse Selection

Adverse selection occurs when one party to a transaction has information that the other lacks. In market making, informed traders profit at your expense by trading when they have superior knowledge of future price movements.

The famous Glosten-Milgrom model formalizes this intuition, and gives a theoretical foundation for understanding how adverse selection affects market making. Suppose a fraction α\alpha of traders are informed and know the true value VV of the asset, while the remaining (1−α)(1-\alpha) are uninformed liquidity traders who trade for reasons unrelated to the asset's fundamental value. You must set quotes knowing that:

  • When an informed trader buys, V>AskV > \text{Ask} (you sold too cheaply)
  • When an informed trader sells, V<BidV < \text{Bid} (you bought too expensively)
  • Uninformed traders buy and sell randomly

The key insight is that you face a winner's curse problem. You are more likely to execute trades precisely when those trades are unfavorable. Informed traders only trade when your quotes are mispriced relative to true value, while uninformed traders provide a mixture of profitable and unprofitable trades. Your break-even spread must compensate for losses to informed traders:

s∗=α(VH−VL)s^* = \alpha (V^H - V^L)

where:

  • s∗s^*: break-even spread
  • α\alpha: probability that the next trader is informed
  • VH−VLV^H - V^L: difference between the asset's high and low values (value of private information)

Higher informed trading probability α\alpha requires wider spreads to compensate for the greater expected losses to informed counterparties. Similarly, when the value of private information is larger (the gap between VHV^H and VLV^L is greater), spreads must widen because each trade against an informed counterparty generates larger losses.

Out[10]:
Visualization
Line chart showing break-even spread rising linearly as the informed trader fraction increases from zero to fifty percent.
Break-even spread vs informed trader fraction ($\alpha$). Spreads widen linearly as the fraction of informed traders increases to compensate for adverse selection.
Line chart showing break-even spread rising linearly as the value of private information increases.
Break-even spread vs value of private information. For a fixed informed fraction, the required spread increases with the value of private information, compensating for the winner's curse.

Detecting Informed Flow

You use various signals to detect potentially informed order flow. These detection methods are imperfect, but they can help you adjust your quotes or trade sizes when the risk of adverse selection appears elevated:

  • Order size: Large orders may signal informed trading because informed traders have greater incentive to trade large quantities when they possess valuable information
  • Order timing: Trades just before news announcements are more likely to be informed, as traders may have advance knowledge or superior forecasting ability
  • Order toxicity: Metrics like VPIN (Volume-synchronized Probability of Informed Trading) attempt to measure the proportion of informed flow in real time
  • Price impact: Orders that move prices significantly suggest the market is updating its beliefs in response to perceived information content
In[11]:
Code
import numpy as np

# Simulate adverse selection impact
np.random.seed(456)

# Simulate 1000 trades
n_trades = 1000
informed_fraction = 0.15  # 15% of trades are informed
true_move_size = 0.005  # Informed traders know price will move 0.5%

# Generate trade labels: informed (1) or uninformed (0)
is_informed = np.random.random(n_trades) < informed_fraction

# Generate trade directions: 1 for buy, -1 for sell
# Uninformed: random direction
# Informed: always trade in direction of known move (assume positive move)
trade_direction = np.where(is_informed, 1, np.random.choice([-1, 1], n_trades))

# Simulate subsequent price moves
# If trade was informed buy, price tends to go up
price_moves = np.where(
    is_informed,
    trade_direction * true_move_size + np.random.normal(0, 0.003, n_trades),
    np.random.normal(0, 0.003, n_trades),
)

# Market maker's P&L per trade (negative of trade direction times price move)
# Market maker takes opposite side, so if trader buys, MM sells
spread_earned = 0.001  # 10 bps spread
mm_pnl_per_trade = spread_earned / 2 - trade_direction * price_moves

# Separate P&L for informed vs uninformed trades
pnl_vs_informed = mm_pnl_per_trade[is_informed]
pnl_vs_uninformed = mm_pnl_per_trade[~is_informed]

# Calculate aggregate statistics
n_uninformed = (~is_informed).sum()
avg_pnl_uninformed = pnl_vs_uninformed.mean() * 100  # per $100 notional
total_pnl_uninformed = pnl_vs_uninformed.sum() * 100

n_informed = is_informed.sum()
avg_pnl_informed = pnl_vs_informed.mean() * 100
total_pnl_informed = pnl_vs_informed.sum() * 100

avg_pnl_overall = mm_pnl_per_trade.mean() * 100
total_pnl_overall = mm_pnl_per_trade.sum() * 100
Out[12]:
Console
Market Maker P&L Analysis by Counterparty Type
==================================================

Vs Uninformed Traders (851 trades):
  Average P&L: $0.0388 per $100 notional
  Total P&L:   $32.99

Vs Informed Traders (149 trades):
  Average P&L: $-0.4991 per $100 notional
  Total P&L:   $-74.36

Overall:
  Average P&L: $-0.0414 per $100 notional
  Total P&L:   $-41.37

The simulation clearly shows the adverse selection problem in action. We earn money against uninformed traders but lose even more against informed traders. The overall P&L depends critically on the fraction of informed flow and the size of the information edge. This is why you should obsess over order flow quality: a venue or counterparty that generates predominantly uninformed flow is enormously valuable, while flow with high informed content can quickly destroy profitability.

Out[13]:
Visualization
Two overlapping histograms showing P&L distributions for informed and uninformed counterparties.
Distribution of market maker P&L per trade against informed versus uninformed counterparties. Trades against uninformed participants (green) center around positive values due to the spread, while trades against informed participants (red) result in losses as prices move against the market maker. The aggregate profitability depends on the ratio of uninformed to informed flow.