Microstructure and Execution · Execution
6Tick Size, Queues and Priority
From October 2016 the SEC’s tick size pilot quoted about twelve hundred small stocks in five-cent increments instead of one; two of its three groups of four hundred also traded in them. Spreads widened, displayed depth grew, and the value of standing first in a queue changed for every market maker in those stocks. The tick is the market’s smallest unit of price, and it decides more than it seems: whether liquidity providers compete on price or on time, how long queues are, how long an order waits and what its place in line is worth. This chapter runs the same order flow on grids of one, two, five and ten cents in the exchange simulator, values a queue slot, and reads the pilot the way it was designed to be read.
6.1 Large-tick and small-tick assets
Definition 6.1 (Relative tick size)
The relative tick size of an instrument is its tick size divided by its price, usually in basis points. A one-cent tick is 25 basis points of a four-dollar stock and a quarter of a basis point of a four-hundred-dollar one.
Definition 6.2 (Large-tick and small-tick assets)
A large-tick asset is one whose spread is one tick almost all the time: the tick binds, and liquidity providers who would quote a narrower spread cannot. A small-tick asset has a spread of several ticks and a sparse book: the tick hardly constrains prices.
The relative tick size alone does not decide which kind an asset is: what matters is the tick against the spread the asset would have without it, which depends on volatility and activity. Harris (1994) predicted from the constraint what later studies measured: a larger tick widens spreads and concentrates depth at fewer prices. A large tick turns price competition into time competition: when the price cannot improve, the only way to be first is to arrive first, which is where the value of queue position and much of the race for speed come from (Yao and Ye, 2018).
How large is a tick for a given asset? Robert and Rosenbaum (2011) answered with a model.
Definition 6.3 (Uncertainty-zone model)
In the uncertainty-zone model of Robert and Rosenbaum, the traded price changes only when the efficient price moves far enough from the last traded price: around each mid-tick value lies a zone of width , , and the traded price moves to a new tick when crosses the zone’s far edge. The parameter measures the aversion of market participants to price changes of one tick; Dayri and Rosenbaum (2015) call the implicit spread of a large-tick asset.
A small makes price changes of one tick bounce back and forth: a new price needs to travel past the mid-tick and is then likely to revert. At the traded price is a sampled Brownian motion. The estimator counts, among one-tick changes of the traded price, the continuations (same direction as the previous change) and the alternations (opposite direction): . Dayri and Rosenbaum call a tick optimal when with a spread still of one tick; below one half, the tick is too large for the asset.
def eta_hat(prices) -> dict:
d = np.diff(np.asarray(prices, float))
d = d[d != 0]
one = np.abs(d[1:]) == 1
same = np.sign(d[1:]) == np.sign(d[:-1])
n_cont, n_alt = int(np.sum(one & same)), int(np.sum(one & ~same))
return {"eta": n_cont / (2 * n_alt) if n_alt else float("nan"), "continuations": n_cont, "alternations": n_alt}
The experiment keeps firm.tape’s order flow fixed and changes only the grid: every limit order goes to firm.exchsim with its price rounded away from the market, bids down and asks up, to a multiple of one, two, five or ten cents (Figure 6.1). The providers do not react to the new grid; the experiment isolates what the grid does to the same orders.
class CoarseTape(TapeBackground):
"""firm.tape's flow on a coarser grid: the same orders, their limit prices rounded to `mult` cents."""
mult: int = 1
def build(self, sim, venue_cfg, jumps=()):
cents = tuple(replace(i, tick=100) if i.locate == self.locate else i
for i in venue_cfg.instruments)
recs, truth = super().build(sim, replace(venue_cfg, instruments=cents), jumps)
step = 100 * self.mult
out = []
for t, m in recs:
if type(m).__name__ == "In_O" and m.price > 0:
p = (m.price // step) * step if m.side == "B" else -((-m.price) // step) * step
m = m._replace(price=p)
out.append((t, m))
return out, truth
Over four simulated hours per grid, the time-weighted spread is 1.07, 2.06, 5.03 and 10.03 cents, one tick 94.2%, 97.1%, 99.4% and 99.7% of the time. The displayed size at the best, averaged over both sides, grows from 1 740 shares to 3 020, 6 560 and 10 780; the number of orders queued at each best from 8.7 to 15.3, 33.6 and 55.5. The market orders are the same and pay the grid: an effective half-spread of 0.56, 1.05, 2.53 and 5.02 cents. The simulated stock is a large-tick asset already at one cent: is 0.108 (353 continuations against 1 632 alternations), 0.058, 0.019 and 0.007 on the coarser grids. The implicit spread is 0.22, 0.23, 0.19 and 0.14 cents: nearly a property of the asset, while the quoted spread is a property of the grid.
As of September 2026 — A half-penny tick for US stocks
The SEC’s 2024 amendments to Rule 612 of Regulation NMS (Release 34-101070, published October 8, 2024) set a minimum pricing increment of USD 0.005 for quotes and orders priced at USD 1.00 or more in NMS stocks whose time-weighted average quoted spread is USD 0.015 or less, keep USD 0.01 for the others, and set no minimum increment for trades. Compliance, first due November 3, 2025, was deferred by exemptive orders of October 31, 2025 and June 11, 2026 to the first business day of November 2027.
6.2 The value of queue position
Definition 6.4 (Queue value)
The queue value of a limit order is its expected profit per share from the moment it joins a queue: the probability that it fills times the spread it captures on a fill less the adverse selection it suffers after one, net of fees. The value of queue position is the difference between the queue values of orders at the front and at the back of the same queue.
An order at the front of the queue fills first and fills against almost every market order that reaches its price, informed or not; an order at the back fills only when a large or persistent flow has eaten everything ahead of it, which is more often flow that goes on moving the price. Position changes both factors of the value, the probability and the conditional adverse selection, and Moallemi and Yuan (2016) built a model of the value of a queue position from them. A slot’s value in the birth–death queue of chapter 1 is
with orders ahead, market orders at rate , cancellations at rate per order ahead and for ours, the half-spread captured and the adverse selection conditional on a fill.
The simulator measures both factors. mx_ticks.queue_study follows every limit order that joins or improves the best: the orders and shares ahead of it at entry, its fills, the time to its first fill, and per fill the capture and the move of the mid 30 seconds later. On the one-cent grid, an order that opens a new best level fills 54% of the time and earns 0.57 cents per posted share; behind 20 or more orders it fills 6% of the time and earns 0.001 cents. Its adverse selection per filled share goes from cents at the front, a gain (orders that open a level are placed by providers on the side the efficient price favours), to 0.48 behind 20 orders. On coarser grids the front is worth more: 0.66, 1.26 and 2.05 cents per posted share at two, five and ten cents, against 0.005, 0.094 and 0.188 at the back. The value of queue position, front less back, is 0.57, 0.66, 1.16 and 1.86 cents: the larger the tick, the more there is to win by being first.
mx_ticks.tick_experiment.6.3 Queue dynamics and the time to fill
Queues lengthen with the tick, so orders wait longer: the median time from entry to first fill, among orders that fill, is 11.3 seconds on the one-cent grid, 24.1 at two cents, 55.7 at five and 81.4 at ten; the share of joining orders that fill at all falls from 15.3% to 12.3%, 8.0% and 5.6%. The birth–death queue predicts the shape of the fill probability but not its level (Figure 6.2, left). At one cent, with market orders per second per side and cancellations per order per second measured on the same sessions, it gives 0.76 at the front, 0.44 behind three orders and 0.13 behind twenty, against 0.54, 0.22 and 0.06 observed. The model’s queue is a line that only shortens; a real best level can be overtaken by a better one, which sends everyone in it back to the second level, and orders cancel faster when the price moves against them (chapter 1 found the same gap for orders that are jumped). A queue model for trading has to include the price moving away.
The expected time to fill in the model, with our order never cancelled, is : the front waits one market-order interarrival, each order ahead adds the time for it to be traded or cancelled. The tutorial computes the full distribution with firm.queues.fill_time_cdf (One Quant Book 4, chapter 8) and compares it with the observed times.
6.4 Tick-size experiments
Definition 6.5 (Difference-in-differences)
A difference-in-differences estimate of a treatment’s effect compares the change in an outcome for treated units between before and after with the change for untreated (control) units over the same dates: . It removes what changed for everyone, under the assumption that treated and control outcomes would have moved in parallel without the treatment; in a regression it is the coefficient on the interaction of the treated and after indicators.
The pilot was built for this estimate. The SEC ordered the exchanges and FINRA to submit a plan in June 2014 and approved it on May 6, 2015; it started on October 3, 2016 for two years. Three test groups of about four hundred small stocks each were drawn: the first quoted in five cents and traded at the old increment, the second quoted and traded in five cents (with exemptions for midpoint, retail and negotiated trades), the third added a trade-at rule that kept executions on venues displaying the best price. The remaining eligible stocks were the control group.
The control group matters because the market changed at the same time: in the SEC staff’s comparison of June–September 2016 with November 2016–February 2017, spreads rose significantly for every group, control included. Against the control, the average relative quoted spread of the test groups rose between five and seven basis points (the sample’s median quoted spread was 18 basis points). Displayed depth at the best rose in all test groups, but the staff warned that the rise is largely mechanical, since depth from several one-cent levels consolidates at one five-cent price; depth within five cents of the best did not rise significantly in the first two groups. Albuquerque, Song and Yao (2020) and Chung, Lee and Rösch (2020) studied the pilot’s effects on prices and on the trading costs of small and large orders.
mx_ticks.did_panel.The simulator can run a pilot where the truth is known. Sixteen simulated stocks with random liquidity are observed for 20 minutes before and 20 after, in three windows of five minutes each (96 observations). After, every stock sees 50% more efficient-price moves and 20% more noise orders; the eight treated stocks also move to a five-cent grid. For depth at the best (Figure 6.3), the treated stocks’ before–after change is shares, the controls’ , and the difference-in-differences . Its standard error clustered by stock is 2 270, against 1 340 if the windows are treated as independent: the windows of one stock share its liquidity, and ignoring that overstates the precision by a factor of 1.7 (clustered standard errors, One Quant Book 4, chapter 16). For the quoted spread the estimate is cents against a before–after change of : the common shock hardly moved spreads here, which is exactly what a researcher could not know without the control group.
6.5 Priority rules beyond time
Price–time priority is not the only rule (One Quant Book 1, chapter 19). Under pro rata, an incoming order is split across the resting orders at the best in proportion to their sizes; under a top-order rule the order that set the price gets a share first; some venues rank displayed before hidden, round lots before odd lots, or a broker’s own orders first. Each rule changes what a place in line is worth, and so what providers compete on.
On the five-cent grid with the same flow, pure pro rata flattens the queue: the share of orders that receive a fill is 0.78 at the front and 0.58 behind 20 or more orders, against 0.70 and 0.05 under time priority, and the median wait for a first fill behind 20 orders drops from 76.7 seconds to 4.3. Fills are partial, so the value per posted share still falls with the queue (0.72 cents at the front, 0.093 at the back), but the value of position, front less back, halves from 1.20 cents to 0.63. Pro rata rewards size instead of speed: a provider who wants more of each fill posts more than she wants to trade, which is why pro-rata futures markets add minimum allocations and top-order shares.
mx_ticks.priority_compare.6.6 Tutorial: five cents instead of one
Goal. Run the same market on four grids, value a queue slot two ways, and estimate a tick change as the pilot did. End state: Figures 6.2, 6.3 and 6.4 and the numbers of sections 1 to 5.
- Grids.
mx_ticks.session(mult, seconds, seed)formultin 1, 2, 5, 10;grid_statsfor spread, depth and one-tick time. - Queues.
queue_study(tape, mult)andfirm_queuevalue.empirical(entries, edges, by);rates(tape)for and , thenfill_probabilityandfirm.queues.fill_time_cdffor the model. - Tick.
eta_hatandimplicit_spreadon the traded prices of each grid. - Priority.
priority_compare()runs the five-cent grid under time priority and pro rata. - Experiment.
did_panel()simulates the treated and control stocks and fits the interaction with clustered standard errors (statsmodels); draw withfig_ticks.py.
What to change next. Let the liquidity providers react to the grid (post fewer, larger orders when the tick is large) and see which of the mechanical effects survive; add a trade-at rule on a second venue with firm.exchsim’s multi-venue simulator.
6.7 Build: the value of a queue slot
Purpose. What a place in a queue is worth, used by the placement logic of chapter 17, by the venue choice of chapter 18 and by Book 11’s market makers.
Interface. fill_probability(n, mu, theta, nu), expected_time_to_fill(n, mu, theta), slot_value(…); ENTRY and empirical(entries, edges, by) for observed orders; eta_hat(prices), implicit_spread(eta, tick).
Rules. The birth–death queue of chapter 1; empirical values per posted share, fills partial or whole, adverse selection measured from the mid just before each fill; from one-tick changes of the traded price only.
Acceptance tests. code/firm/queuevalue/tests/: the fill probability against a direct simulation of the queue; the expected wait by hand; bucket statistics on hand-made orders; on hand-made price paths (a pure bounce gives zero).
Stretch. A queue model in which the best price can move (a new level in front, the level emptied), as in Moallemi and Yuan; queue values net of the fees of chapter 7.
Sources and further reading
- L. Harris, “Minimum price variations, discrete bid-ask spreads, and quotation sizes”, Review of Financial Studies 7(1), 1994.
- C. Y. Robert and M. Rosenbaum, “A new approach for the dynamics of ultra-high-frequency data: the model with uncertainty zones”, Journal of Financial Econometrics 9(2), 2011.
- K. Dayri and M. Rosenbaum, “Large tick assets: implicit spread and optimal tick size”, Market Microstructure and Liquidity 1(1), 2015.
- C. C. Moallemi and K. Yuan, “A model for queue position valuation in a limit order book”, working paper, 2016.
- C. Yao and M. Ye, “Why trading speed matters: a tale of queue rationing under price controls”, Review of Financial Studies 31(6), 2018.
- E. Hu, P. Hughes, J. Ritter, P. Vegella and H. Zhang, Tick Size Pilot Plan and Market Quality, SEC Division of Economic and Risk Analysis white paper, 2018.
- R. Albuquerque, S. Song and C. Yao, “The price effects of liquidity shocks: a study of the SEC’s tick size experiment”, Journal of Financial Economics 138(3), 2020.
- K. H. Chung, A. J. Lee and D. Rösch, “Tick size, liquidity for small and large orders, and price informativeness: evidence from the Tick Size Pilot Program”, Journal of Financial Economics 136(3), 2020.
- U.S. Securities and Exchange Commission, Regulation NMS: Minimum Pricing Increments, Access Fees, and Transparency of Better Priced Orders, Release 34-101070, 2024.
6.8 Exercises
Exercise 6.1 ★
What is the relative tick size of a one-cent tick on a stock at four dollars and on one at four hundred dollars? Which is more likely to be a large-tick asset, and what else would you need to know?
Solution
Solution of Exercise 6.1.
basis points and basis points. The four-dollar stock is more likely to be large-tick, but the answer depends on the spread it would have without the constraint, which depends on its volatility and activity: a very active, low-volatility stock can be large-tick at a high price.
Exercise 6.2 ★
Over a day a stock’s traded price makes 40 one-tick continuations and 160 one-tick alternations. Estimate and the implicit spread for a one-cent tick. Is the tick too large in the sense of Dayri and Rosenbaum?
Solution
Solution of Exercise 6.2.
; implicit spread cents. Yes: is well below one half.
Exercise 6.3 ★
An order joins a queue with two orders ahead; market orders arrive at 0.2 per second, each order cancels at 0.05 per second, ours included. What is its fill probability, and its expected time to fill if it is never cancelled?
Solution
Solution of Exercise 6.3.
. Expected time: seconds.
Exercise 6.4 ★★
On a five-cent grid, an order at the front fills with probability 0.7 and suffers 0.4 cents of adverse selection per filled share; one at the back fills with probability 0.06 and suffers 0.9. Both capture 2.5 cents. What is each slot worth per share, and what is the front worth over the back for 500 shares?
Solution
Solution of Exercise 6.4.
Front: cents per share; back: . The front is worth 1.37 cents per share more: USD 6.87 for 500 shares.
Exercise 6.5 ★★
In the simulated experiment the treated stocks’ depth at the best goes from 2 400 to 9 960 shares and the controls’ from 2 750 to 2 350. Compute the before–after change and the difference-in-differences, and say what assumption makes the second a causal effect.
Solution
Solution of Exercise 6.5.
Before–after: . Difference-in-differences: . It is causal if, without the new grid, the treated stocks’ depth would have changed like the controls’ (parallel trends); here it holds by construction, because the simulator draws the stocks alike.
Exercise 6.6 ★★
Why is the standard error of the depth estimate larger when clustered by stock (2 270) than when the 96 windows are treated as independent (1 340)? Which should you report?
Solution
Solution of Exercise 6.6.
The three windows of one stock share its liquidity and its random draws, so they are positively correlated and carry less information than three independent observations; the independent formula ignores that and understates the error by a factor of 1.7. Report the clustered one; with only 16 clusters, a small-sample correction or a wild bootstrap is safer still.
Exercise 6.7 ★★★
Coding. Run queue_study on the five-cent grid under time priority and under pro rata. Compare the fill probability and the value per posted share at the front and behind 20 orders, and explain why the value still falls with the queue under pro rata.
Solution
Solution of Exercise 6.7.
Two hours per rule on seeds 7 and 8: under time priority 0.70 of front orders and 0.05 of those behind 20 or more receive a fill, worth 1.28 and 0.081 cents per posted share; under pro rata 0.78 and 0.58, worth 0.72 and 0.093. Pro rata gives each resting order a slice of every fill in proportion to its size, so an order deep in a long queue still receives only a small part of its size, and the value per posted share falls with the length of the queue it shares.
Exercise 6.8 ★★★
Find the flaw. “The tick size pilot raised displayed depth at the best quotes in every test group, so it made small stocks more liquid.”
Solution
Solution of Exercise 6.8.
Depth at the best rises mechanically when several one-cent levels are pooled at one five-cent price: the same shares are counted at fewer prices. The SEC staff found no significant change in depth within five cents of the best for the first two groups, and quoted spreads rose five to seven basis points against the control group. The simulated experiment shows the same: depth at the best grows 3.8-fold on a five-cent grid with no new orders at all, while every market order pays 4.5 times more.
6.9 Problem: Five Cents Instead of One
Problem 6.1
Weekend problem — five cents instead of one
A regulator is asked to widen the tick of small stocks to help market makers. Run the change in the simulated market and compare it with the pilot.
Part I — The grid.
- Define a large-tick asset and say why the relative tick size alone does not decide it.
- What does the experiment hold fixed, and what does it change?
- Give the mean spread and the one-tick share of time on the one- and five-cent grids.
- How do the displayed size and the number of orders at the best change?
- What do market orders pay on each grid, and why is that mechanical here?
Part II — Queues.
- Define queue value and write the birth–death value of a slot.
- Give the median time to first fill on the four grids.
- Compare the birth–death fill probabilities with the observed ones at one cent, and explain the gap.
- Give the value of the front and of the back of the queue on each grid.
- Why is adverse selection worse at the back?
Part III — The tick.
- State the uncertainty-zone estimator of .
- Give and the implicit spread on the four grids.
- What does the near-constant implicit spread say about the asset?
- Where does the half-penny tick of the 2024 amendments apply?
Part IV — The experiment and the verdict.
- Describe the pilot’s three test groups.
- Why did the SEC staff need the control group?
- What did it find for quoted spreads and for depth?
- Give the simulated difference-in-differences for depth and its two standard errors.
- State the named result: the change in spread, depth and queue value when the tick is multiplied by five in the simulated market, against the pilot’s measured effects.
- In one sentence: who gains from a five-cent tick?
Solution
Solution of Problem 6.1.
1. One whose spread is one tick almost always; the tick must be compared with the spread the asset would have unconstrained, which depends on volatility and activity. 2. It holds firm.tape’s order flow fixed and changes only the price grid (limit prices rounded away from the market). 3. 1.07 cents and 94.2%; 5.03 cents and 99.4%. 4. 1 740 to 6 560 shares, 8.7 to 33.6 orders. 5. 0.56 and 2.53 cents of effective half-spread: the same market orders cross a spread that is now one five-cent tick. 6. Expected profit per share from joining; . 7. 11.3, 24.1, 55.7 and 81.4 seconds. 8. 0.76, 0.44 and 0.13 predicted at 0, 3 and 20 orders ahead against 0.54, 0.22 and 0.06: the model ignores new levels in front and faster cancellations when the price moves. 9. Front 0.57, 0.66, 1.26 and 2.05 cents per posted share; back 0.001, 0.005, 0.094 and 0.188. 10. The back fills only when the flow has eaten the whole queue, which is more often flow that keeps moving the price: at one cent, cents at the front against 0.48 behind 20 orders. 11. over one-tick changes of the traded price. 12. 0.108, 0.058, 0.019 and 0.007; 0.22, 0.23, 0.19 and 0.14 cents. 13. The implicit spread is close to a property of the asset: the quoted spread follows the grid, the asset’s own cost of a price change does not. 14. NMS stocks priced at USD 1.00 or more whose time-weighted average quoted spread is USD 0.015 or less, for quotes and orders. 15. About 400 stocks each: quoting in five cents; quoting and trading in five cents; the same plus trade-at. 16. Spreads rose for every group between the two periods, control included. 17. Quoted spreads up five to seven basis points against the control; depth at the best up, mostly mechanically; depth within five cents not significantly changed in the first two groups. 18. shares; 2 270 clustered by stock, 1 340 unclustered. 19. Named result: multiplying the tick by five on the same flow multiplies the spread by 4.7 (1.07 to 5.03 cents), the displayed size at the best by 3.8, the median time to fill by 4.9 and the value of the front of the queue by 2.2 (0.57 to 1.26 cents per posted share); the pilot measured a five-to-seven basis point rise of quoted spreads against controls and a mostly mechanical rise of depth at the best. 20. Liquidity providers at the front of the queue, paid by every order that crosses the wider spread.
6.10 Interview questions
Interview question 6.1 ★ trader
What is a large-tick stock, and how does trading one differ from trading a small-tick stock?
Solution
Solution of Interview question 6.1.
Its spread is one tick almost always and its queues are long; trading it is a question of queue position and timing (joining early, not paying the spread), while a small-tick stock has a sparse book, spread changes and competition on price.
What the interviewer is looking for: Spread pinned at one tick; queues; price against time competition.
Interview question 6.2 ★★ trader, researcher
Why is queue position valuable, and when is it worth more?
Solution
Solution of Interview question 6.2.
The front fills more often and against less informed flow; the back fills rarely and mostly when the price is moving through it. It is worth more when the tick is large relative to the asset’s natural spread, queues are long, and priority is by time.
What the interviewer is looking for: Both factors (probability and conditional adverse selection); the tick; the priority rule.
Interview question 6.3 ★★ researcher
An order sits behind orders. Write a model for its fill probability and say what it leaves out.
Solution
Solution of Interview question 6.3.
A birth–death queue: market orders at rate take the front, orders ahead cancel at , ours at : . It leaves out price moves (a better level forming, the level emptying), state-dependent cancellations, market-order sizes and hidden orders.
What the interviewer is looking for: The formula; its missing price dynamics.
Interview question 6.4 ★★ researcher
How would you estimate the effect of a tick-size change on spreads from a pilot with treated and control stocks?
Solution
Solution of Interview question 6.4.
Difference-in-differences: regress spreads on treated, after and their interaction with stock and date controls, standard errors clustered by stock; check pre-trends and the balance of the groups, and report by pre-period spread (the constraint binds only where the old spread was below the new tick).
What the interviewer is looking for: Control group; interaction; clustering; heterogeneity.
Interview question 6.5 ★★ trader
You make markets in a pro-rata futures contract. How does your quoting differ from a price–time equity market?
Solution
Solution of Interview question 6.5.
Position matters less and size more: fills are split by size, so I post more than I want to trade and manage the overfill risk, watch the top-order and minimum-allocation rules, and cancel faster when the queue’s total size could fill me too much at once.
What the interviewer is looking for: Oversizing; allocation rules; fill risk.
Interview question 6.6 ★★★ researcher
How would you tell whether a stock’s tick is too large?
Solution
Solution of Interview question 6.6.
Check the share of time the spread is one tick and the queue lengths, then estimate from one-tick continuations and alternations: well below one half, with a spread pinned at one tick, means the tick is large relative to the asset’s implicit spread .
What the interviewer is looking for: One-tick share; queue lengths; the uncertainty-zone estimator.