DOM & liquidity

M3.08Orderflow ToolsPractitionerPlausibleOne trader's study≈ 16 min

Learning objectives

  • Read a Depth of Market ladder: bids, asks, sizes, and the inside spread.
  • Tell size that traded and refilled from size that was pulled before contact, and say what each one does and does not tell you about the level.
  • Explain why best bid/ask queue imbalance is a real but sub-tick effect: it can time a limit order, not pay for a market order.
  • Use the DOM as a timing tool for mapped levels, never as a standalone thesis, and grade the popular wall-reading claims.
CHART EXAMPLES & STRUCTURAL DIAGRAMSClick any diagram to inspect full screen
Depth of Market (SmartDOM) Ladder AnatomyReading the five core columns: Volume Profile, Price, resting Bid depth, executed @Bid/@Ask tape, and resting Ask offers.
Finished vs Unfinished Auction on the DOM (0×N Print)A clean 0 at the extreme bid or ask confirms all aggressive interest was exhausted at the turning point.

It is 10:05 ET (22:05 ICT, winter). ES is rallying into 5,992.00, the prior day’s value-area high on your morning map. The DOM shows 800 contracts offered at 5,992.00, against about 150 at the prices around it. It looks like a wall. Is it one? And if it is, does it mean the rally stops there? This lesson teaches what the ladder can tell you at that moment, and what it cannot. (The prices in this lesson are a synthetic illustration, not a real date.)

Key terms

  • DOM, Depth of Market (sổ lệnh): a ladder of prices showing the resting limit orders at each one, bids below and asks above, usually 10 levels a side on CME futures Definition.
  • Resting liquidity (thanh khoản chờ): the size sitting at a price, waiting for someone to trade against it Definition.
  • Inside spread (chênh lệch trong): best bid versus best ask, where trading actually happens Definition.
  • Queue imbalance (mất cân bằng hàng đợi): (bid size − ask size) ÷ (bid size + ask size) at the best bid and ask. M0.03 introduced it Definition.

Term you need: iceberg. An order that shows only part of its size; when the shown part trades, the next part appears at the same price. You see it as more volume traded at a price than was ever displayed there. M3.12 covers it with spoofing.

Chart first: the two fates of size

Every number on the ladder is an offer that can be cancelled in milliseconds. The DOM shows the offer, not the commitment. What displayed size is worth shows up when price reaches it.

SCENE A — size that traded           SCENE B — size that left
Ask 5,992: 800 offered               Ask 5,992: 800 offered
Price ticks to 5,991.75…             Price ticks to 5,991.75…
→ 800 STAYS                          → 800 melts to 120, zero traded
→ 200-lot buys into it               → nothing was ever sold there
→ ask refreshes: 780… 800…
Verdict: the size was real           Verdict: the size gave no
and traded. Whether the level        defense. Why it left is
holds is still open.                 unknown.
ANIMATED FIGURE

One offer pulled, one bid that keeps trading

Definition
One offer pulled, one bid that keeps trading — Interactive figure
0%
WHAT TO SEEWhat to see: the 520-lot offer at 5,846.00 disappears before a single contract trades there, while the bid at 5,844.25 keeps showing about 140 lots as the traded count beside it climbs. The first provided no defense; the second is size that actually traded (an iceberg). Neither tells you where price goes next, and the drawing's 'bait' tag only means 'nothing traded', not that anyone faked it. The worked example below is the same pair of behaviours on the offer side. Synthetic data.

Synthetic data

How it works

Displayed size is an offer

Large resting size implies two opposite things, and the DOM alone cannot tell you which. It can be a participant genuinely willing to trade there. Or it can be quoting that moves before price arrives: a market maker repricing, managing queue position or cutting risk, and occasionally spoofing (giả mạo lệnh), which is illegal and covered in M3.12. The number 800 on the ask looks the same in every case. What differs is what the 800 does when tested.

So the read has two outcomes. Hit and refilled: size that actually traded at the level, possibly an iceberg Definition. Pulled before contact: whatever its intent, it provided no defense Definition. Most cancellations on CME futures are routine quote management, not spoofing PlausibleOther market: high cancel-to-trade ratios are normal for liquidity providers. So the read after a pull is “this level has no backing now”, not “someone faked it”.

What the test does not tell you

Size that traded tells you that sellers were really there at that moment. It does not tell you the level holds. The one public NQ test of the idea that refilling orders make a level hold was inconclusive (box below). Your short thesis at a mapped value-area high is not contradicted in Scene A, and in Scene B the advertised reason for it is gone; in both cases the next move is still open.

Myth / hypothesis: “Big walls usually get pulled before price arrives; draining size predicts a break; rebuilding size means defense is arriving; a refilling iceberg makes the level hold.” Lore These are the standard DOM-reading rules. None of the first three has been tested on NQ: the public practitioner study had no depth data beyond the best bid and ask, and our lab has not recorded depth yet. The iceberg claim was tested and came out inconclusive. Treat all four as hypotheses you could test with your own recordings.

Spread and speed

The inside spread on ES and NQ is one tick almost all of regular trading hours Definition. When it widens at your level, liquidity providers are quoting less there and every market order costs more; that is a cost fact, not a direction signal. In fast moves the ladder flickers too quickly to read level by level. That is a reason to slow down: if you cannot read it, you do not have a read.

The one measured book effect: queue imbalance

When the best bid holds much more size than the best ask, the next one-tick move of the mid-price is more often up, and the mirror holds for a heavy ask PlausibleOne trader's study. On stocks the same effect is measured in published work MeasuredOther market. The catch is its size. A 65.6% hit rate on the next tick is worth (0.656 − 0.344) × 1 tick, about 0.3 of a tick, and a market order pays at least one tick of spread before fees. Queue imbalance can help you time a limit order; it cannot pay for a market-order entry PlausibleOne trader's study.

