Quantitative Finance · Book 11 · Market making

Market Making and High-Frequency Trading

Market Making and High-Frequency Trading · Market making

15Futures Market Making

In a short-rate futures contract the queue at the best price can hold tens of thousands of lots, and fills are shared pro rata. A market maker who wants a hundred lots shows more, because its share of each fill is its size over everyone’s, and every other maker reasons the same way. In this chapter’s game, ten makers who each want 100 lots show 230; fifteen show 620; twenty show as much as the exchange allows. Each is worse off than if all had shown what they wanted, and the depth at the best price reaches 245 times the average order, as Field and Large found in real pro-rata markets.

15.1 Pro-rata books and size

Book 1, chapter 19 sets out the allocation rules: time priority (first in, first filled), pro rata (each resting order gets its share of the incoming size), and the hybrids that give a top order, the first to improve the price, or a lead market maker a slice first. Under time priority a market maker’s decision is where to stand in the queue (chapter 5); under pro rata it is how much to show.

As of September 2026 — How one exchange allocates

As a market-data vendor’s guide to CME’s matching algorithms described them in August 2025, pro-rata allocation matches an incoming aggressor “based on each resting order’s pro-rated percentage”; allocations are rounded down to the nearest integer, including zero, and excess lots are allocated first in, first out. In the algorithms that include it, the first order that improves the market (the top order) is matched first, followed by any lead market maker allocation. The guide listed pro rata for some calendar-spread books and a configurable algorithm for outrights such as the two-year Treasury note future.

The allocation of an aggressor of 250 lots against four resting orders of 100 (the top order), 400, 300 and 200 shows the difference: time priority gives the first two 100 and 150; pure pro rata gives 25, 100, 75 and 50; top order then pro rata gives 100, 67, 50 and 33 (firm.match).

Definition 15.1 (Over-quoting)

Over-quoting is showing more size at a price than one wishes to trade there, in a book that allocates fills in proportion to size, in order to receive a larger share of each fill; it is profitable for each maker alone and self-defeating for all together.

The game (Listing 15.1): nn makers rest at the best price; an aggressor of XX lots arrives, lognormal with a median of 200; maker ii, showing sis_i of a total SS, receives simin⁡(X,S)/Ss_i\min(X,S)/S. It earns one tick a lot and pays γ/2=0.005\gamma/2=0.005 per squared lot of inventory. Alone, or first in a time-priority queue, it would show 100 lots, the size whose marginal fill is worth its marginal risk. Against others, showing more buys a larger share of every order; the symmetric equilibrium is found by best responses.

The over-quoting factor, the equilibrium size each maker shows divided by the 100 lots it would show under time priority, against the number of makers at the best price (log scale); aggressors lognormal with a median of 200 lots, one tick earned a lot, an inventory penalty =0.01 (0.005 per squared lot), sizes capped at 5 000. Data: hf_futures.game.
Figure 15.1. The over-quoting factor, the equilibrium size each maker shows divided by the 100 lots it would show under time priority, against the number of makers at the best price (log scale); aggressors lognormal with a median of 200 lots, one tick earned a lot, an inventory penalty γ=0.01\gamma=0.01 (0.005 per squared lot), sizes capped at 5 000. Data: hf_futures.game.

The factor rises from 1.1 with two makers to 2.3 with ten and 6.2 with fifteen; with twenty, the spiral stops only at the cap (Figure 15.1). Every maker’s expected utility is lower than if all had shown 100: 19.5 against 22.3 with ten makers. Field and Large found exactly the symptoms in four one-tick pro-rata futures markets: depth at the quotes exceeding the mean market order by two orders of magnitude, and cancellation rates above 96% of the lots offered. They modelled the cause as the strategic complementarity in the game: each trader risks overtrading with an oversized order that it expects mostly to cancel.

The risk is the rare large order. An aggressor at the 99.9th percentile of the simulated sizes (7 907 lots) fills each of ten makers with 230 lots, 2.3 times what each wanted, all at once and all on the same side: the whole market becomes long together.

15.2 Calendar spreads and implied prices

