Market Making and High-Frequency Trading · Market making
19Automated Options Market Making
An options market maker quotes every strike and expiry of a stock at once, several thousand prices on a dozen exchanges, and a sweep can hit forty of them in the same millisecond; the exchange’s protection is what stops the forty-first. In this chapter’s chain of 170 series, a trader who knows the stock has moved 1% and hits every stale quote, one every five microseconds, would take $79 000 from a market maker without protection; a protection that pulls all quotes after thirteen executions holds the loss to $12 900 and, on an ordinary day of multi-leg customer orders, costs three fills out of 8 235.
19.1 The live surface
An options market maker’s theoretical values come from a volatility surface (One Quant Book 5, chapters 7 and 8): a parametrised smile per expiry, fitted to the market’s quotes and trades, moved with the underlying according to a rule (sticky strike, sticky delta) and refitted when the market says the rule was wrong.
Definition 19.1 (Live surface fit)
A live surface fit is the continuous re-estimation of an options market maker’s volatility surface during the trading day, updating each expiry’s parameters from the latest quotes and trades as they arrive, fast enough that every quote the market maker sends is priced on a surface consistent with the current market.
At high frequency the work is split: the underlying’s price moves the whole surface through the rule, microsecond by microsecond, and the smile’s shape is refitted on a slower clock, typically when enough new information has arrived. A raw SVI slice fitted by the quasi-explicit method (Book 5’s firm.svi) to seventeen quoted volatilities, each with 0.2 volatility points of noise, recovers the true smile to 0.025 points: the fit averages the noise that individual quotes carry. Muravyev and Pearson showed why the fair value matters so much to takers too: option prices change predictably at high frequency, many traders time their executions to buy when the fair value is close to the ask and sell when it is close to the bid, and the effective spreads of those who time are under 40% of conventional measures.
19.2 Mass quoting and quote protection
Definition 19.2 (Mass quote)
A mass quote is a single message in which a market maker sends or replaces bids and offers in many option series at once, which the exchange processes as a unit, so that a market maker can update thousands of quotes after a move in the underlying without sending thousands of separate orders.
A chain of 17 strikes and five expiries, calls and puts, is 170 series; quoted at half a volatility point either side of theo (Listing 19.1), the 30-day at-the-money call at $2.92 is 11 cents wide, and the widths range from the cent floor for deep options to 20 cents. Each quote rests on the exchange until the next mass quote replaces it; between the underlying’s move and that replacement, all 170 are stale at once.
The exchange’s answer is protection: a set of counters per market maker and per class (count of executions, contracts, notional, or the percentage of quoted size executed) over a short window, and a rule that cancels all its quotes in the class when a counter reaches its limit.
As of September 2026 — One exchange’s risk parameters
Cboe’s page on its options exchanges’ risk management tools lists four parameter types: notional (contracts traded times premium), volume (contracts traded), count (number of executions) and percentage of quote (the sum across all series of a root of the percentage of quoted contracts executed), each over a period set anywhere from 100 milliseconds to a whole day; once a parameter is reached, no new trades are executed and any trades in route are rejected.
The chapter’s sweep (Listing 19.2): the stock moves 1%; 150 of the 170 quotes are now mispriced; an informed trader hits them, most profitable first, one every five microseconds; the exchange pulls all quotes after executions within 100 milliseconds. The loss grows almost linearly in , about $1 000 an execution, because the most profitable targets are deep in-the-money options that move dollar for dollar with the stock. On an ordinary day, customer orders arrive every five seconds on average, 70% of them for one series and the rest for spreads and strips of two, four and twelve legs executing within two milliseconds; each fill earns $4. A threshold below twelve pulls the quotes on legitimate twelve-leg orders and leaves the market maker out for half a second each time (Figure 19.1).
hf_options.protection_table.19.3 Delta hedging at speed
The sweep leaves the market maker short about 13 000 shares of delta at a threshold of thirteen (it sold calls and bought puts after the stock rose). The loss is already made: the options were sold at prices below the new value. The hedge’s job is to stop the next move adding to it, and at speed the hedge is sent the instant the fills arrive, in the underlying or in the most liquid correlated instrument, within the hedging band of One Quant Book 5, chapter 26. Muravyev showed that inventory matters for option prices more than was thought: decomposing the price impact of option trades into inventory risk and asymmetric information, he found both large and the inventory component larger, and order imbalances due to inventory risk moving option prices five times more than earlier estimates.
19.4 Per-strike and per-expiry risk
Definition 19.3 (Strike risk limit)
A strike risk limit is a market maker’s cap on the exposure (vega, gamma, or contracts) it will accumulate in one strike or one expiry of a chain; when a fill breaches it, the market maker cancels or widens its quotes in that strike or expiry until the exposure is reduced.
Count-based protection counts executions, not risk. A volatility sweep, after implied volatility rises two points, hits 130 quotes of every expiry and leaves the market maker short $10 600 of vega a volatility point for a loss of $16 500. A limit of $1 000 of vega per expiry, enforced by the market maker’s own system 50 microseconds after the breaching fill, cuts the loss to $9 900; enforced in 5 microseconds, to $6 700. The limit’s value depends on its speed: every microsecond of reaction is another stale quote hit.
19.5 What the major firms have published
Options market makers publish little about their quoting systems; what is public is the exchanges’ rules and specifications (the protections of the dated box, the mass-quote messages), the regulators’ filings, and academic work on the data those firms generate. The chapter cites only those.
19.6 Strategy files
Strategy file 19.1 — Surface-fitted quoting across a listed chain
Who pays you, and why. Options users (hedgers, directional traders, volatility traders) who need a price in any series at any time.
Instruments and venues. A stock’s or index’s listed chain on every options exchange.
Signal. Theoretical values from a live surface; the underlying’s move through the surface’s rule.
Sizing and execution. Mass quotes at a width set by vega and the surface’s uncertainty; refit the smile on a slower clock.
Costs. Exchange fees, the width given up to competitors, adverse selection by traders who time executions.
How it dies. Stale quotes after moves; competitors with faster refits.
Horizon, capacity, infrastructure. Microseconds to the day; thousands of series; OPRA-scale market data.
Backtest honestly. The surface as it was known at each quote; fills where timing traders would have taken them.
Sources. Muravyev and Pearson (2020); One Quant Book 5, chapters 7, 8 and 26.
Strategy file 19.2 — Mass-quote making with quote protection
Who pays you, and why. As above, with the exchange’s protections limiting the loss to sweeps.
Instruments and venues. Exchanges with mass-quote messages and risk parameters.
Signal. The same theos; the protection’s thresholds set from the largest legitimate order.
Sizing and execution. Set the count threshold just above the largest multi-leg order (thirteen against twelve-leg orders in the model).
Costs. Fills lost when the protection trips on legitimate flow (326 a day at a threshold of ten, three at thirteen).
How it dies. Sweeps faster than the protection’s first execution, and protections set too loose.
Horizon, capacity, infrastructure. Milliseconds; one protection per class and exchange.
Backtest honestly. The exchange’s protection logic replayed on the day’s executions, including multi-leg orders.
Sources. The dated box; this chapter.
Strategy file 19.3 — Delta-hedged options book
Who pays you, and why. Options customers through the spread; the hedge keeps the book’s value from following the stock.
Instruments and venues. The options book and the underlying (or its future).
Signal. The book’s delta after each fill.
Sizing and execution. Hedge immediately beyond a band, in the cheapest instrument; aggregate across the chain first.
Costs. The underlying’s spread and fees; gamma between hedges.
How it dies. Correlated fills that move the book’s delta faster than the hedge can follow.
Horizon, capacity, infrastructure. Microseconds to seconds; the underlying’s order entry next to the options’.
Backtest honestly. Hedge prices after the fill’s timestamp plus the hedge latency.
Sources. Muravyev (2016); One Quant Book 5, chapter 26.
Strategy file 19.4 — Event-aware options quoting
Who pays you, and why. Traders positioning for earnings or macro events, who pay for the implied move.
Instruments and venues. Expiries spanning a known event.
Signal. The event variance in the term structure (Book 5’s event-variance arithmetic), against the stock’s history of moves.
Sizing and execution. Quote the event expiries on a surface with the event’s variance; tighten vega limits before the event; pull or widen at the announcement (chapter 18).
Costs. Being wrong about the event’s size; gamma across the announcement.
How it dies. Surprises larger than the implied move.
Horizon, capacity, infrastructure. Days to the event; seconds around it.
Backtest honestly. The event calendar as known at the time.
Sources. Chapter 18; One Quant Book 5, chapter 8.
Strategy file 19.5 — Vega-limited skew quoting
Who pays you, and why. Buyers of protection (puts) and sellers of calls who keep the skew rich.
Instruments and venues. Out-of-the-money puts and calls across expiries.
Signal. The skew’s level against its history and the surface fit.
Sizing and execution. Quote the wings with per-strike and per-expiry vega limits enforced within microseconds.
Costs. Tail risk in the wings; hedges in the underlying and in other expiries.
How it dies. A volatility sweep: $16 500 unprotected in the model; the limits’ speed decides the loss ($9 900 at 50 microseconds, $6 700 at 5).
Horizon, capacity, infrastructure. Days; fast limit enforcement.
Backtest honestly. Limits applied with their real reaction time.
Sources. This chapter.
19.7 Tutorial: forty strikes in a millisecond
Goal. Quote a chain from a surface, then measure what an informed sweep takes against each protection threshold and what the threshold costs on ordinary days. End state: Figure 19.1 and the numbers of the text.
The mass quote from Book 5’s theoretical values.
def mass_quote(chain: Chain, spot: float, surf: SkewSurface, half_width_vol: float = 0.005, size: int = 10) -> list[dict]: """Bid and ask at theo -+ half_width_vol vol points times vega (floor one cent), for every series.""" out = [] for o in chain.series(): th, vega = om.theo(o, spot, 0.0, surf) tau = o.expiry g = greeks(spot, o.strike, tau, 0.0, 0.0, surf.vol(o.strike, tau, spot), o.right) hw = max(half_width_vol * 100.0 * vega, 0.01) out.append({"opt": o, "theo": th, "vega": vega, "delta": g["delta"], "bid": max(th - hw, 0.0), "ask": th + hw, "size": size}) return outListing 19.1. Theo and vega from firm.optmm.theo, a half-width in volatility points times vega, a cent floor. code/firm/optquoter/firm_optquoter.pyThe sweep against the exchange’s count and the market maker’s vega limits.
fills, loss, delta, vega = 0, 0.0, 0.0, 0.0 by_exp: dict[float, float] = {} closed_at: dict[float, float] = {} for i, (edge, q, _new, side) in enumerate(targets): t_us = i * gap_us if fills >= protection.count and t_us / 1000.0 <= protection.window_ms: break e = q["opt"].expiry if e in closed_at and t_us >= closed_at[e]: continue n = q["size"] if size is None else size fills += 1 loss += edge * n * MULT delta += -side * q["delta"] * n * MULT # the market maker is on the other side v = -side * q["vega"] * n * MULT vega += v by_exp[e] = by_exp.get(e, 0.0) + v if vega_limit is not None and abs(by_exp[e]) > vega_limit and e not in closed_at: closed_at[e] = t_us + react_usListing 19.2. Stale quotes hit most profitable first; the exchange’s count and the per-expiry vega limit stop it. code/firm/optquoter/firm_optquoter.py - An ordinary day: multi-leg customer orders against the same thresholds (
hf_options.protection_table). - The volatility sweep with vega limits at two reaction speeds (
hf_options.vol_sweep); the smile refit (hf_options.refit).
What to change next. Replace the count by a percentage-of-quote parameter; let the sweep arrive on several exchanges at once, each with its own protection; run the chain on firm.exchsim with its mass-quote message.
| threshold (executions) | 2 | 5 | 10 | 13 | 20 | 40 | none |
|---|---|---|---|---|---|---|---|
| loss to a 1% sweep ($) | 1 980 | 4 950 | 9 899 | 12 867 | 19 773 | 38 718 | 79 370 |
| ordinary-day fills lost | 2 441 | 1 052 | 326 | 3 | 0 | 0 | 0 |
| edge lost a day ($) | 9 764 | 4 208 | 1 304 | 12 | 0 | 0 | 0 |
19.8 Build: the options quoter
Purpose. Quote a chain from a live surface in mass quotes, and measure protections and limits against sweeps and ordinary flow.
Interface. Chain(spot, strikes, expiries_days), surface(atm, term, skew, ref), mass_quote(chain, spot, surf, half_width_vol, size), refit_slice(strikes, spot, tau, vols), Protection(count, window_ms), sweep(quotes, jump, chain, surf, protection, gap_us, size, dvol, vega_limit, react_us), normal_day(n_series, protection, seed), bucket_vega. Built on Book 5’s firm.optmm, firm.volpnl, firm.svi and firm.bs.
Rules. Prices per share, 100 shares a contract; the market maker is the counterparty of every sweep fill.
Acceptance tests. code/firm/optquoter/tests/: quotes bracket theo with widths proportional to vega; the sweep stops at the count and its loss equals the sum of the filled edges; a larger threshold never loses less; a vega limit reacting faster loses less; the ordinary day loses no fills when the threshold exceeds every order’s legs; the SVI refit recovers a slice within its noise.
Stretch. Percentage-of-quote and notional parameters; several exchanges; the surface refit incrementally on each trade.
Sources and further reading
- D. Muravyev, Order flow and expected option returns, Journal of Finance 71(2), 2016, 673–708.
- D. Muravyev, N. D. Pearson, Options trading costs are lower than you think, Review of Financial Studies 33(11), 2020, 4973–5014.
- Cboe, US Options risk management tools (web page, accessed 2026).
19.9 Exercises
Exercise 19.1 ★
The 30-day at-the-money call has a vega of 0.114 a volatility point. What is its width at half a point either side?
Solution
Solution of Exercise 19.1.
Half a point each side: , about 11 cents.
Exercise 19.2 ★
A deep in-the-money call with delta one is quoted at $20.01 offered, ten contracts. The stock rises $1. What does a sweeper gain on it?
Solution
Solution of Exercise 19.2.
The call is now worth about $21.00: .
Exercise 19.3 ★
Why must the count threshold exceed the largest legitimate multi-leg order?
Solution
Solution of Exercise 19.3.
Otherwise every legitimate order with that many legs trips the protection and pulls all quotes, losing the fills that arrive while they are out.
Exercise 19.4 ★★
Why does the sweep loss grow almost linearly in the threshold?
Solution
Solution of Exercise 19.4.
The first targets are deep in-the-money options that all gain about the same (their delta is one): each execution adds about $1 000.
Exercise 19.5 ★★
Why does a per-expiry vega limit enforced in 50 microseconds lose more than one enforced in 5?
Solution
Solution of Exercise 19.5.
The sweep keeps hitting the expiry’s other quotes until the cancel takes effect: at one series every 5 microseconds, 50 microseconds is ten more fills.
Exercise 19.6 ★★
Muravyev and Pearson found that timed executions pay under 40% of conventional spreads. What does that mean for a market maker’s widths?
Solution
Solution of Exercise 19.6.
Takers who time executions trade when the market maker’s quote is least favourable to it; widths must price the fair value’s short-term predictability, or the quotes must move faster than the takers’ timing.
Exercise 19.7 ★★★
Coding. Rerun the sweep with a 2% move. At a threshold of 13, what is the loss, and without protection?
Solution
Solution of Exercise 19.7.
$25 900 at a threshold of 13; $164 300 without protection (151 series mispriced).
Exercise 19.8 ★★★
Find the flaw. “Our protection threshold is forty executions; we have never lost more than $5 000 to a sweep, so it is safe.”
Solution
Solution of Exercise 19.8.
The sweeps it has seen were small; a 1% move with a threshold of forty would cost $38 700 in the model. Set the threshold from the worst plausible sweep, not from history.
19.10 Problem: Forty Strikes in a Millisecond
Problem 19.1
Weekend problem — forty strikes in a millisecond
An options market maker sets its protections and limits for a chain of 170 series.
Part I — Quotes.
- Define a live surface fit and how its work is split between clocks.
- How well does an SVI refit recover a noisy slice?
- Define a mass quote.
- Give the chain’s widths.
Part II — Protection.
- Summarise the dated box.
- Describe the sweep and the ordinary day.
- Give the sweep loss and the fills lost at thresholds of 5, 10, 13 and 20.
- Why do the most profitable targets come first?
Part III — Risk.
- What delta does the sweep leave, and what does the hedge do?
- What did Muravyev find about inventory and option prices?
- Define a strike risk limit.
- Give the volatility sweep’s losses with limits at two speeds.
Part IV — The verdict.
- State the named result: the loss on a planted informed sweep as a function of the quote-protection threshold, and the fills given up by a tight threshold on normal days.
- Which threshold would you choose, and why?
- What would several exchanges, each with its own protection, change?
- Why are the market maker’s own limits needed besides the exchange’s?
- What did Muravyev and Pearson find about taking liquidity in options?
- Which strategy file is most exposed to sweeps?
- How would you set the vega limits per expiry?
- In one sentence: what does quote protection trade off?
Solution
Solution of Problem 19.1.
- See Definition 19.1; the underlying moves the surface continuously, the smile is refitted on a slower clock.
- Within 0.025 volatility points with 0.2 points of noise per quote.
- See Definition 19.2.
- 11 cents for the 30-day at-the-money call; from one cent to 20.
- Notional, volume, count and percentage-of-quote parameters over 100 ms to a day; trading stops when one is reached.
- A 1% move, 150 stale quotes, one hit every 5 microseconds; ordinary orders every 5 seconds of 1 to 12 legs, $4 a fill.
- $4 950 and 1 052; $9 899 and 326; $12 867 and 3; $19 773 and 0.
- The sweeper takes the largest mispricings first because the protection may stop it at any moment.
- Short about 13 000 shares at a threshold of 13; the hedge stops further moves adding to the loss.
- Inventory risk has a first-order effect on option prices, larger than asymmetric information in price impact.
- See Definition 19.3.
- $16 500 unprotected; $9 900 with a $1 000 limit at 50 microseconds, $6 700 at 5.
- From $1 980 at two executions to $79 370 without protection, about $1 000 an execution; thresholds below twelve lose 326 to 2 441 fills a day, thirteen loses three.
- Just above the largest legitimate multi-leg order: thirteen here.
- A sweep on several exchanges at once meets several counters, each counting only its own executions.
- The exchange counts executions, not risk: vega and gamma accumulate in ways a count cannot see.
- Timed executions pay less than 40% of conventional spreads.
- Mass-quote making.
- From the loss the firm accepts on a volatility jump of plausible size, and the enforcement speed.
- Losses to informed sweeps against fills lost to ordinary orders.
19.11 Interview questions
Interview question 19.1 ★ trader
The stock jumps 3% in a millisecond. What happens to your options quotes, in order?
Solution
Solution of Interview question 19.1.
The surface moves with the underlying; every quote is recomputed and resent in mass quotes; until they land, the stale ones may be swept and the protection may pull them; delta from any fills is hedged; the smile is refitted if the move changed it.
What the interviewer is looking for: the sequence and the protection.
Interview question 19.2 ★★ developer
Design the path from an underlying tick to a mass quote of 5 000 series. Where does the time go?
Solution
Solution of Interview question 19.2.
Market data decode, surface update, 5 000 theos and widths (vectorised), message encoding in blocks per the exchange’s limits, sending; most time goes to computing and encoding, so precompute sensitivities and update linearly.
What the interviewer is looking for: vectorisation and linear updates.
Interview question 19.3 ★★ researcher
How would you decide when to refit a smile rather than move it with the underlying?
Solution
Solution of Interview question 19.3.
Move the smile with the underlying by the rule, and refit when the market’s quotes or trades deviate from the moved smile beyond their noise, or after a set number of updates.
What the interviewer is looking for: residuals against a noise threshold.
Interview question 19.4 ★★ risk
Your protection tripped forty times today on one class. What do you investigate?
Solution
Solution of Interview question 19.4.
Whether the trips were sweeps or legitimate multi-leg orders, the losses in each, the threshold against the largest orders, and the timing against underlying moves.
What the interviewer is looking for: separate informed from legitimate trips.
Interview question 19.5 ★★ trader
Why might you quote puts wider than calls at the same vega?
Solution
Solution of Interview question 19.5.
Put buyers are more often informed or hedging crash risk, the put wing’s vega is harder to hedge, and inventory there carries tail risk.
What the interviewer is looking for: asymmetric risk and flow.
Interview question 19.6 ★★★ researcher
Derive the expected loss of a sweep against a count threshold when targets arrive in order of decreasing edge .
Solution
Solution of Interview question 19.6.
The loss is times size and multiplier for targets; with equal edges it is linear in , with decreasing edges concave.
What the interviewer is looking for: partial sums of ordered edges.