Skip to main content
Back to research
Order ExecutionFill QualityFutures TradingOrder Flow

Your Place in the Queue: How Limit Orders Get Filled at CME

Why price can touch your limit order without filling it. Learn how CME's FIFO matching works for futures like ES and NQ, what sends your order to the back of the line, and how to read your place in the queue.

NexTick360 Team12 min read

Every futures trader knows this moment. You rest a buy limit at a support level. Price drops to your level and trades there, and you wait for the fill. Then price lifts away, and your order is still working. Price touched your level. You never got filled.

It feels like the market cheated you. It didn't. Your order was in a line, and the line didn't reach you. Understanding that line, how it forms, what moves you forward and what sends you to the back, is one of the most practical things a limit-order trader can learn.

This article explains how CME Group matches orders, using CME's own documentation, and how to think about your place in the queue.

How CME Matches Orders

Every trade at CME has two sides: an order already resting on the book, and an incoming order that trades against it. CME calls the incoming order the aggressor: "an incoming order matching with one or more orders resting on the order book." The aggressor removes resting quantity, and sometimes whole price levels, from the book.

When an aggressor arrives, CME's documentation describes three steps:

  1. Determine the current prices opposite the aggressor order.
  2. Determine the quantity at the best price opposite the aggressor.
  3. Allocate that resting quantity to trade with the aggressor, using the market's matching algorithm.

Step 3 is where your place in the queue is decided, and the answer depends on which algorithm the product uses.

FIFO: First In, First Out

CME's documentation describes the FIFO algorithm in two sentences: "The FIFO algorithm uses price and time as the only criteria for filling an order. In this algorithm, all orders at the same price level are filled according to time priority; the first order at a price level is the first order matched."

So at any single price, resting orders form a line in the order they arrived. An aggressor that sells into the bid fills the oldest bid at that price first, then the next oldest, and so on, until either the aggressor is filled or the price level is empty.

Which Products Use FIFO

CME supports several matching algorithms, not just FIFO. Some products use pro-rata allocation, which splits an aggressor across resting orders according to their size. CME's documentation names SOFR futures, for example, as using a pro-rata allocation algorithm. Other algorithms combine steps, such as giving priority to the first order that improves the market.

For the equity index futures most day traders watch, the rule is FIFO. CME's FAQ on Micro E-mini equity index futures states that Micro E-mini futures use the FIFO algorithm, "identical to their E-mini counterparts." That covers the E-mini S&P 500 (ES) and E-mini Nasdaq-100 (NQ) and their micros.

If you trade other markets, check the product's matching algorithm in CME's product reference resources rather than assuming. The rest of this article assumes FIFO.

What Sends Your Order to the Back

Your time priority is valuable. Under FIFO it is the only thing separating you from the orders behind you at the same price. CME's documentation is specific about what costs you that priority: "an order loses order priority and is re-queued when changed in any of the following ways:

  • Increase the quantity
  • Change the price
  • Change the account number"

Three practical consequences follow.

Adding size costs you your place. If you have a 2-lot working near the front of the line and increase it to 4, the whole order goes to the back. If you want more size at that price and want to keep your place, a separate new order keeps the original where it is. The new order starts at the back, but the old one doesn't lose its place.

Reducing size is not on the list. CME's list of changes that re-queue an order includes increasing the quantity, not reducing it. Check how your platform sends a size reduction, though: a platform that cancels and replaces the order rather than modifying it would put a new order at the back.

Moving your price starts you over. Dragging an order one tick closer to the market puts it at the back of the line at the new price. That can be the right call, but know that you are trading your old place for a new, last place.

Display Quantity Orders Refill at the Back

CME supports display quantity orders, where only part of an order is shown on the book at a time. CME's documentation explains what happens when the shown part fills: "When the quantity of the order shown on the book reaches zero, the quantity will be reinstated as this value at the bottom of the order book until the entire quantity is filled." Each refill joins the back of the line.

That is one reason the size you see at a price is not the whole story. Some of the liquidity may not be displayed at all.

Implied Orders Come Last

Futures markets also carry implied orders, generated from spread markets. Under FIFO, CME's documentation states that outright orders at a price are filled by time priority first, and that "the aggregated implied order has the lowest priority within its price level." For an outright limit order, implied liquidity at your price doesn't stand in front of you.

Seeing the Line

You can't manage a queue you can't see. How much of it you see depends on the market data your connection carries.

Top of book shows the best bid and offer and their total size. You know a line exists, but not how long it is behind the front or where you are in it.

Market depth shows several price levels with the total size at each. You know how many contracts were at your price when you joined, which gives a starting estimate of what is ahead of you.

Market by order (MBO) shows each individual order. CME's Market by Order Full Depth feed, in CME's words, "disseminates individual orders and quotes at every price level for the given instrument" and "allows customers to view position(s) while preserving market participant anonymity." CME's documentation also states that for this feed "there is no maximum number of orders or depth allowed on the book."

Each order in an MBO feed carries a priority value, and CME explains how to order the book: sort by side and price, then by priority within each price. Your own order has an identifier that your platform receives when the order is accepted. With an order-level feed, a platform can find your order in that sorted line and count exactly what sits in front of it.

