---
title: "Rebates, Inverted Venues and Tiers"
book: "Market Making and High-Frequency Trading"
subject: quant
language: en
chapter: 17
exercises: 8
source: https://one-course.com/books/quant/11/en/chapter/17-rebates-inverted-venues-and-tiers
---

# Chapter 17 — Rebates, Inverted Venues and Tiers

Two venues show the same bid. One pays a passive fill thirty cents per hundred shares and the other charges ten, so the queue on the first is long, the queue on the second is short, and a market maker has to decide which one to stand in. In this chapter’s queue model, the order that joins 20 000 shares behind on the rebate venue loses 0.05 cent a share per order sent, rebate included, because nine of every ten fills it gets come from the level being swept; the order that joins 2 000 behind on the inverted venue breaks even after paying its fee. The rebate buys a place at the back of a long queue, and the queue is priced accordingly.

## 17.1 Fees as part of the spread

Book 1, chapter 9 describes maker-taker and inverted pricing, and One Quant Book 10, chapter 7 the fee-adjusted price and the effective tick: a passive order’s economic price is its limit price plus the fee it pays (or less the rebate it earns), and venues with different fees at the same displayed price are different prices. For a market maker the fee is part of the spread it earns.

**Definition 17.1 (Rebate capture).**

*Rebate capture* is the part of a passive market maker’s revenue that comes from the exchange’s rebate for adding liquidity rather than from the spread; a strategy that relies on it earns the rebate on fills that, before the rebate, would lose.

**As of September 2026 — The access fee cap and the fee pilot.**

The SEC’s amended Rule 610(c), published in October 2024, lowers the cap on fees for executions against protected quotations priced at $1.00 or more to $0.001 per share (from $0.003 set in 2005); an exemptive order of 31 October 2025 extended compliance to the first business day of November 2026. The SEC’s Transaction Fee Pilot, adopted in December 2018 to test a lower cap and a ban on rebates in 1 460 randomly selected stocks, was vacated by the D.C. Circuit on 16 June 2020.

Battalio, Corwin and Jennings found a negative relation between limit order execution quality and the level of the venue’s rebate or fee: orders resting where rebates are high fill less often and suffer more adverse selection when they do. The queue model of the next section shows why.

## 17.2 Queues on maker-taker and inverted venues

A resting bid at the back of a queue of $Q$ shares is filled by ordinary selling flow, which reaches the venue at rate $\lambda$, or by a sweep that takes the whole level and moves the price a tick lower; or the level is abandoned before either, when the bid rises away. The first kind of fill earns the half-spread less a small mark-out; the second loses nearly a tick. A long queue is filled mostly by sweeps: by the time ordinary flow reaches the back, the price has usually moved.