Why it is still worth knowing

The DOM is where your orders live. Reading it tells you whether displayed size is real when price reaches it, whether your limit order is likely to fill soon, and what an aggressive entry costs right now. Those are execution facts. The map (M2) still decides where a trade is worth taking.

What the data says

Worked example: the 800 at the value-area high, short side

ES rallies into the prior value-area high at 5,992.00, which is on your morning sheet. The DOM shows 800 offered at 5,992.00 (neighbours about 150). Price ticks to 5,991.75. The 800 stays. A 200-lot buys into it; the ask refreshes to 780, then back to 800. Another 150-lot buys; it refreshes again. Total traded at 5,992.00 passes 500 while the display never drops below 750.

What this tells you: the offer is real and trading, probably an iceberg. What it does not tell you: that 5,992.00 holds. Write it as an if-then plan: if price trades at 5,992.00 and turns back to 5,991.25 while the offer keeps refilling, short 1 ES at 5,991.25 with a stop at 5,993.50 (9 ticks, $112.50 before fees); invalid if the refill stops and price trades 5,992.25 and holds there. The DOM decided when you took the trade; the map decided where.

The mirror and the failure

Mirror (long side). ES sells into the prior value-area low at 5,968.00. A 700-lot bid there keeps refilling as sellers hit it. The same plan in reverse: long only after price turns back above the level with the bid still refilling, stop below the level, invalid if the bid stops refilling and price trades through.

Failure. Same setup at 5,992.00, but as price nears it the 800 melts to 120 before a single contract trades. The size was withdrawn before it was tested; whatever the reason, it provided no supply. Shorting “into the wall” now means shorting a level with no supply showing. That does not mean price goes through: draining size predicting a break is untested (box above). It means your reason for the trade is gone, so you stand aside or wait for the map’s next level.

Do it on the platform

Prop-firm note. Evaluation accounts at most prop firms fill your orders in a simulator, which cannot know your real place in a queue or whether the displayed size you leaned on was real. Firms treat strategies that exploit simulated fills as prohibited conduct, and sim fills are not live fills. The Prop Firm course (PROP1.04) will quote the rule with its date once we have checked it.

Common mistakes

Common mistake: Letting ladder flicker override the value map. The DOM is the fastest, noisiest tool you own; every flashing number feels urgent, and urgency manufactures trades. A refilling wall at a random mid-value price is still a random price. Where first, how now, never the reverse.

Common mistake: Treating a hit rate as an edge. “Queue imbalance is right 65.6% of the time” sounds like a strong signal, but it is about the next tick only. After the spread, a market order sent on it loses money on average.

Common mistake: Reading a pull as proof of manipulation, or a refill as proof the level holds. A pull shows no defense; a refill shows size that traded. Neither one tells you the outcome.

Drill: score your own DOM tests

Over five replay or sim sessions, log every time price reaches a mapped level where the displayed size is at least three times its neighbours.

  1. Record time (ET), price, displayed size one tick before contact, and traded volume at the price.
  2. Label it refilled (traded volume above the displayed size), pulled (size gone with little traded) or neither.
  3. Score the outcome with a rule written in advance: did price trade 8 ticks beyond the level within 15 minutes, or turn 8 ticks back first?
  4. Do the same for mapped levels that showed no large size.
Solution

Compare the hold rate of refilled levels with that of levels without large size, not with 50%. With about 20 events per group, a 95% interval on a rate is roughly ±22 percentage points, so five sessions cannot confirm or reject the idea; they teach you the labelling. If you see a gap, keep logging before you trade it.

What we don’t know yet

  • Whether large walls on NQ are usually pulled before contact, whether draining size predicts a break, and whether stacking and pulling predict the next move: not yet measured. They need depth recordings, which our lab plans on ATAS X.
  • Whether the NQ queue-imbalance result survives our lab’s own re-run with session-clustered intervals: not yet measured.

Recap

  • The DOM shows advertised resting liquidity: offers, not commitments; every number can vanish.
  • Size is judged at the test: hit-and-refilled is size that traded; pulled-before-contact gave no defense (usually routine cancellation, occasionally spoofing). Neither tells you the outcome.
  • Queue imbalance at the best bid and ask points to the next tick on NQ (one practitioner’s study), an effect under one tick: use it to time limit orders.
  • The DOM is a timing tool for mapped levels, never a thesis: the map picks the where, the ladder reads the now.
Check yourself4 questions
  1. 1You are short from a mapped resistance at 6,010.00. The DOM shows 1,000 offered at 6,012.00. Price rallies to 6,011.50 and the 1,000 drops to 80 with no contracts traded. What is the right read?

    Choose one answer.

  2. 2Sort each claim by its grade.

    Put each statement in its bin.

  3. 3A signal calls the next one-tick move correctly 65.6% of the time. What is its average value per signal, in ticks, before costs?
  4. 4At your mapped level the 800-lot offer keeps refilling while more than 500 contracts trade into it. What does that confirm?

    Choose one answer.

Further reading

This lesson connects to: M3.09 (Time & Sales, the trades behind the ladder) · M3.10 (heatmap, the DOM’s history) · M3.12 (spoofing vs iceberg) · M6.06 (order types for entries).

Next: M3.09 reads the prints themselves, so you can see which displayed size actually traded.

Educational content only. Not financial advice. Futures trading involves substantial risk of loss.

Saved in this browser (account sync comes at launch).

Not financial advice. Educational content only. Futures trading involves substantial risk of loss.