A calendar spread (Book 1, chapter 19) buys one expiry and sells another. Exchanges list spread books alongside the outrights and link them through implied prices: a spread’s implied-in price comes from the two outright books (bid of the front minus offer of the back), an outright’s implied-out price from a spread book and the other outright. The exchange’s matching engine can trade through these links, so an order in one book may fill against orders in two others.

15.3 Arbitrage between spread and outright books

Definition 15.2 (Implied-price arbitrage)

Implied-price arbitrage is trading a spread book against its two outright books when the spread’s direct price is outside the range implied by the outrights (or the reverse), before the exchange’s implied matching or other traders close the gap.

Where the exchange computes implied prices for every link, many such gaps are closed by the engine itself; where it does not (for some spreads, across exchanges, or between a spread and a pack of several outrights), they are closed by traders. The gaps come from lags: the spread book’s market makers quote around the outrights’ difference as they last saw it. In the chapter’s strip of four quarterly futures, outright books one tick wide and spread books one tick wide around a lagged difference, arbitrages appear when the lag spans enough market-data events for the curve’s slope to move two ticks: none with a lag of one event, 0.9 per thousand spread-events with five, 5.9 with ten and 50 with thirty, each worth about a tick (Figure 15.2).

Implied-price arbitrages between three calendar-spread books and four outright books, per thousand spread-book observations, against how many market-data events the spread books’ quotes lag the outrights; the curve’s level and slope move 0.6 and 0.4 ticks an event; 5 000 events. Data: hf_futures.implied.
Figure 15.2. Implied-price arbitrages between three calendar-spread books and four outright books, per thousand spread-book observations, against how many market-data events the spread books’ quotes lag the outrights; the curve’s level and slope move 0.6 and 0.4 ticks an event; 5 000 events. Data: hf_futures.implied.

15.4 Rates futures strips

A short-rate futures strip (One Quant Book 2, chapter 8) is a curve of quarterly contracts, each a forward rate for a three-month period, traded as outrights, calendar spreads, butterflies, packs and bundles. A market maker in the strip quotes all of them from one model of the curve (a few factors: level, slope, curvature, plus the meeting dates of the central bank) and hedges any fill in whichever instrument is cheapest. The strip’s books are pro rata or hybrid in several markets, so the over-quoting of the previous sections applies to each; the model of the curve is what keeps the maker’s quotes in hundreds of books consistent with each other.

15.5 Inter-commodity spreads

Two related contracts (two points on a yield curve in different contracts, crude oil and its products, corn and ethanol) trade as an inter-commodity spread when their prices share a factor. The exchange’s margin credit for the spread (Book 1, chapter 20) lowers its cost of carry. A market maker quotes the spread from its model of the relation and hedges each fill in the leg that is cheaper to trade; the risk is the relation’s own drift, which no hedge removes.

15.6 Strategy files

Strategy file 15.1 — Pro-rata outright quoting

Who pays you, and why. Hedgers and directional traders who cross a one-tick spread in size.

Instruments and venues. Short-rate and bond futures outrights on pro-rata or hybrid books.

Signal. The fair value inside the tick (chapter 2) and the probability of a large aggressor, from order flow and the other books.

Sizing and execution. Show the equilibrium size, not the wanted size; cancel ahead of predicted large orders; seek top-order and lead-market-maker priority where available.

Costs. Exchange fees per lot, the inventory from large fills, message limits from cancelling most of what is shown.

How it dies. The rare very large order: ten makers each filled 2.3 times their wanted size by one aggressor.

Horizon, capacity, infrastructure. Seconds to minutes; capacity large; a curve model and fast cancellation.

Backtest honestly. The allocation algorithm and its parameters by product; others’ sizes (unobservable) modelled, not assumed away.

Sources. Field and Large (2008); the dated box.

Strategy file 15.2 — Calendar-spread quoting with implied legs

Who pays you, and why. Hedgers rolling positions from one expiry to the next, who trade the spread to avoid legging.

Instruments and venues. The exchange’s calendar-spread books and their outrights.

Signal. The outrights’ difference from the curve model, with the exchange’s implied prices as the competing quote.

Sizing and execution. Quote the spread inside the implied market; hedge a fill in the outrights when the model says the spread will not mean-revert quickly.

Costs. Fees on the spread and on any hedge; queue position behind implied orders.

