Skip to content

Price-time priority

Price-time priority allocates better prices first and earlier orders within a price. Follow a FIFO queue, distinguish depth from queue position and check venue-specific exceptions.

Price-time priority is a matching rule that ranks eligible resting orders by price first and, at the same price, by their priority time: earlier orders execute before later ones. It is often called FIFO matching, for “first in, first out.” For a quant modelling passive execution, the consequence is immediate: a trade at your limit price can occur without filling your order.
The rule has two stages. An incoming buyer reaches the lowest eligible ask before higher asks; an incoming seller reaches the highest eligible bid before lower bids. Time breaks the tie within a price. An older, worse-priced order does not jump ahead of a newer, better-priced order.

A queue of orders, not just a quoted size

Consider an original synthetic order book on one venue in continuous trading. The best ask is USD 101 per share. Two displayed sell orders have equal eligibility: A arrived first for 100 shares, then B for 100 shares. Assume strict FIFO at this price, no hidden or reserve quantity, no amendments, cancellations or competing events, and a buyer permitted to pay 101.
An incoming buy for 150 shares produces:
Resting sell orderStarting sharesShares executedShares remaining
A — earlier1001000
B — later1005050
Total20015050

A is exhausted before B receives anything. B does not get half the incoming order merely because it supplied half the initial displayed size. That would be a different allocation rule.

FIFO queue at USD 101 per share: older A has 100 shares and newer B has 100. An incoming buy of 150 fills all 100 of A and 50 of B, leaving 50 of B. The level initially totals 200 shares, while B has only A’s 100 ahead.
FIFO queue at USD 101 per share: older A has 100 shares and newer B has 100. An incoming buy of 150 fills all 100 of A and 50 of B, leaving 50 of B. The level initially totals 200 shares, while B has only A’s 100 ahead.
Original synthetic single-venue example. Width represents shares. Solid blue is executed quantity; pale blue is the unfilled remainder. Orders have equal eligibility under the stipulated FIFO rule, with no intervening events.
The distinction between level size and queue position matters. Initially the level contains 200 shares, but B has 100 shares ahead of it. A price-level snapshot reporting “200 at 101” does not reveal that ordering. Nor does a later fall in aggregate size identify whether a cancellation removed quantity ahead of B or behind it.

The small equation behind a fill model

For one eligible resting order at a price, let vv be its remaining size, HH the shares with priority ahead of it, and QQ the incoming executable quantity that reaches this price. Under the frozen FIFO assumptions above, its filled quantity is

F=min⁡(v,max⁡(0,Q−H)).F=\min\bigl(v,\max(0,Q-H)\bigr).

All quantities are shares and nonnegative. For B, v=100v=100, H=100H=100 and Q=150Q=150, so F=50F=50. If only 100 incoming shares reach the level, B receives zero. If 200 reach it, B fills its entire 100 shares. Even more incoming volume cannot fill B beyond its remaining size.

Here QQ is quantity available at this price after better-priced liquidity has been processed. It is not automatically the original order size, and it is not every trade print at the price across all venues. A historical simulation must also account for when its own order could have reached the matching engine. Using a snapshot observed before submission as a guaranteed queue position builds an unwarranted fill into the result.
The Order Books lesson extends this calculation to cancellation ambiguity, proportional allocation and snapshot-based simulation. Its public page provides a preview; the full lesson requires membership.

Check what “time” means on the actual venue

FIFO is a specified allocation mechanism, not a promise that the oldest order anywhere always wins. CME documents FIFO alongside pro-rata and hybrid algorithms. Its FIFO documentation says increasing quantity, changing price or changing the account number loses priority and re-queues the order. A product's actual algorithm therefore belongs in the model specification.
Display status can add another ranking stage. Nasdaq Equity 4, Rule 4757 specifies price/display/time processing, including separate treatment of displayed and non-displayed interest. Rule 4756 preserves priority for a partial size reduction, while other modifications generally replace the order with a new timestamp, subject to stated exceptions. Hidden quantity, reserve refreshes and special order types require their own applicable provisions; the two-order illustration does not settle their priority.
For an execution strategy, time priority creates a trade-off. Repricing may improve the limit price while giving up accumulated queue position. Waiting can preserve priority but leave the order exposed to adverse selection: a fill may arrive when trading against that order is especially attractive to the other side. Queue priority helps explain who trades first; it does not establish that the resulting trade is profitable.

Sources

  • Rishi K. Narang, Inside the Black Box: A Simple Guide to Quantitative and High-Frequency Trading, second edition (Wiley, 2013), Chapter 7, “Aggressive versus Passive,” p. 121 — price ranking, visibility and time tie-breakers, and the contrast with proportional allocation. The queue and figure here are original.
  • CME Group: Supported Matching Algorithms, “FIFO” and algorithm list — FIFO and changes that lose priority; alternatives depend on the product.
  • Nasdaq Equity 4, Rules 4756–4757 — order timestamps, modification provisions and price/display/time ranking. Official rules checked 27 October 2026, Australia/Melbourne.
Last updated
  • market microstructure
  • execution
  • limit orders
  • queue position
← Back to the glossaryBack to top ↑