Every trade has two sides, and they are never equal. One side is aggressive: it wanted the fill badly enough to cross the spread and take whatever price was available. The other side is passive: it sat with a resting order and let the aggressor come to it. Aggressive orders move price; passive orders absorb it. If you understand nothing else about order flow, understand this split, because it’s the engine under every read you’ll ever make.
The taker and the maker
The two roles have names, and they matter.
The aggressor (the taker) sends a market order and crosses the bid ask spread to get filled immediately. An aggressive buyer lifts the offer; an aggressive seller hits the bid. Aggressors remove liquidity from the book and, in doing so, push price.
The passive side (the maker) rests a limit order and waits. A passive buyer bids below the market; a passive seller offers above it. Passive orders add liquidity and only trade when an aggressor chooses to hit them.
For every contract that trades, exactly one aggressor meets exactly one passive order. The question that drives order flow is never “was there buying or selling” (there’s always both), but “which side was aggressive?” That’s the side with urgency, and urgency is what moves markets. The order types behind these two roles are covered in order types in trading; this page is about what their battle tells you.
Why aggression moves price
Price moves for one mechanical reason: aggressors exhaust the passive liquidity at a level and have to reach for the next one.
Picture the ES (E-mini S&P 500) offered at 5,285.25 with 300 contracts resting there. Aggressive buyers keep lifting that offer. Once all 300 are consumed, there’s nothing left to buy at 5,285.25, so the next aggressive buyer has to pay 5,285.50. Price just ticked up one level, and it did so because aggressive buying consumed the passive sell-side liquidity. No aggression, no movement. This is why watching aggression, rather than price, tells you what’s actually happening before the candle confirms it.
How to read aggression: the footprint
You measure aggression directly on a footprint chart, which splits the volume at every price into two columns:
- The bid column is volume that traded at the bid, meaning aggressive sellers hit it.
- The ask column is volume that traded at the ask, meaning aggressive buyers lifted it.
Read it diagonally: aggressive buying prints in the ask column at each price, aggressive selling prints in the bid column. When you see 1,200 on the ask side against 200 on the bid side at a price, aggressive buyers dominated that level by six to one. That imbalance of aggression is the raw signal, and stacking several of these on a diagonal is what creates an order flow imbalance.
Sum aggression across price and time and you get delta: ask volume minus bid volume. Track its running total and you get cumulative delta, which is really just a continuous scoreboard of aggressive buyers versus aggressive sellers. Every delta tool you’ll ever use is built on this one aggressive-versus-passive distinction.
When the passive side wins: absorption
Here’s the counterintuitive part that separates good order flow readers from beginners. Aggression usually moves price, but not always. Sometimes the passive side is so large that it eats all the aggression and price doesn’t budge.
That’s absorption. Aggressive sellers keep hitting the bid, thousands of contracts trade, delta goes deeply negative, and yet price refuses to fall because a huge passive buyer is absorbing every market sell. When you see heavy aggression that produces no price movement, the passive side is winning, and that’s often the tell for a reversal. Once the aggressors run out of ammunition against that wall, price snaps the other way, frequently trapping them. The traders who piled in with the aggression and got stuck are the trapped traders that fuel the move back.
This is why raw delta can lie. A big negative delta looks bearish, but if price held while all that selling got absorbed, it’s actually bullish. Aggression only matters relative to what price did in response.
Hidden aggression and hidden passivity
Both sides can hide. On the passive side, large players use iceberg orders to display only a fraction of their true resting size, so absorption is happening against far more liquidity than the DOM shows. On the aggressive side, triggered stop orders inject sudden bursts of aggression: a cluster of stops firing as market orders can create a spike of one-sided delta that looks like conviction but is really forced flow, the mechanism behind stop hunting.
The lesson is the same for both: displayed size on the depth of market DOM is only part of the story. What proves who’s really in control is executed volume and how price responds to it.
Putting it to work
The practical read is a two-part question you ask constantly: which side is aggressive, and is price responding to that aggression?
- Aggression plus movement: the aggressive side is in control, the move has real force behind it, trade with it.
- Aggression without movement: the passive side is absorbing, the move is exhausting itself, get ready for a turn.
That single framework covers an enormous amount of what order flow trading is about. Everything else, footprints, delta, absorption, imbalances, is just a more precise way of measuring aggression against liquidity. Get comfortable reading who’s the aggressor and whether they’re getting paid for it, and the rest of order flow trading starts to click into place.
Frequently Asked Questions
How do I tell if a trade was aggressive buying or selling?
By where it printed relative to the spread. A trade at the ask (the offer) was an aggressive buyer lifting it; a trade at the bid was an aggressive seller hitting it. The footprint uses exactly this rule to split volume into an ask column and a bid column, so you can see which side was crossing the spread at every price.
Does more aggressive buying always push price up?
Usually, but not always. Aggressive buying pushes price up only if it consumes the resting sell-side liquidity faster than that liquidity is replenished. If a large passive seller is absorbing all of it, price can stall or even fall despite heavy aggressive buying. That’s why you always read aggression together with how price responds, never in isolation.
What’s the difference between aggressive orders and market orders?
They’re essentially the same thing in practice. Aggressive orders are those that cross the spread for an immediate fill, which is exactly what a market order does. A triggered stop order also becomes aggressive when it fires, since it converts into a market order. Passive orders, by contrast, are resting limit orders that wait to be hit.
Why does delta sometimes disagree with price?
Because delta only measures aggression, not the outcome. Deeply negative delta means aggressive sellers were active, but if a large passive buyer absorbed all that selling, price can hold or rise anyway. This delta-price divergence is one of the most useful order flow signals precisely because it exposes when the passive side is quietly beating the aggressors.