Aggression, and why price moves when liquidity is consumed
Lesson 2 · about 10 min
The last lesson ended with a claim: price moves only when market orders consume every resting order at a level. This lesson works through what that means in numbers, because once you see the arithmetic you stop thinking of price as something that "goes up on buying" and start thinking of it as the result of a contest between size that waits and size that acts.
A worked sequence
Start with this book. Each row shows resting size at the price.
Bid | Price | Ask
-----+---------+-----
| 5001.00 | 300
| 5000.75 | 120
| 5000.50 | 80
| 5000.25 | 60 <- best ask
150 | 5000.00 | <- best bid
200 | 4999.75 |
Now a series of market orders arrive. Track what happens.
| Step | Order | Fills | Best ask after | Last print |
|---|---|---|---|---|
| 1 | Buy 30 market | 30 at 5000.25 | 5000.25 (30 left) | 5000.25 |
| 2 | Buy 50 market | 30 at 5000.25, 20 at 5000.50 | 5000.50 (60 left) | 5000.50 |
| 3 | Sell 40 market | 40 at 5000.00 | 5000.50 | 5000.00 |
| 4 | Buy 60 market | 60 at 5000.50 | 5000.75 (120 left) | 5000.50 |
| 5 | Buy 100 market | 100 at 5000.75 | 5000.75 (20 left) | 5000.75 |
| 6 | Buy 25 market | 20 at 5000.75, 5 at 5001.00 | 5001.00 (295 left) | 5001.00 |
In six steps the aggressive buyers bought 265 contracts and lifted price three ticks. Notice step 5: 100 contracts of buying, the largest single order, and price did not move because the level had 120. Then step 6, only 25 contracts, and price ticked up because it finished the level. Volume and price change are related but not the same thing. What moves price is aggression relative to the liquidity available at that price.
Aggression is measured, not guessed
Because every trade happens at either the bid or the ask, we can classify every print:
- A trade at the ask was initiated by a buyer (they lifted the offer).
- A trade at the bid was initiated by a seller (they hit the bid).
Add up contracts traded at the ask, subtract contracts traded at the bid, and you get delta. In the sequence above, buyers lifted 265 and sellers hit 40, so delta over the six steps was +225. Module 3 builds a whole toolkit around this number. For now, know that it exists and that it is a direct measurement of who was aggressive.
Why more aggression is not always more movement
Two sessions can have identical delta and very different price outcomes.
| Session | Buy aggression | Sell aggression | Delta | Liquidity offered above | Price change |
|---|---|---|---|---|---|
| A | 4,000 | 2,500 | +1,500 | Thin (avg 60 per level) | +12 ticks |
| B | 4,000 | 2,500 | +1,500 | Thick (avg 400 per level) | +2 ticks |
Session B's buyers were just as aggressive but they ran into far more passive selling. This is the situation that produces some of the most useful reads in order flow: heavy aggression with little price progress means someone large is absorbing it, and that is covered in Module 2.
Key idea: Price change = aggression ÷ liquidity. Big aggression into a thin book moves price a long way; the same aggression into a thick book barely moves it. You need both sides of the fraction to understand a move.
Where the liquidity goes
When aggressive buyers consume the offers at 5000.25, those sellers are gone. But books refill. Three things happen after a level is cleared:
- New sellers place limit orders at the new best ask, often at prices they consider good value.
- Some of the sellers who were just filled at 5000.25 re-offer higher.
- Buyers who were passive at 5000.00 now see they will not be filled and either chase (market buy) or move their bids up.
This is why a single burst of aggression rarely produces a clean straight line. The book replenishes, aggression pauses, and price consolidates until the next imbalance between aggression and liquidity appears.
Slippage is this in miniature
If you send a market order for 150 contracts into the book above, you take 60 at 5000.25, 80 at 5000.50 and 10 at 5000.75. Your average fill is:
(60 × 5000.25 + 80 × 5000.50 + 10 × 5000.75) ÷ 150 = 5000.42
You "paid" 0.17 points, or almost a tick, above the best ask before you sent the order. That is slippage, and it is caused by the same mechanism that moves price: your own aggression consumed liquidity. Retail traders trading one or two contracts on a liquid product rarely experience this; the mechanism still governs what large participants can and cannot do, which is why they split orders, work them passively, or hide them, as we will see in lesson 4.
Try it: Take the starting book at the top of this lesson and run your own sequence: Sell 100 market, Sell 80 market, Buy 20 market, Sell 200 market. Write down the best bid after each step and the total delta at the end. Check that price moved down exactly when a bid level was fully consumed and not before.
Recap
- Price ticks only when the last contract at a level is consumed; a large order that leaves size behind does not move price.
- Trades at the ask are buyer-initiated; trades at the bid are seller-initiated. Their difference is delta.
- Price change depends on aggression relative to available liquidity, not on aggression alone.
- Books refill after a level is cleared, which is why moves come in bursts and pauses.
- Slippage on your own market orders is the same mechanism at small scale.
See it drawn
Original diagrams for the ideas on this page. Illustrative, not real market data.