![Expected edge per passive order of 100 shares, in cents a share, against the shares queued ahead, on a maker-taker venue (rebate 0.30 cent, selling flow 500 shares a second) and an inverted venue (fee 0.10 cent, 300 shares a second); the level is swept every 30 seconds and abandoned every 20 on average; a fill from ordinary flow earns half a cent less 0.2, a fill in a sweep loses half a cent; circled, the typical queues (20 000 and 2 000 shares). 20 000 orders per point. Data: hf_rebates.by_queue.](https://one-course.com/images/onecourse/chapters/quant-11/hf-rebates-inverted-venues-and-tiers/fig-39028b061b1b.svg)

***Figure 17.1.** Expected edge per passive order of 100 shares, in cents a share, against the shares queued ahead, on a maker-taker venue (rebate 0.30 cent, selling flow 500 shares a second) and an inverted venue (fee 0.10 cent, 300 shares a second); the level is swept every 30 seconds and abandoned every 20 on average; a fill from ordinary flow earns half a cent less 0.2, a fill in a sweep loses half a cent; circled, the typical queues (20 000 and 2 000 shares). 20 000 orders per point. Data: `hf_rebates.by_queue`.*

At equal queues the rebate venue wins everywhere ([Figure 17.1](#fig-hf-rebates-inverted-venues-and-tiers-queue)): it pays instead of charging and gets more flow. But the queues are not equal, because every market maker has read the same fee schedule. At the typical queues, 20 000 shares on the rebate venue and 2 000 on the inverted one, the rebate venue’s order fills 42% of the time, 91% of its fills are sweeps, and it earns $-0.05$ cent a share per order; the inverted venue’s order fills 74% of the time, 24% of its fills are sweeps, and it earns $+0.005$. The queues equalise the venues roughly, as competition should, and what is left for a market maker is timing: joining a short queue on the rebate venue (0.40 cent at 2 000 shares) is the prize, and it goes to whoever gets there first (chapter 5).

## 17.3 Tiers and their cliffs

Exchanges pay larger rebates to members who add more volume, in tiers qualified on the month’s average daily added volume as a share of consolidated volume (Book 1, chapter 29, and One Quant Book 10, chapter 7). The tier’s rate applies to every share added in the month, which makes the threshold a cliff.

**Definition 17.2 (Tier cliff).**

A *tier cliff* is a volume threshold in a fee schedule at which a better rate applies retroactively to all of the month’s qualifying volume, so that the bill changes discontinuously as the threshold is crossed.

**Definition 17.3 (Marginal fee).**

The *marginal fee* of a share is the change in a member’s total bill for the month caused by adding that share; below a [tier cliff](#def-hf-rebates-inverted-venues-and-tiers-cliff) it includes the value of moving all the month’s volume to the better tier.

On a schedule that rebates 0.20 cent below 0.20% of consolidated volume (11 billion shares a day) and 0.29 above, a member adding 18 million shares a day pays a [marginal fee](#def-hf-rebates-inverted-venues-and-tiers-marginal) of $-0.20$ cent a share; at 21.9 million, the next 100 000 shares a day are worth $-20$ cents each, because they carry the whole month into the better tier; above the cliff the [marginal fee](#def-hf-rebates-inverted-venues-and-tiers-marginal) is $-0.29$.

## 17.4 Marginal fees and the volume decision

A member below a cliff can add volume it would not otherwise trade to reach the tier. The extra volume costs something: crossing spreads, adverse selection, the risk of trades it did not want. With a cost of 0.6 cent a padded share, a member with 18 million shares a day of natural volume needs 4 million more a day over the month; the tier is worth $584 000 in rebates and the padding costs $504 000: it pays, by $80 000. At 14 million of natural volume it would need 8 million more a day and lose $256 000. The break-even is 17.05 million a day ([Listing 17.2](#lst-hf-rebates-inverted-venues-and-tiers-chase), [Figure 17.2](#fig-hf-rebates-inverted-venues-and-tiers-chase)): the tier’s value falls with natural volume more slowly than the padding’s cost. Late in the month the extra needed each day grows: if the market can absorb at most 0.1% of consolidated volume a day from the member, the chase must start by the fourteenth of twenty-one trading days.

![Chasing a tier at 0.20% of 11 billion shares of consolidated volume (22 million a day): the value of the better rate on the month’s volume, the cost of the padding at 0.6 cent a padded share and the net, against the member’s natural added volume, starting on the first day. The chase pays above 17.05 million a day. Data: hf_rebates.chase_curve.](https://one-course.com/images/onecourse/chapters/quant-11/hf-rebates-inverted-venues-and-tiers/fig-15ee6a7eb807.svg)

***Figure 17.2.** Chasing a tier at 0.20% of 11 billion shares of consolidated volume (22 million a day): the value of the better rate on the month’s volume, the cost of the padding at 0.6 cent a padded share and the net, against the member’s natural added volume, starting on the first day. The chase pays above 17.05 million a day. Data: `hf_rebates.chase_curve`.*

Tiers make volume a decision with a price, and they give a member a reason to trade that has nothing to do with its customers or its models. Trading with oneself to reach a tier is wash trading (One Quant Book 3, chapter 16): forbidden, and detected.

## 17.5 Strategy files

**Strategy file 17.1 — Rebate-capture passive making.**

**Who pays you, and why.** The exchange, which pays for displayed liquidity to attract takers; and takers, through the spread.

**Instruments and venues.** Liquid stocks on maker-taker venues; one-tick names where the rebate is a large part of the spread.

**Signal.** The fee-adjusted edge of joining each queue: fill probability, the share of fills from sweeps, the rebate.

**Sizing and execution.** Join only queues short enough to fill from ordinary flow; cancel when the queue ahead grows or a sweep becomes likely.

**Costs.** Adverse selection on sweeps (91% of fills at the back of a 20 000-share queue in the model), clearing and regulatory fees.

**How it dies.** Queues priced to the rebate; the lower access fee cap (dated box) shrinking rebates with it.

**Horizon, capacity, infrastructure.** Seconds; queue position tracking (chapter 5); fast cancellation.

**Backtest honestly.** The queue ahead at each order’s arrival, including hidden and midpoint orders; fees by tier as they were.

**Sources.** Battalio, Corwin and Jennings (2016); this chapter.

**Strategy file 17.2 — Inverted-venue queue placement.**

**Who pays you, and why.** Takers who route to the venue that pays them, and so reach the inverted venue’s short queue first.

**Instruments and venues.** Inverted venues alongside maker-taker venues in the same names.

**Signal.** The short queue’s higher fill probability and lower sweep share, against its fee.

**Sizing and execution.** Rest where the queue is short enough; move between venues as queues change; use the inverted venue to be first at a new price level.

**Costs.** The passive fee (0.10 cent in the model).

**How it dies.** Crowding: an inverted queue as long as a maker-taker one loses more ($-0.24$ cent at 20 000 shares).

**Horizon, capacity, infrastructure.** Seconds; queue data from every venue.

**Backtest honestly.** Routing rules of the takers, which decide which venue’s flow comes first.

**Sources.** One Quant Book 10, chapter 7; this chapter.

**Strategy file 17.3 — Tier-aware volume management.**

**Who pays you, and why.** The exchange’s tier schedule: the better rate on all the month’s volume.

**Instruments and venues.** Every venue with volume tiers; the member’s routing across them.

**Signal.** Month-to-date volume against thresholds; the [marginal fee](#def-hf-rebates-inverted-venues-and-tiers-marginal) of each extra share.

**Sizing and execution.** Concentrate routing on the venue whose next tier is in reach; add volume only if the tier’s value exceeds its cost, and early in the month.

**Costs.** The cost of the extra trading (0.6 cent a share in the example); concentration risk on one venue.

**How it dies.** Schedules change monthly; lower fee caps compress the tiers.

**Horizon, capacity, infrastructure.** A month; a fee engine (`firm.feesched`).

**Backtest honestly.** The schedules in force each month, and the member’s own volume share.

**Sources.** Book 1, chapter 29; this chapter.

## 17.6 Tutorial: paid to wait, charged to wait

**Goal.** Compute the fee-adjusted edge of resting on each venue, and the break-even for chasing a tier. **End state:** [Figure 17.1](#fig-hf-rebates-inverted-venues-and-tiers-queue) and the numbers of the last two sections.

1. **The queue model**: three exponential clocks per order. `def queue_edge (Q: float , lam: float , mu_through: float , mu_away: float , fee: float , half_spread: float = 0.5 , adverse: float = 0.2 , lot: float = 100.0 , n: int = 20000 , seed: int = 0 ) -> dict : """Competing exponential clocks: the queue ahead plus our lot is consumed at rate lam; the level is swept at rate mu_through or abandoned at rate mu_away, whichever first.""" rng = np.random.default_rng(seed) t_fill = rng.gamma(shape=max ((Q + lot) / lot, 1.0 ), scale=lot / lam, size=n) # our lot filled by flow t_sweep = rng.exponential(1.0 / mu_through, n) t_away = rng.exponential(1.0 / mu_away, n) by_flow = (t_fill < t_sweep) & (t_fill < t_away) by_sweep = (t_sweep < t_fill) & (t_sweep < t_away) filled = by_flow | by_sweep gross = np.where(by_flow, half_spread - adverse, np.where(by_sweep, half_spread - 1.0 , 0.0 )) edge = gross - np.where(filled, fee, 0.0 ) p = float (filled.mean()) return {" fill_prob " : p, " sweep_share " : float (by_sweep.sum() / max (filled.sum(), 1 )), " edge_per_fill " : float (edge[filled].mean()) if filled.any() else 0.0 , " edge_per_order " : float (edge.mean()), " time_to_fill " : float (np.minimum(t_fill, t_sweep)[filled].mean()) if filled.any() else math.inf}` **Listing 17.1.** Filled by flow, filled by a sweep, or abandoned: the edge of a passive order including the venue’s fee. code/firm/rebatemm/firm_rebatemm.py
2. **The venues** and the sweep over queue lengths ( `hf_rebates.venues` , `hf_rebates.by_queue` ).
3. **The tier**: [marginal fees](#def-hf-rebates-inverted-venues-and-tiers-marginal) and the chase on `firm.feesched`’s schedule. `def chase (s: fs.Schedule, natural: float , tcv: float , days_left: int , days: int = 21 , loss: float = 0.3 ) -> dict : """Natural added volume `natural` a day all month. To reach the next tier's average by month end the member adds extra volume only on the days left, at `loss` cents a share (before fees). Gain: the better rate on every share added all month, plus the rate earned on the extra shares.""" nxt = s.next_tier(natural, tcv) if nxt is None : return {" extra_per_day " : 0.0 , " gain " : 0.0 , " cost " : 0.0 , " pays " : False } need_total = max (nxt.min_adav_share * tcv * days - natural * days, 0.0 ) extra = need_total / max (days_left, 1 ) now = -days * natural * s.add_rate(natural, tcv) then = -(days * natural + need_total) * nxt.add_rate gain = then - now cost = need_total * loss return {" extra_per_day " : extra, " gain " : gain, " cost " : cost, " pays " : gain > cost, " net " : gain - cost}` **Listing 17.2.** The chase: the extra volume needed, the tier’s value on all the month’s shares, and its cost. code/firm/rebatemm/firm_rebatemm.py

**What to change next.** Put the queues on `firm.exchsim` with two venues and real routing; let the sweep rate depend on the queue’s size; add a second schedule and route between them.

## 17.7 Build: the rebate and tier module

**Purpose.** Price a passive order by venue including fees and queue, and decide the month’s volume around [tier cliffs](#def-hf-rebates-inverted-venues-and-tiers-cliff).

**Interface.** `queue_edge(Q, lam, mu_through, mu_away, fee, half_spread, adverse, lot, n, seed)`, `monthly_bill`, `marginal_fee`, `chase(schedule, natural, tcv, days_left, days, loss)`, `last_day_to_chase`. Built on `firm.feesched` (Book 1).

**Rules.** Cents a share; positive fees paid by the member; tier rates apply to all the month’s added volume.

**Acceptance tests.** `code/firm/rebatemm/tests/`: with no sweeps the edge is the half-spread less the mark-out less the fee; longer queues fill less and more by sweeps; the monthly bill and [marginal fee](#def-hf-rebates-inverted-venues-and-tiers-marginal) by hand, the cliff’s spike; the chase’s volumes, gain and cost by hand; it fails at low natural volume; the last day to start.

**Stretch.** Queues on `firm.exchsim`; routing across several schedules; the lower access fee cap’s effect on queue lengths.

Sources and further reading

- R. Battalio, S. A. Corwin, R. Jennings, Can brokers have it all? On the relation between make-take fees and limit order execution quality, *Journal of Finance* 71(5), 2016, 2193–2238.
- US Securities and Exchange Commission, amendments to Rule 610, *Federal Register* 89 FR 81620, 8 October 2024; press release 2025-130.
- *New York Stock Exchange LLC v. SEC* , No. 19-1042 (D.C. Cir. 2020).

## 17.8 Exercises

**Exercise 17.1 ★.**

A bid at $20.00 on a venue paying a 0.30-cent rebate and a bid at $20.00 on a venue charging a 0.10-cent fee: what are their fee-adjusted prices for the passive buyer?

**Solution of Exercise 17.1.**

$19.997 on the rebate venue (the buyer pays $20.00 and receives 0.30 cent) and $20.001 on the inverted venue.

**Exercise 17.2 ★.**

A member adds 18 million shares a day at a 0.20-cent rebate. What is the month’s rebate over 21 days, and at 0.29?

**Solution of Exercise 17.2.**

$21\times18\,000\,000\times0.20$ cent $=\$756\,000$; at 0.29, $1 096 200.

**Exercise 17.3 ★.**

Why is the [marginal fee](#def-hf-rebates-inverted-venues-and-tiers-marginal) just below a [tier cliff](#def-hf-rebates-inverted-venues-and-tiers-cliff) so large?

**Solution of Exercise 17.3.**

The next shares move every share of the month into the better tier: 100 000 more shares a day at 21.9 million carry 0.09 cent on 22 million shares, 20 cents for each extra share.

**Exercise 17.4 ★★.**

Why does an order at the back of a long queue get mostly toxic fills?

**Solution of Exercise 17.4.**

Ordinary flow reaches the back of a long queue only after a long time; the event most likely to reach it first is a sweep that takes the whole level and moves the price through it.

**Exercise 17.5 ★★.**

Derive the break-even natural volume for chasing a tier: threshold 22 million, current rebate 0.20, next 0.29, cost 0.6 a padded share.

**Solution of Exercise 17.5.**

Padding pays when $T\cdot0.29-(T-v)\cdot0.6-v\cdot0.20>0$ with $T=22$ million: $v>22\times(0.6-0.29)/(0.6-0.20)=17.05$ million a day.

**Exercise 17.6 ★★.**

What does the lower access fee cap do to the rebate venue’s queue?

**Solution of Exercise 17.6.**

Rebates must fall with the taker fee they are paid from: the reason to queue there weakens, the queue shortens, and the fee-adjusted prices of the venues converge.

**Exercise 17.7 ★★★.**

*Coding.* With `firm.rebatemm.queue_edge`, find the queue length at which the rebate venue’s edge per order falls to zero.

**Solution of Exercise 17.7.**

About 12 800 shares ahead: shorter, the rebate venue’s order earns; longer, its sweeps outweigh its rebate.

**Exercise 17.8 ★★★.**

*Find the flaw.* “The rebate is 0.30 cent and our half-spread is 0.5, so every passive fill earns 0.8 cent.”

**Solution of Exercise 17.8.**

Only fills from ordinary flow earn the half-spread; at the back of a long queue 91% of fills are sweeps that lose half a cent before the rebate. The model’s fill earns $-0.13$ cent on average, rebate included.

## 17.9 Problem: Paid to Wait, Charged to Wait

**Problem 17.1.**

Weekend problem — paid to wait, charged to wait

A market maker chooses where to rest its bids and how much volume to add in the month.

**Part I — Fees.**

1. Define [rebate capture](#def-hf-rebates-inverted-venues-and-tiers-capture) .
2. Summarise the dated box.
3. What did Battalio, Corwin and Jennings find?
4. Why is a fee part of the spread a market maker earns?

**Part II — Queues.**

5. Describe the three outcomes of a resting order in the model.
6. Give fill probability, sweep share and edge at the typical queues.
7. Why do queues equalise the venues?
8. Where is the prize, and who gets it?

**Part III — Tiers.**

9. Define a [tier cliff](#def-hf-rebates-inverted-venues-and-tiers-cliff) and the [marginal fee](#def-hf-rebates-inverted-venues-and-tiers-marginal) .
10. Give the [marginal fee](#def-hf-rebates-inverted-venues-and-tiers-marginal) at 18, 21.9 and 22 million shares a day.
11. Compute the chase at 18 and 14 million.
12. When must the chase start?

**Part IV — The verdict.**

13. State the *named result* : the fee-adjusted edge of resting on each venue, and the month-end volume at which chasing the next tier stops paying.
14. Which venue would you rest on, and when?
15. What would a lower access fee cap change?
16. Where is the line between chasing a tier and wash trading?
17. How should a fee engine feed the quoting engine?
18. Which strategy file is most exposed to schedule changes?
19. How would you measure the share of your fills that are sweeps?
20. In one sentence: what does a rebate buy?

**Solution of Problem 17.1.**

1. See [Definition 17.1](#def-hf-rebates-inverted-venues-and-tiers-capture) .
2. Access fee cap to $0.001 a share for quotes of $1 or more, compliance by November 2026; the fee pilot vacated in June 2020.
3. Execution quality falls as the venue’s rebate or fee rises.
4. The fee changes the price actually received for a fill.
5. Filled by flow (half-spread less mark-out), filled by a sweep (half-spread less a tick), abandoned (nothing).
6. Rebate venue: 42%, 91%, $-0.05$ cent an order; inverted: 74%, 24%, $+0.005$ .
7. Makers join the venue with the better edge until its queue removes the advantage.
8. In short queues on the rebate venue (0.40 cent at 2 000 shares); for the first to join.
9. See [Definition 17.2](#def-hf-rebates-inverted-venues-and-tiers-cliff) and [Definition 17.3](#def-hf-rebates-inverted-venues-and-tiers-marginal) .
10. $-0.20$ , $-20$ and $-0.29$ cent.
11. At 18 million: gain $584 000, cost $504 000, net $80 000; at 14 million: net $-\$256\,000$ .
12. By day 14 of 21, if the market absorbs at most 0.1% of consolidated volume a day.
13. Rebate venue $-0.05$ and inverted $+0.005$ cent a share an order at typical queues; chasing the tier stops paying below 17.05 million shares a day of natural volume.
14. The inverted venue at typical queues; the rebate venue only when its queue is short.
15. Smaller rebates, shorter queues, venues closer in fee-adjusted terms.
16. Trades with a genuine counterparty and risk versus trades with oneself or a coordinated party.
17. With the [marginal fee](#def-hf-rebates-inverted-venues-and-tiers-marginal) per venue, updated with the month’s volume.
18. [Rebate capture](#def-hf-rebates-inverted-venues-and-tiers-capture) .
19. Tag each fill by whether the level was fully consumed within a short window after it.
20. A place at the back of a queue whose value the market has already priced.

## 17.10 Interview questions

**Interview question 17.1 ★ trader.**

Why would anyone pay to post on an inverted venue?

**Solution of Interview question 17.1.**

Takers route there first, so its short queue fills sooner and with fewer sweeps; being first at a price is worth more than the fee.

*What the interviewer is looking for: queue length and routing order.*

**Interview question 17.2 ★★ researcher.**

How would you estimate the fill probability and mark-out of a passive order as a function of the queue ahead, from your own order data?

**Solution of Interview question 17.2.**

For each order, the queue ahead at entry, whether and how it filled, and the mid after; fit fill probability and mark-out by queue bucket, separating fills from sweeps.

*What the interviewer is looking for: conditioning on queue ahead.*

**Interview question 17.3 ★★ trader.**

It is the 19th and you are 3% below a tier threshold on one venue. What do you do?

**Solution of Interview question 17.3.**

Compute the tier’s value on the month’s volume, the extra needed per remaining day and its cost; route natural flow to that venue first; pad only if it pays and the market can absorb it.

*What the interviewer is looking for: value versus cost, with capacity.*

**Interview question 17.4 ★★ developer.**

Design a fee engine that gives the quoting engine the [marginal fee](#def-hf-rebates-inverted-venues-and-tiers-marginal) of the next share on each venue in real time.

**Solution of Interview question 17.4.**

Month-to-date volumes per venue, the schedules as data, the tier each would reach, and the [marginal fee](#def-hf-rebates-inverted-venues-and-tiers-marginal) of the next share including cliffs, recomputed on each fill and published with the book data.

*What the interviewer is looking for: schedules as data, incremental updates.*

**Interview question 17.5 ★★ risk.**

A desk’s P&L is 80% rebates. What risks does that concentrate?

**Solution of Interview question 17.5.**

Dependence on the fee schedules (which change monthly and are capped by regulation), on one venue’s tier, and on fills that lose before the rebate.

*What the interviewer is looking for: regulatory and schedule risk.*

**Interview question 17.6 ★★★ researcher.**

In the three-clock model, derive the probability that the order is filled by flow before a sweep or abandonment when the queue is consumed at constant speed.

**Solution of Interview question 17.6.**

If the queue is consumed in time $\tau=(Q+\ell)/\lambda$ and the other clocks are exponential with total rate $\mu=\mu_{\mathrm{t}}+\mu_{\mathrm{a}}$, the probability is $e^{-\mu\tau}$.

*What the interviewer is looking for: competing clocks.*
