Market Making and High-Frequency Trading · Market making
20Options: Cross-Venue and Volatility Arbitrage at Speed
The day before a stock goes ex-dividend, thousands of deep in-the-money calls should be exercised and some are not; the holders who forget pay the ones who remember, and the trade that collects it has been in the academic literature for nearly twenty years. Pool, Stoll and Whaley found that more than half of the long positions that should have been exercised were not, over ten years to 2006, at a cost to holders of over $491 million. In this chapter’s model the play starts to pay when 1.7% of holders forget; at 10% it earns $1.05 for every public contract open, at 50% $10.
20.1 Parity at speed: conversions and reversals
Put–call parity (Book 1, chapter 25) ties a call, a put and the forward. When quotes violate it beyond costs, three legs lock in the difference.
Definition 20.1 (Conversion arbitrage, reversal arbitrage)
Conversion arbitrage buys the stock, buys a put and sells a call with the same strike and expiry, locking in the strike at expiry, when the call is rich relative to the put and the stock. Reversal arbitrage does the opposite: shorts the stock, sells the put and buys the call, when the call is cheap; it pays the stock’s borrow and any dividends.
With many venues quoting the same series, the best bid and offer of each option across venues may violate parity even when no single venue does. In the chapter’s scan (Listing 20.1), nine strikes of a three-month chain are quoted ten cents wide on each venue around fair values from Black-76, each venue’s mid off by its own noise of three cents; the stock is a cent either side of 100; each leg costs a cent. A violation appears in 0.7% of snapshots with one venue, 6.6% with three and 26% with six, worth one to two cents a share. Then the quotes refresh once, keeping a share of their noise: when half persists, only 6–8% of the violations are still there; when 90% persists, 43%. The arbitrage exists in proportion to the number of venues and survives in proportion to how slowly they update.
20.2 Box spreads and the rate they imply
A box (One Quant Book 5, chapter 1) combines a bull call spread and a bear put spread with the same strikes: it pays at expiry whatever happens, so its price is a zero-coupon bond. A box between 95 and 105 expiring in three months at $9.90 lends at 4.02% continuously compounded; if the arbitrageur’s own rate is 4%, buying it at $9.89 earns a cent. Van Binsbergen, Diamond and Grotteria used this: inferring risk-free rates from option prices without a model of risk, they found the convenience yield on Treasuries equal to about 40 basis points, larger below three months and four times larger during the financial crisis. The box’s implied rate is a market rate for secured lending through the clearing house, and trading the box against one’s own funding is arbitrage only within the costs of the four legs and the capital the positions consume.
Definition 20.2 (Jelly roll)
A jelly roll is a long synthetic forward (long call, short put) in one expiry against a short synthetic forward in another, at the same strike; its price is the difference of two forwards and implies the cost of carry (financing less dividends and borrow) between the two expiries.
In the chapter’s chain, a jelly roll between the three- and six-month expiries implies a carry of 4.0%, the model’s rate, since no dividend falls between them. A dividend announced for that period, or a change in the stock’s borrow, moves the jelly roll before it moves anything else.
20.3 Early exercise, dividends and the dividend play
American calls on dividend-paying stocks should be exercised the day before the ex-date when the dividend exceeds the time value given up (One Quant Book 5, chapter 6). For a call struck at 40 on a $60 stock with a month left, a dividend above 13 cents makes exercise optimal. Holders who fail to exercise leave their short counterparts unassigned: those keep a call that has lost its dividend. Assignment falls pro rata on all short open interest, so market makers who trade large offsetting positions with each other just before the ex-date and exercise all their longs take most of the assignments that the forgetful holders did not cause (Book 5’s firm.optmm.best_play). Hao, Kalay and Mayhew found this scheme inflating reported volume on the last cum-dividend day, and facilitated by the exchanges’ limits on the transaction costs passed to traders.
hf_optarb.dividend.The play’s profit rises with the share that fails (Figure 20.1), and so does the share of the failures’ value the players capture: 42% at 5% failing, 82% at half. Below the break-even, with the fees per contract traded and the gain per unassigned call, the play does not pay at any size: 1.7% with the chapter’s fees.
20.4 The same volatility on several listings
An index’s options trade on the index itself (cash-settled, European) and on its exchange-traded fund (physically settled, American, with dividends); a stock’s options trade on several exchanges, identical and fungible. The first pair should carry the same volatility after adjusting for exercise style and dividends; the second, the same prices. A market maker quoting both hedges one with the other, and the spread between their implied volatilities, net of the adjustments, is a relative-value trade that lives in seconds when one listing’s quotes lag the other’s (chapter 8’s lead–lag, applied to volatility).
20.5 Strategy files
Strategy file 20.1 — Conversion and reversal arbitrage
Who pays you, and why. Venues whose quotes lag the others’, and traders who cross wide on one venue.
Instruments and venues. A stock, its calls and puts on every options exchange.
Signal. Parity violations of the best quotes across venues beyond three legs’ costs, the borrow and dividends.
Sizing and execution. All three legs at once, the options on the venues quoting the violation; hold to expiry or unwind when parity returns.
Costs. Three legs’ fees, the borrow for reversals, early assignment risk on American options.
How it dies. Speed: in the model, with quotes keeping half their noise, only 6–8% of violations survive one refresh.
Horizon, capacity, infrastructure. Microseconds to expiry; every venue’s feed.
Backtest honestly. Quotes as received, the refresh that follows, the borrow and dividends as known then.
Sources. Book 1, chapter 25; this chapter.
Strategy file 20.2 — Box-spread financing arbitrage
Who pays you, and why. Borrowers and lenders who use boxes to finance, and Treasury holders who pay for convenience.
Instruments and venues. European-style index options (no early exercise), four legs.
Signal. The box’s implied rate against the firm’s funding and Treasury rates.
Sizing and execution. Lend or borrow through the box when its rate beats funding by more than the four legs’ costs.
Costs. Four legs’ fees and spreads, margin, balance sheet.
How it dies. It is a financing trade with a thin margin; the convenience yield is the market’s price for Treasuries’ safety, not a free lunch.
Horizon, capacity, infrastructure. Weeks to years; capacity from the box market’s depth.
Backtest honestly. The firm’s actual funding rate and capital charges.
Sources. van Binsbergen, Diamond and Grotteria (2022).
Strategy file 20.3 — Dividend play on unexercised calls
Who pays you, and why. Call holders who fail to exercise before the ex-date.
Instruments and venues. Deep in-the-money calls on dividend-paying stocks, on the last cum-dividend day.
Signal. Calls whose optimal exercise is certain (dividend above the time value), and the open interest.
Sizing and execution. Trade large offsetting positions with another participant, exercise all longs; size by the expected failure share.
Costs. Trade and exercise fees (what the exchanges’ caps limit); the risk that everyone exercises.
How it dies. Holders learning to exercise, fee changes, rules on such trades.
Horizon, capacity, infrastructure. One day per ex-date; capacity from the failing open interest.
Backtest honestly. Assignment by the clearing house’s actual process; fees as capped at the time.
Sources. Pool, Stoll and Whaley (2008); Hao, Kalay and Mayhew (2010).
Strategy file 20.4 — Index against ETF options volatility arbitrage
Who pays you, and why. Quoters in the listing whose surface lags, and users who pay for one listing’s features.
Instruments and venues. Index options and the fund’s options on the same index.
Signal. Implied volatility difference, adjusted for exercise style, dividends and settlement.
Sizing and execution. Quote or take the lagging listing; hedge vega in the other.
Costs. Two listings’ spreads; the adjustments’ model error.
How it dies. Early exercise and dividend surprises in the fund’s options.
Horizon, capacity, infrastructure. Seconds to days.
Backtest honestly. Both surfaces on one clock; the adjustments as known at the time.
Sources. Chapter 8; this chapter.
20.6 Tutorial: the calls nobody exercised
Goal. Scan a chain on several venues for parity violations and measure how many survive; price a box and a jelly roll; size the dividend play. End state: Figure 20.1 and the numbers in the text.
The scan of conversions and reversals across venues with
firm.parity.def scan(ls: Listings, spot_bid: float = 99.99, spot_ask: float = 100.01, fee: float = 0.01, lag_rho: float = 0.5, rounds: int = 2000) -> dict: """Over `rounds` independent snapshots: conversions (sell call bid, buy put ask, buy share) and reversals across venues net of `fee` a leg (three legs); for each found, refresh once and test it again.""" found = survived = 0 edges = [] for _ in range(rounds): ls.refresh(0.0) hits = [] for k in ls.strikes: cb, ca = ls.best(k, "C") pb, pa = ls.best(k, "P") conv = fp.conversion_edge(cb, pa, spot_ask, k, ls.years, ls.rate, ls.div_pv) - 3 * fee rev = fp.reversal_edge(ca, pb, spot_bid, k, ls.years, ls.rate, ls.div_pv) - 3 * fee if conv > 0: hits.append((k, "conv")) edges.append(conv) if rev > 0: hits.append((k, "rev")) edges.append(rev) found += len(hits) if hits: ls.refresh(lag_rho) for k, kind in hits: cb, ca = ls.best(k, "C") pb, pa = ls.best(k, "P") e = (fp.conversion_edge(cb, pa, spot_ask, k, ls.years, ls.rate, ls.div_pv) if kind == "conv" else fp.reversal_edge(ca, pb, spot_bid, k, ls.years, ls.rate, ls.div_pv)) - 3 * fee survived += e > 0 return {"per_snapshot": found / rounds, "mean_edge": float(np.mean(edges)) if edges else 0.0, "survive": survived / found if found else 0.0}Listing 20.1. Best quotes across venues, three legs’ fees, and a second look after one refresh. code/firm/optarb/firm_optarb.py Boxes and jelly rolls.
def box_rate(k1: float, k2: float, price: float, years: float) -> float: return -math.log(price / (k2 - k1)) / years def box_edge(box_ask: float, box_bid: float, k1: float, k2: float, years: float, rate: float) -> tuple[float, float]: """(lend edge, borrow edge): buying the box at its ask earns (k2 - k1) at expiry, worth PV at `rate`.""" pv = (k2 - k1) * math.exp(-rate * years) return pv - box_ask, box_bid - pv def jelly_roll(c1: float, p1: float, c2: float, p2: float, k: float, t1: float, t2: float, rate: float) -> float: """C - P = e^{-rT}(F - K) at each expiry; the two forwards give the carry r - q between t1 and t2.""" f1 = fp.implied_forward(c1, p1, k, t1, rate) f2 = fp.implied_forward(c2, p2, k, t2, rate) return math.log(f2 / f1) / (t2 - t1)Listing 20.2. The box’s implied rate and edges; the carry implied by two synthetic forwards. code/firm/optarb/firm_optarb.py - The dividend play for each share of failing holders (
hf_optarb.dividend); the exercise threshold withfirm.american.
What to change next. Add the borrow fee to reversals and see which violations remain; replace the noise by quotes that lag the stock by a venue-specific delay; estimate the failure share from open interest before and after past ex-dates.
20.7 Build: the options arbitrage module
Purpose. Scan listed options for parity, box and carry violations across venues, and size the dividend play.
Interface. box_rate, box_edge, jelly_roll, Listings(n_venues, strikes, seed) with refresh and best, scan(listings, spot_bid, spot_ask, fee, lag_rho, rounds), dividend_curve(fails), exercise_threshold. Built on firm.parity (Book 1), firm.american and firm.optmm (Book 5).
Rules. Dollars per share; fees per leg; the dividend play’s gain and fees per share, times 100 a contract.
Acceptance tests. code/firm/optarb/tests/: box rate and edges by hand; the jelly roll recovers the carry; no violation without noise; more persistent noise lets more violations survive; the play pays nothing below its break-even and more as more holders fail.
Stretch. Borrow and hard-to-borrow stocks; venue delays; SPX against SPY volatility.
Sources and further reading
- R. Pool, H. R. Stoll, R. E. Whaley, Failure to exercise call options: an anomaly and a trading game, Journal of Financial Markets 11(1), 2008, 1–35.
- J. Hao, A. Kalay, S. Mayhew, Ex-dividend arbitrage in option markets, Review of Financial Studies 23(1), 2010, 271–303.
- J. H. van Binsbergen, W. F. Diamond, M. Grotteria, Risk-free interest rates, Journal of Financial Economics 143(1), 2022, 1–29.
20.8 Exercises
Exercise 20.1 ★
A 95–105 box expiring in three months trades at $9.90. What rate does it imply?
Solution
Solution of Exercise 20.1.
.
Exercise 20.2 ★
Call bid 4.60, put ask 4.10, stock ask 100.01, strike 100, three months, rate 4%, dividends worth 0.50 before expiry. What is the conversion’s edge?
Solution
Solution of Exercise 20.2.
: half a cent negative before fees; no arbitrage.
Exercise 20.3 ★
With trade fees of 0.2 cent and exercise fees of 0.1 cent a share and a gain of 30 cents per unassigned call, what failure share makes the dividend play pay?
Solution
Solution of Exercise 20.3.
cent per contract traded (per share), cents: the play pays above .
Exercise 20.4 ★★
Why do more venues produce more parity violations, and why do they not produce more profit?
Solution
Solution of Exercise 20.4.
The best bid and offer across more venues are more extreme, so they cross parity more often; but each violation is a venue’s noise that the next refresh removes, and all scanners see the same quotes: only the fastest captures it.
Exercise 20.5 ★★
Why is a box’s implied rate above the Treasury rate of the same maturity?
Solution
Solution of Exercise 20.5.
Treasuries carry a convenience yield (liquidity, collateral value, regulatory treatment) that lowers their yield; the box’s rate, inferred without it, is the risk-free rate before that premium: about 40 basis points above on average in van Binsbergen, Diamond and Grotteria.
Exercise 20.6 ★★
What does the dividend play do to the options’ reported volume, and why does it matter to others?
Solution
Solution of Exercise 20.6.
It inflates volume on the last cum-dividend day with trades that transfer no risk; anyone who reads volume as liquidity or interest is misled.
Exercise 20.7 ★★★
Coding. With firm.american.dividend_threshold, find the dividend above which a call struck at 40 on a $60 stock with a month left should be exercised, at 25% volatility and 4%.
Solution
Solution of Exercise 20.7.
About 13 cents.
Exercise 20.8 ★★★
Find the flaw. “Our scanner found 257 parity violations per thousand snapshots across six venues, a cent each: a steady income.”
Solution
Solution of Exercise 20.8.
The violations are counted before execution: after one refresh with half the noise kept, only about 6% remain, and every other scanner sees the same quotes. The income is the share the firm wins at speed, net of fees, not the count.
20.9 Problem: The Calls Nobody Exercised
Problem 20.1
Weekend problem — the calls nobody exercised
An options arbitrage desk runs parity scans, box trades and the dividend play.
Part I — Parity.
- Define conversion and reversal arbitrage.
- Describe the scan and its violation rates by number of venues.
- How many survive a refresh, and what decides it?
- Why must reversals include the borrow?
Part II — Rates and carry.
- What rate does the example box imply, and what does buying it at $9.89 earn?
- What did van Binsbergen, Diamond and Grotteria find?
- Define a jelly roll and its value in the chapter’s chain.
- What moves a jelly roll first?
Part III — The dividend play.
- When is exercising a call before the ex-date optimal?
- What did Pool, Stoll and Whaley find?
- How does the play work, and what did Hao, Kalay and Mayhew add?
- Give the break-even failure share.
Part IV — The verdict.
- State the named result: the dividend play’s expected profit per contract as a function of the share of holders who fail to exercise.
- Who loses in the dividend play, and could they avoid it?
- What would lower fee caps do to the play?
- Why are cross-listing volatility trades lead–lag trades?
- Which strategy file carries the most capital?
- How would you estimate the failure share before an ex-date?
- What does a brokerage owe clients holding calls before an ex-date?
- In one sentence: who pays for the calls nobody exercised?
Solution
Solution of Problem 20.1.
- See Definition 20.1.
- Nine strikes, venues quoting 10 cents wide with 3 cents of noise, a cent a leg: violations in 0.7%, 6.6% and 26% of snapshots for 1, 3 and 6 venues, worth one to two cents.
- 6–8% with half the noise kept, 43% with 90%: the quotes’ persistence.
- The reversal is short the stock and pays the borrow and dividends.
- 4.02%; one cent against a 4% funding rate.
- Treasury convenience yields of about 40 basis points, larger below three months, four times larger in the crisis.
- See Definition 20.2; 4.0% carry between three and six months.
- A dividend announcement or a borrow change between the expiries.
- When the dividend exceeds the time value given up (the put’s value at the strike); 13 cents in the example.
- More than half of long positions that should be exercised were not, 1996–2006, costing holders over $491 million.
- Offsetting trades between market makers who exercise all longs and take most assignments; the volume it inflates, facilitated by exchanges’ fee limits.
- : 1.7%.
- Zero below 1.7%; $0.27 per public contract at 5%, $1.05 at 10%, $3.04 at 20%, $10.02 at 50%, capturing 42% to 82% of the failures’ value.
- Holders who fail to exercise; by exercising, or by their brokers doing it for them.
- Lower fees lower the break-even and raise the play’s size.
- One listing’s quotes follow the other’s with a delay; the trade takes the stale one.
- The box, which ties capital and balance sheet for its whole term.
- From open interest in calls that should be exercised and past ex-dates’ exercise rates by holder type.
- Notice and, where agreed, automatic exercise instructions.
- The holders who forget, paid to whoever trades to take their assignments.
20.10 Interview questions
Interview question 20.1 ★ trader
Write put–call parity for a dividend-paying stock and say what you would trade if the call were a dime rich.
Solution
Solution of Interview question 20.1.
; with the call rich, sell the call, buy the put and the stock (a conversion), if the dime exceeds the costs.
What the interviewer is looking for: parity with dividends, the right trade.
Interview question 20.2 ★★ researcher
How would you measure the convenience yield of Treasuries from option prices?
Solution
Solution of Interview question 20.2.
Price boxes on European index options across maturities, infer the zero rates, and subtract Treasury yields of the same maturity.
What the interviewer is looking for: box-implied rates.
Interview question 20.3 ★★ trader
Tomorrow a stock goes ex-dividend 50 cents; you are short 1 000 deep in-the-money calls. What do you expect overnight, and what do you do?
Solution
Solution of Interview question 20.3.
Most will be exercised and you will be assigned: short the stock the next morning without the dividend. Buy the stock or exercise offsetting longs; the unassigned part gains the dividend less time value.
What the interviewer is looking for: assignment and its position.
Interview question 20.4 ★★ developer
Design a parity scanner over 5 000 series on 16 venues that reports only executable violations.
Solution
Solution of Interview question 20.4.
Maintain best bid and offer per series across venues incrementally; recompute parity only for series whose quotes changed; require sizes on all legs and apply fees, borrow and dividends; send all legs together.
What the interviewer is looking for: incremental, executable, all legs.
Interview question 20.5 ★★ risk
A reversal desk is short 2 million shares of a stock that becomes hard to borrow. What happens?
Solution
Solution of Interview question 20.5.
The borrow fee jumps or shares are recalled: the reversal loses its carry or must be closed; parity for that stock shifts and puts become dear.
What the interviewer is looking for: borrow risk.
Interview question 20.6 ★★★ researcher
Derive the dividend play’s optimal size from its expected profit .
Solution
Solution of Interview question 20.6.
The derivative of is ; setting it equal to gives , so .
What the interviewer is looking for: the first-order condition.