How it dies. Roll periods concentrate flow and competitors; the implied engine undercuts a slow quote.

Horizon, capacity, infrastructure. Seconds to days; roll calendars.

Backtest honestly. The implied prices the engine would have generated; roll-period volumes.

Sources. Book 1, chapter 19; this chapter.

Strategy file 15.3 — Implied-price arbitrage between spread and outright books

Who pays you, and why. Spread-book quoters whose prices lag the outrights.

Instruments and venues. A spread book and its two outright books, where the exchange’s implied matching does not close every link.

Signal. The direct spread price outside the implied range from the outrights.

Sizing and execution. Take the spread and the two outright legs at once; size to the smallest of the three top-of-book quantities.

Costs. Three fees; legging risk if one leg misses (chapter 13).

How it dies. The exchange’s implied engine, and faster traders: in the simulation the gaps appear only when the spread books lag by several events.

Horizon, capacity, infrastructure. Microseconds; the three books’ data on one clock.

Backtest honestly. Sequenced book events across the three books; whether the implied engine would have matched first.

Sources. This chapter.

Strategy file 15.4 — Short-rate futures strip making

Who pays you, and why. Rates hedgers and speculators trading any point of the strip, and packs and bundles.

Instruments and venues. A strip of quarterly short-rate futures, its spreads, butterflies, packs and bundles (One Quant Book 2, chapter 8).

Signal. A curve model: level, slope, curvature, central-bank meeting dates, fitted to all the strip’s books at once.

Sizing and execution. Quote every book from the model; hedge any fill in the cheapest instrument that removes its curve exposure.

Costs. Fees, over-quoting’s inventory risk in pro-rata books, model error around central-bank meetings.

How it dies. Central-bank surprises move the curve in ways the model’s factors do not span.

Horizon, capacity, infrastructure. Seconds to days; hundreds of books from one model.

Backtest honestly. The meeting calendar as known at the time; all books’ allocation rules.

Sources. One Quant Book 2, chapter 8.

Strategy file 15.5 — Inter-commodity spread trading

Who pays you, and why. Hedgers of processing margins and curve positions who trade the spread as one instrument.

Instruments and venues. Two related futures and, where listed, their inter-commodity spread book.

Signal. The spread’s deviation from a model of the two prices’ relation.

Sizing and execution. Quote the spread; hedge fills in the leg with the better liquidity.

Costs. Two legs’ fees, margin (reduced by the exchange’s spread credit), the relation’s drift.

How it dies. Structural change in the relation (a refinery outage, a new delivery rule).

Horizon, capacity, infrastructure. Minutes to weeks.

Backtest honestly. Margin credits as they were; delivery and contract changes by date.

Sources. Book 1, chapter 20.

15.7 Tutorial: showing ten times what you want

