Price-time priority (FIFO matching)

Price-time priority, or first-in-first-out (FIFO) matching, is the rule by which an exchange fills resting orders: the best price first, and among orders at the same price, the earliest arrival first. It is the rule used for ES, NQ and most of CME's most traded futures, and it is why queue position decides who gets filled.

Senzoukria · Glossary · Updated September 2026


The rule

An incoming buy order is matched against the lowest offers first. Within one price level, resting orders are filled in the order of their timestamps. Databento's description of CME's FIFO algorithm puts it simply: aggressing orders match resting orders at the same price level by time priority until filled, and any residual quantity is left on the book.

A worked example

Bid queue at 5,000.00, in arrival order
OrderSizeArrivedAfter a 60-lot sellAfter a further 15-lot sell
A50FirstFilled 50Done
B20SecondFilled 10, 10 leftFilled 10
You5ThirdNothingFilled 5

What follows from the rule

  • Being early at a price is valuable. On a one-tick-spread contract, most of the difficulty of passive execution is the queue rather than the price.
  • Cancellations ahead of you shorten your wait without any trade printing.
  • An order modified in a way that loses priority goes back to the end of the line.
  • Size does not buy priority. A 500-lot order that arrived after you is filled after you.

Which products use it

According to Databento's summary of CME's matching algorithms, ES, NQ, ZN, ZF, ZB and CL use FIFO. Other products use different rules: SOFR futures outrights use an allocation algorithm with a pro-rata component, some Treasury and grain products use configurable mixes, and several options products use threshold pro-rata. The exchange's product reference is the authority for a given contract. Crypto exchanges publish their own matching rules.

In Senzoukria

The DOM ladder shows the displayed size at each price: the whole queue, ahead of and behind your order, without marking your own place in it. On Rithmic, the order-by-order feed is used for the DOM's iceberg badges and for the Liquidity tracker, which separates the size withdrawn from a level from the size executed there. The application does not publish an estimate of your queue position; the displayed size at your price and the prints at that price are the information available.

In the same section

Sources

This page in other languages

Frequently asked questions

Do all CME futures use price-time priority?
No. Many of the most traded ones do, including ES, NQ, the ZF, ZN and ZB Treasury futures and CL crude oil, but SOFR futures and a number of options and agricultural products use allocation, pro-rata or mixed algorithms. Check the exchange's product reference for the contract you trade.
Can I see my place in the queue?
Not directly on an aggregated DOM, which shows only the total size at each price. An order-by-order feed publishes each resting order separately, which makes the queue observable, but platforms usually show your own order from what they know they sent rather than from the feed.

Keep reading