One limit worth knowing: CME states that "implied order book information is not sent in MBO format." The order-by-order view covers outright orders, which, as above, have priority over implied orders at the same price anyway.

A Worked Example: Waiting in Line at 5,000.00

Here is one queue followed over a few minutes. The numbers are invented for illustration, not taken from any real market.

You place a buy limit for 3 contracts at 5,000.00 in ES. When your order arrives, the bid at 5,000.00 shows 180 contracts. Under FIFO, all 180 are ahead of you.

Minute 1. Sellers hit the bid, and 60 contracts trade at 5,000.00. Those fills come off the front of the line.

  • Ahead of you: 180 - 60 = 120

Minute 2. Some orders at 5,000.00 cancel, and the total size at the price drops by 65 contracts. With aggregate depth alone, that's all you see. You can't tell whether the canceled orders were ahead of you or behind you.

With MBO, you can. Say the 65 contracts were a 30-lot and a 10-lot ahead of you, and a 25-lot behind you:

  • Ahead of you: 120 - 30 - 10 = 80
  • The 25-lot behind you doesn't change your position at all.

A depth-only estimate would have had to guess. If it assumed every cancel was ahead of you, it would now say 120 - 65 = 55, which is too optimistic. If it assumed none were, it would still say 120, which is too pessimistic. MBO gives you the actual number: 80.

Minute 3. Another 70 contracts trade at 5,000.00.

  • Ahead of you: 80 - 70 = 10

Minute 4. Price ticks up to 5,000.25 and trades there. Your order is still working, 10 contracts from the front. Price touched your level for three minutes and traded 130 contracts there, and you were not filled.

Nothing went wrong. Your order was 3 contracts in a line that started 180 deep. The question you needed to answer at minute 3 was not "is price at my level?" but "how many contracts are still ahead of me, and is the selling at this price likely to keep going?"

Why Fills Can Feel Backwards

There's an uncomfortable logic in queue trading. If a long line ahead of you fills completely and reaches your order, the selling at that price was heavy enough to clear everyone in front of you, and heavy selling can keep going. If the line stops short of you, the level held, and the bounce you were waiting for may happen without you.

That follows from how resting orders work: the deeper you are in line, the more order flow it takes to reach you, so the fills you do get tend to come when the pressure against your order is strongest. Mark-outs, which check price at fixed intervals after each fill, are a way to see whether this shows up in your own trading. If your resting limit fills tend to show negative short-term mark-outs, queue position is worth looking at as part of the reason.

Knowing your place in line helps here. A fill when you were at the back of a deep queue tells you something different about the order flow than a fill when you joined a nearly empty one.

Stop Orders Aren't in the Line

Stop orders work differently. CME describes the stop order type as "an order which, when accepted, does not immediately go on the book, but must be 'triggered' by a trade in the market" at the price level submitted with the order. A stop doesn't wait in the queue at its price. It waits off the book.

When it triggers, CME's documentation says a stop is "treated as an Aggressor limit order." It becomes an incoming order that trades against the resting line on the other side, which is why stop fills depend on the liquidity available at that moment rather than on any place in line.

CME also offers stop orders with protection, which, once triggered, execute only within a protection range around the trigger price. Any unfilled remainder rests on the book at the protection limit.

Practical Rules for Queue-Aware Limit Orders

  • Join early if the level matters to you. Under FIFO, time is your priority. An order placed before price arrives has a better place than one placed as price arrives.
  • Don't add size to a working order you value. Place a second order instead, so the first keeps its place.
  • Think before you drag. Moving an order one tick puts it at the back of the line at the new price.
  • Know your platform's modify behavior. Whether a size reduction is sent as a modify or as a cancel and replace decides whether you keep your place.
  • Watch the line ahead, not just the price. Price touching your level means little if a large queue sits in front of you.
  • Expect hidden size. Display quantity orders mean the visible size at a price may not be all of it, and each refill joins the back.
  • Review fills by queue position. Separate fills where you were near the front from fills where you were deep in line, and compare what happened next.

Checklist: Before You Rest a Limit Order

  • Does this product match FIFO, or another algorithm? (ES, NQ and their micros: FIFO.)
  • How many contracts are at my price right now?
  • Does my data show individual orders, or only total size per price?
  • Will my platform show me how many contracts are ahead of my order?
  • If I need more size, will I add a separate order rather than increase this one?
  • If I move the price, am I willing to start at the back?
  • What will I do if price touches my level and doesn't fill me?

The Bottom Line

At CME, a limit order on a FIFO product is a place in line. Price, then time, decides who gets filled. Increasing size, changing price or changing account sends you to the back, and display quantity refills join the back too. Top of book tells you a line exists; depth gives you a rough length; market-by-order data lets you count the orders actually ahead of you. The trader who knows where they stand stops asking why price touched their level without a fill, and starts asking the better question: how much of the line was still ahead?


NexTick360's market-by-order DOM shows your place in line: where your working order stands and how many contracts are ahead of it. See the DOM

Keep your broker. NexTick360 is a futures platform that stays fast at the open, with your limits, a coach and your journal built in.

Get early access →

Founders get 25% off the yearly price for as long as they stay. No card, no spam.

Keep your broker. Upgrade your platform.

A futures trading platform with your limits, a coach and your journal built in.

Founders get 25% off the yearly price for as long as they stay. No card, no spam.