Goal. Find the equilibrium size makers show in a pro-rata book, its cost to them, and the implied arbitrages a lagging spread book leaves. End state: Figures 15.1 and 15.2.

  1. Allocation of one aggressor under three rules with firm.match (hf_futures.allocation_example).
  2. The game: best responses to the others’ total size, damped, until they settle.

    def best_response(s_others: float, X, h: float, gamma: float, grid) -> float:
        g = np.asarray(grid, float)[None, :]
        X = np.asarray(X, float)[:, None]
        f = np.minimum(X, g + s_others) * g / (g + s_others)
        u = np.mean(h * f - 0.5 * gamma * f * f, axis=0)
        return float(grid[int(np.argmax(u))])
    
    
    def equilibrium(n: int, X, h: float, gamma: float, grid, iters: int = 80) -> float:
        """Symmetric equilibrium on the grid: damped best-response iteration; the grid's top is the exchange's maximum
        order size, where the spiral stops if nothing else does."""
        s = float(grid[len(grid) // 4])
        for _ in range(iters):
            new = best_response((n - 1) * s, X, h, gamma, grid)
            if abs(new - s) < 1e-9:
                break
            s = 0.5 * (s + new)
        return s
    Listing 15.1. A maker’s best size against the others’ total; the symmetric equilibrium by damped best responses. code/firm/futmm/firm_futmm.py
  3. Stress: the fills a 99.9th-percentile aggressor gives each maker.
  4. The strip: four quarterly futures, three spread books quoting a lagged difference; scan for implied arbitrages.

    def scan(strip: Strip) -> dict:
        """Count steps where a spread book's direct bid is above the spread implied by the outrights' offers
        (sell the spread, buy the front, sell the back), or its direct offer below the implied bid; edge in ticks."""
        n, edge = 0, []
        for t in range(strip.steps):
            for i in range(strip.n - 1):
                direct = strip.spread(t, i)
                imp = fm.implied_in(strip.outright(t, i), strip.outright(t, i + 1))
                if direct.bid > imp.ask:
                    n += 1
                    edge.append(direct.bid - imp.ask)
                elif direct.ask < imp.bid:
                    n += 1
                    edge.append(imp.bid - direct.ask)
        return {"count": n, "per_1000": 1000.0 * n / (strip.steps * (strip.n - 1)),
                "mean_edge": float(np.mean(edge)) if edge else 0.0}
    Listing 15.2. Direct spread quotes against the spread implied by the outrights, with firm.match.implied_in. code/firm/futmm/firm_futmm.py

What to change next. Add a top-order allocation of 40% to the game and see who gets it; let one maker predict large aggressors and cancel before them; run the pro-rata book on firm.exchsim’s pro_rata_futures preset.

makers2510121520
size shown (lots)1101432302986195 000
over-quoting factor1.11.42.33.06.250
utility, equilibrium41.229.619.516.913.912.3
utility, all showing 10041.431.222.320.017.414.3
fill from a 7 907-lot order110143230298527395
depth / mean order0.51.85.68.823245

15.8 Build: the futures market-making module

Purpose. Model pro-rata fills and the over-quoting equilibrium, and scan a strip for implied-price arbitrages.

Interface. fills(s, X), utility, best_response, equilibrium(n, X, h, gamma, grid), fifo_size, aggressors, Strip(n_contracts, steps, seed, lag) with outright(t, i) and spread(t, i), scan(strip). Built on firm.match (Book 1): pro_rata, configurable, implied_in.

Rules. Fills are continuous shares of min⁡(X,S)\min(X,S); the grid’s top is the exchange’s maximum order size.

Acceptance tests. code/firm/futmm/tests/: continuous fills within rounding of firm.match.pro_rata; alone, the best response is the time-priority size; the best response grows with the crowd; the equilibrium grows with the number of makers and leaves them worse off than showing what they want; no arbitrage without lag, more with more lag.

Stretch. Top-order and lead-market-maker slices in the game; the game on firm.exchsim’s pro-rata preset; packs and butterflies in the scanner.

Sources and further reading

  • J. Field, J. Large, Pro-rata matching and one-tick futures markets, CFS Working Paper 2008/40, 2008.
  • Databento, CME matching algorithms explained, 1 August 2025.

15.9 Exercises

Exercise 15.1 ★

Four orders of 100 (the top order), 400, 300 and 200 lots rest at a price. Allocate an aggressor of 250 under time priority, pure pro rata, and top order then pro rata.

Solution

Solution of Exercise 15.1.

Time priority: 100 and 150 to the first two. Pro rata: 250×250\times each share of 1 000, rounded down: 25, 100, 75, 50. Top order then pro rata: 100 to the top order, then 150 shared among 900 lots: 66, 50, 33 rounded down, and the leftover lot to the oldest, 67.

Exercise 15.2 ★

Ten makers each show 230 lots. What does an aggressor of 1 000 lots give each, and one of 7 907?

Solution

Solution of Exercise 15.2.

The book holds 2 300 lots: an aggressor of 1 000 gives each 1 000×230/2 300=1001\,000\times230/2\,300=100; one of 7 907 exhausts the book and gives each its full 230.

Exercise 15.3 ★

The front contract is bid 9 612 and offered 9 613, the next bid 9 598 and offered 9 599. What is the implied spread market? A spread book is offered at 12: what do you do?

Solution

Solution of Exercise 15.3.

Implied spread bid 9 612−9 599=139\,612-9\,599=13, offer 9 613−9 598=159\,613-9\,598=15. Buy the spread at 12, sell the front at 9 612 and buy the back at 9 599: one tick, less three fees.

Exercise 15.4 ★★

Why is the equilibrium a prisoner’s dilemma?

Solution

Solution of Exercise 15.4.

Each maker’s best response to the others’ sizes is to show more, whatever they do, but when all do, the shares are unchanged and every maker bears more risk from large orders: utility 19.5 at the equilibrium against 22.3 if all showed 100, with ten makers.

Exercise 15.5 ★★

Why do pro-rata books have cancellation rates above 96%?

Solution

Solution of Exercise 15.5.

Makers show far more than they want to trade and cancel most of it whenever the risk of a large fill rises; the shown size is a claim on a share, not an intention to trade it all.

Exercise 15.6 ★★

How does a top-order allocation change a maker’s incentives?

Solution

Solution of Exercise 15.6.

It rewards improving the price rather than showing size: the first order at a new price is filled first, so makers compete to set the price with modest size, which moderates the size race at existing prices.

Exercise 15.7 ★★★

Coding. Double the inventory penalty (GAMMA = 0.02). What size would a maker show under time priority, and what do ten makers show?

Solution

Solution of Exercise 15.7.

Under time priority a maker would show 50 lots; ten makers show 73, a factor of 1.5 instead of 2.3: a larger penalty for inventory restrains the spiral.

Exercise 15.8 ★★★

Find the flaw. “Depth at the best is 20 000 lots, so our 500-lot order will not move the price and we will get 500 lots.”

Solution

Solution of Exercise 15.8.

Most of the 20 000 lots is over-quoting that will be cancelled as soon as a large order looks likely; the depth that stays for a 500-lot order is what makers want to trade, a fraction of what is shown.

15.10 Problem: Showing Ten Times What You Want

Problem 15.1

Weekend problem — showing ten times what you want

Market makers in a pro-rata short-rate futures book choose how much to show, and a spread book beside it lags.

Part I — Allocation.

  1. Describe time priority, pro rata and top-order allocation, and the dated box’s description of one exchange.
  2. Allocate the example aggressor under each rule.
  3. Define over-quoting.
  4. What did Field and Large observe in pro-rata markets?

Part II — The game.

  1. Write a maker’s fill and utility.
  2. What size does a maker show under time priority, and why?
  3. How is the symmetric equilibrium found?
  4. Why does the spiral stop only at the cap with twenty makers?

Part III — Measurements.

  1. Give the over-quoting factor for 2, 10, 15 and 20 makers.
  2. Compare equilibrium utility with everyone showing 100.
  3. What does the 99.9th-percentile aggressor do to each maker?
  4. Define implied-price arbitrage and give the counts by lag.

Part IV — The verdict.

  1. State the named result: the equilibrium over-quoting factor in a pro-rata book, and the inventory risk it creates when an unexpectedly large order fills everyone at once.
  2. How should a maker size its display, knowing the equilibrium?
  3. What could an exchange change to stop the spiral?
  4. Why do strip makers quote hundreds of books from one model?
  5. When does an inter-commodity spread stop being a hedge?
  6. Which of the five strategy files depends most on speed?
  7. How would you backtest a pro-rata strategy when others’ sizes are unobservable?
  8. In one sentence: what does size buy in a pro-rata book?
Solution

Solution of Problem 15.1.

  1. See Book 1, chapter 19 and the dated box: pro-rated shares rounded down, excess lots first in first out, a top order first where included.
  2. 100/150; 25/100/75/50; 100/67/50/33.
  3. See Definition 15.1.
  4. Spreads at one tick nearly always, depth two orders of magnitude above the mean market order, cancellation rates above 96%.
  5. fi=simin⁡(X,S)/Sf_i=s_i\min(X,S)/S; utility E[hfi−γfi2/2]\mathrm{E}[hf_i-\gamma f_i^2/2].
  6. 100 lots: the size where the expected gain of a marginal lot equals its expected inventory cost.
  7. Best responses to the others’ total, damped, until they settle.
  8. With many makers each one’s share is small and a larger size buys share cheaply: the risk of exhausting the book never catches up before the cap.
  9. 1.1, 2.3, 6.2 and 50 (at the cap).
  10. Lower at every nn: 19.5 against 22.3 with ten makers, 12.3 against 14.3 with twenty.
  11. Fills each of ten makers with 230 lots, 2.3 times the wanted size, all on the same side.
  12. See Definition 15.2; 0 at a lag of one event, 0.9, 5.9, 23.7 and 49.7 per thousand at 5, 10, 20 and 30.
  13. With ten makers each shows 2.3 times its wanted size, twenty makers go to the exchange’s maximum; a 99.9th-percentile order leaves each maker 2.3 times its wanted inventory at once.
  14. At the equilibrium size, with fast cancellation when large orders become likely, and a limit on the fill it can bear.
  15. Top-order or time-weighted allocation, a minimum resting time, or charges on displayed but untraded size.
  16. Consistency: every book’s price comes from one curve, so the maker is never arbitraged between its own quotes.
  17. When the relation between the two commodities changes (a refinery outage, a new delivery rule).
  18. Implied-price arbitrage.
  19. Model the others’ sizes from the book’s total depth and simulate the allocation with firm.match.
  20. A share of every order, and with it the risk of every large one.

15.11 Interview questions

Interview question 15.1 ★ trader

Why is the bid–ask spread of a short-rate future almost always one tick?

Solution

Solution of Interview question 15.1.

The tick is large relative to the contract’s volatility over a trade’s horizon, and many makers compete: the spread cannot be narrower than a tick, and competition keeps it from being wider.

What the interviewer is looking for: large tick, competition.

Interview question 15.2 ★★ researcher

Derive the best response in the pro-rata game when aggressors never exhaust the book.

Solution

Solution of Interview question 15.2.

With fi=Xsi/Sf_i=Xs_i/S: E[fi]=μsi/S\mathrm{E}[f_i]=\mu s_i/S, E[fi2]=m2si2/S2\mathrm{E}[f_i^2]=m_2s_i^2/S^2; maximise hμp−γm2p2/2h\mu p-\gamma m_2p^2/2 over the share p=si/Sp=s_i/S: p∗=hμ/(γm2)p^\ast=h\mu/(\gamma m_2), so si=p∗S−i/(1−p∗)s_i=p^\ast S_{-i}/(1-p^\ast) if p∗<1p^\ast<1. In a symmetric equilibrium p=1/np=1/n, so if 1/n<p∗1/n<p^\ast every maker wants more and sizes grow without bound: the book-exhaustion term is what stops it.

What the interviewer is looking for: shares, and why the unbounded case arises.

Interview question 15.3 ★★ trader

You show 2 000 lots and a 10 000-lot order hits the bid. What happens next, and what should your system do?

Solution

Solution of Interview question 15.3.

You fill 2 000 times your share of the book; every maker is filled at once and the price likely moves through the level. Cancel all resting orders on that side, hedge in the most liquid related contract, and reassess before quoting again.

What the interviewer is looking for: correlated fills and immediate risk reduction.

Interview question 15.4 ★★ developer

Implement pro-rata allocation with rounding down, a minimum allocation and FIFO leftovers. What are the edge cases?

Solution

Solution of Interview question 15.4.

Shares by floor of qty times size over total; drop shares below the minimum; leftovers by time. Edge cases: aggressor larger than the book, all shares rounding to zero, orders fully filled before the leftover pass, ties in time.

What the interviewer is looking for: rounding, minimums, exhaustion.

Interview question 15.5 ★★ risk

Your firm’s displayed size in a pro-rata book is fifty times its position limit. Is that a breach?

Solution

Solution of Interview question 15.5.

It is a breach if a full fill would exceed the limit: pre-trade risk checks must count displayed size as potential position; the firm needs a limit on displayed size or a guarantee of cancellation.

What the interviewer is looking for: potential position.

Interview question 15.6 ★★★ researcher

How would you estimate, from public market data, how much of the displayed depth in a pro-rata book is over-quoting?

Solution

Solution of Interview question 15.6.

Compare depth with the distribution of aggressor sizes and with cancellations ahead of large prints; model makers’ wanted sizes from their behaviour in time-priority books of similar contracts.

What the interviewer is looking for: depth versus executed size and cancellation behaviour.

Terms defined in this chapter

See all 2333 terms in the glossary