XAUUSD 4,151Live gold map →
Academy · Chapter 3 of 12

Volume and Delta

≈31 min read · Real gold futures examples with XAUUSD equivalents · Free

In this chapter: You will learn how the raw stream of gold trades is turned into the numbers that order-flow traders read: how each trade gets labelled a "buy" or a "sell" (and where that label can be wrong), how to judge a bar's volume against the normal activity for its time of day, how a footprint bar opens a candle up price by price, how bar delta and delta percentage summarise aggression, and how cumulative volume delta (CVD) adds it all up. You will also meet the CVD "anchor trap", see why high volume never tells you direction by itself, and get a first, careful look at what it means when delta and price disagree. Everything here is a measurement. None of it is a signal.

---

Who Hit Whom? Classifying Trades as Buys or Sells

Chapter 2 established that every trade has one buyer and one seller, so "buy" and "sell" in order flow can only mean one thing: which side was the aggressor. A trade is called a "buy" when an impatient buyer crossed the spread and took a waiting seller's offer. It is called a "sell" when an impatient seller crossed the spread and hit a waiting buyer's bid. Every number in this chapter (footprint cells, delta, CVD) rests on getting this label right.

There are two ways to find out who was aggressive.

Method 1: the exchange tells you

CME's market-data feed, called MDP 3.0, publishes a Trade Summary message for every trade. One of its fields is AggressorSide (FIX tag 5797):

AggressorSide valueMeaning
1The aggressor was the buyer
2The aggressor was the seller
0No aggressor

CME defines the aggressor as the order that, on entering the book, immediately triggers a trade. That is exactly the definition we used in Chapter 2.

Some trades legitimately have no aggressor. The most important example is the opening auction: when the market reopens after the daily halt or after a pause, orders accumulated during the pre-open are matched all at once at a single price. Nobody "crossed the spread", so no side is aggressive. Some implied trades, which arise when orders in calendar-spread markets are combined with orders in individual contract months, can also carry no aggressor flag.

Method 2: compare the trade with the quote

Many platforms and feeds do not pass the exchange flag through to the chart. Instead, they compare each trade with the bid and ask at the moment of the trade, a method called the quote rule (or the at-ask/at-bid rule):

In NinjaTrader this is the BidAsk method of calculating delta.

A worked example: ten gold prints

Here are ten consecutive GC trades from a busy morning minute, laid out the way you would see them on Time & Sales, with the bid and ask that were in force at the time. (GC prices around 4000 correspond to roughly 3,970–3,973 on XAUUSD; the gap is approximate and changes over time.)

#Time (ET)PriceSizeBidAskLabel (quote rule)
109:31:02.1144000.134000.04000.1Buy
209:31:02.1204000.1124000.04000.1Buy
309:31:02.3884000.054000.04000.1Sell
409:31:02.3914000.014000.04000.1Sell
509:31:02.9054000.1224000.04000.1Buy
609:31:03.0104000.284000.14000.2Buy
709:31:03.0114000.2304000.14000.2Buy
809:31:03.3504000.144000.14000.2Sell
909:31:03.6124000.264000.14000.3?
1009:31:03.7004000.3104000.24000.3Buy

Adding up: aggressive buys = 3 + 12 + 22 + 8 + 30 + 10 = 85 contracts; aggressive sells = 5 + 1 + 4 = 10 contracts; unclassified = 6 contracts (print 9). Total volume = 101. Net aggression (buys minus sells) = +75, with 6 contracts we could not label.

Print 9 is the interesting one. For a moment the spread had widened to two ticks (bid 4000.1, ask 4000.3), and the trade printed at 4000.2, in the middle. It is neither at the bid nor at the ask, so the quote rule cannot decide.

Where the quote rule goes wrong

The quote rule is simple and usually right, but it has three weak spots:

  1. Synchronisation. Quotes and trades arrive as separate messages, milliseconds apart. If the platform pairs a trade with a quote that is slightly too early or too late, a trade at the old ask may be compared with a new bid and get the wrong label. This happens most in fast markets: data releases, the open, sudden moves.
  2. Trades inside the spread. When the spread is wider than one tick, or changes at the instant of the trade, a print can land between bid and ask, like print 9.
  3. Sweeps. A large aggressive order that eats through several price levels is reported as several prints at different prices. Each print is labelled separately, and the later ones can be compared against quotes that have already moved.

The practical conclusion: the delta you see on screen is a measurement with a small error, not absolute truth. The error is usually small, but it exists, and it is largest exactly when markets are fastest.

Key idea: "Buy" and "sell" in order flow mean aggressive buy and aggressive sell. The label comes either from the exchange's aggressor flag or from comparing the trade with the bid and ask, and both routes have edge cases.

Common mistake: "A trade at the bid means someone bought." Every trade has a buyer, but a trade at the bid means an aggressive seller hit the bid. The buyer was passive.

Common mistake: "My platform's delta is 100% accurate." Accuracy depends on the feed and the classification method. And some trades, such as those in the opening auction, have no aggressor at all.

---

When Quotes Fail: The Tick Rule and Lee-Ready

What should happen to a trade like print 9? Academic market microstructure, the study of how trading works at the level of individual orders, has worked on this question for decades, because many historical data sets have no aggressor flag at all.

The tick rule

The tick rule (or tick test) ignores quotes and compares each trade with the previous trade's price:

Example sequence of GC trades:

Trade priceChangeTick-rule label
4000.1(start)—
4000.2uptickBuy
4000.2zero-uptickBuy
4000.1downtickSell
4000.1zero-downtickSell
4000.2uptickBuy

The tick rule needs nothing but trade prices, which makes it easy to apply to any data. NinjaTrader's UpDownTick delta method follows this logic.

Its weakness shows up in quiet, ranging markets. Suppose gold trades back and forth between 4000.0 and 4000.1 for several minutes, and the last price change was an uptick. Dozens of trades at 4000.1 will all be labelled buys simply because of one old uptick, even if many of them were sellers hitting a bid that had moved up to 4000.1. The tick rule carries errors forward.

Lee-Ready

In 1991, Charles Lee and Mark Ready proposed combining the two approaches. The Lee-Ready algorithm:

  1. Compare the trade with the midpoint of the bid and ask (the quote rule in its midpoint form): above the midpoint → buy; below → sell.
  2. If the trade is exactly at the midpoint, use the tick rule.

Apply it to print 9 from the previous section. The bid was 4000.1 and the ask 4000.3, so the midpoint was 4000.2, exactly where the trade printed. Step 2 applies: the previous trade (print 8) was at 4000.1, so 4000.2 is an uptick, and Lee-Ready labels print 9 a buy.

How accurate is it? Studies on stock markets, where researchers could check against true order data, have reported accuracy of roughly 80–90%. That figure varies with the market, the period and the data quality, and fast electronic markets tend to be harder. The lesson is not the exact number. It is that even the best inference methods mislabel a meaningful share of trades.

Same bar, different delta sign

The choice of method is not a technicality. It can flip the sign of a bar's delta. Here is a small constructed example of five GC trades in a choppy moment:

TradePriceSizeBid / Ask at the timeQuote ruleTick rule
A4000.0204000.0 / 4000.1SellSell (downtick from 4000.1)
B4000.1504000.1 / 4000.2Sell (at bid)Buy (uptick)
C4000.1304000.1 / 4000.2Sell (at bid)Buy (zero-uptick)
D4000.1154000.0 / 4000.1Buy (at ask)Buy (zero-uptick)
E4000.0104000.0 / 4000.1SellSell (downtick)

Same five trades, opposite conclusions. The disagreement comes from trades B and C: the quotes had moved up, so sellers were hitting a higher bid, but the tick rule only saw that the price was higher than before.

An honest "unknown" bucket

There is a third option that deserves more use: admitting you do not know. The approach we prefer works like this:

  1. Use the quote rule first.
  2. If the quote cannot decide, use the tick rule only when the previous trade was very recent (a fraction of a second earlier) and at a different price, so the tick direction reflects fresh information.
  3. Otherwise label the trade UNKNOWN and leave it there. It is never moved into buys or sells later.

The result is a delta that is slightly "smaller", because some volume is set aside, but less contaminated by guesses. It also lets you report how much of the volume was labelled by each method, which tells you how much to trust the number on a given day.

No method is perfect. What matters most is consistency, so that comparisons from day to day are meaningful, and transparency, so that you and anyone reading your charts know what the numbers mean.

Key idea: Trade classification is inference, not observation, unless you have the exchange's aggressor flag. Prefer a consistent method, know which one your platform uses, and treat unknowns honestly.

Common mistake: "UpDownTick and BidAsk are the same thing." They are different methods and can give different results, sometimes with opposite signs.

Common mistake: "Lee-Ready is 85% accurate everywhere." Accuracy depends on the market, the period and the data quality.

Try it: If your platform offers both BidAsk and UpDownTick delta, display both on the same 1-minute GC chart during a quiet Asian-session hour. Count how many bars show deltas with opposite signs.

---

Volume per Bar and Relative Volume

Before splitting volume into buys and sells, it helps to read the simplest number of all: how much traded in a bar.

Bar volume

Bar volume is the total size of all trades during a bar's time window, measured in contracts for GC. Platforms usually draw it as a histogram under the price chart.

One detail confuses many beginners: the histogram bars are usually coloured by the candle's direction. A green volume bar means the candle closed higher than it opened. It does not mean buyers were more aggressive. A green candle can have more aggressive selling than buying, as you will see when we reach delta.

Gold's daily rhythm

Gold trades nearly 23 hours a day, from Sunday 18:00 to Friday 17:00 New York time, with a daily halt from 17:00 to 18:00. Volume is very uneven across that clock. Asian hours are usually quiet, activity rises with London from around 03:00 ET, and the busiest stretch is normally the London–New York overlap, especially around US data releases (often at 08:30 ET) and the first hours of the New York session.

This means a raw number like "800 contracts in five minutes" has no fixed meaning. At 02:00 ET it may be exceptional; at 09:35 ET it may be quiet.

Relative volume (RVOL)

The fix is to compare each bar with what is normal for that time of day. Relative volume (RVOL) is:

RVOL = bar volume ÷ average volume of bars at the same clock time over the previous N days

Here is an illustrative example with round numbers (not from a specific day). Suppose that over the previous 20 trading days:

Today, both bars trade 800 contracts.

BarVolumeSame-time averageRVOL
02:00–02:05 ET800250800 ÷ 250 = 3.2
09:35–09:40 ET8002,400800 ÷ 2,400 ≈ 0.33

The same raw volume is three times normal in the first case and one third of normal in the second. RVOL = 2 simply means "twice the usual activity for this hour."

Simpler alternatives exist: comparing a bar with a moving average of the last N bars' volume, or ranking a bar by percentile within the day. These are easy to compute, but they do not fully remove the time-of-day effect. A moving average of the last 20 five-minute bars at 08:35 ET is still mostly made of quieter pre-data bars.

Volume filters: where to look, not what to do

A volume filter marks bars whose relative volume exceeds a chosen threshold, for example "more than twice normal for this hour". Treat such marks as an attention highlight: "something unusual happened here in terms of activity." They are not buy or sell signals. As you will see later in this chapter, high volume has no direction.

What distorts the averages

Several calendar effects can make "normal" misleading:

Key idea: Volume only means something relative to its hour. Compare like with like.

Common mistake: "A green volume bar means buyers were stronger." It only means the candle closed above its open.

Common mistake: "A fixed threshold of 1,000 contracts works for every hour." Asia and New York are not comparable.

Common mistake: "An exceptionally high-volume bar is always a turning point." This is a popular claim, not proven.

---

Inside the Candle: Volumetric and Footprint Bars

A candle compresses everything that happened in its time window into four prices. A footprint reverses that compression. Different platforms use different names: NinjaTrader calls it Volumetric Bars, ATAS calls it Clusters, Sierra Chart calls it Numbers Bars. The idea is the same: for every price level inside the candle, show how much traded and which side was aggressive.

Chapter 8 is devoted to footprint charts. Here we only need to learn to read one.

Reading bid × ask

The most common layout is bid × ask. At each price inside the bar you see two numbers:

For example, a level reading 35 × 120 at 4001.2 means that at that price, 35 contracts were sold aggressively and 120 were bought aggressively. The total volume at the level is 35 + 120 = 155.

Here is a complete small footprint for one illustrative 5-minute GC candle that opened at 4000.6, traded between 4000.4 and 4001.2, and closed at 4001.0:

PriceBid (aggr. sells)Ask (aggr. buys)Level volume
4001.235120155
4001.188142230
4001.0210265475
4000.9160190350
4000.8130115245
4000.79570165
4000.66048108
4000.57230102
4000.4402060
Total8901,0001,890

What can we read from it?

The candle chart would have shown only: open 4000.6, high 4001.2, low 4000.4, close 4001.0. The footprint shows where the business was done and who initiated it.

Other ways to display the same data

Platforms offer several views of the same per-level data:

In the bid × ask layout, experienced readers also compare numbers diagonally (the bid at one price with the ask one tick higher) to look for imbalances. That technique belongs in Chapter 8; for now, the basic reading is enough.

Settings that change the picture

Footprints are sensitive to settings, so two charts of the same gold candle can look different:

  1. Ticks per level. Each row can be one tick ($0.10) or several ticks grouped together. Larger groupings are easier to read but hide detail. A busy gold candle with a $5 range has 50 one-tick levels; grouped by 5 ticks, it has 10.
  2. Bar type. Time bars (for example, 5 minutes), tick bars, volume bars and range bars all slice the same trades differently.
  3. Classification method. BidAsk, UpDownTick or an approach with an unknown bucket, as described above.
  4. Historical data. Building past footprints accurately requires historical tick data with the bid and ask at each trade. Without it, history is either unavailable or rebuilt with a different method than live data.

What a footprint cannot show

A footprint shows what happened, not what will happen. It also shows only trades. Orders that were placed and cancelled, which can matter a great deal, appear nowhere in it (Chapter 10 deals with the order book).

Key idea: In a bid × ask footprint, left = aggressive sells, right = aggressive buys, and their sum is the volume at that price.

Common mistake: "The left number is buyers who bought at the bid." The buyers at the bid were passive. The footprint counts the aggressive side, which at the bid is the seller.

Common mistake: "The bar's POC always becomes support or resistance." This is a popular claim, not proven.

---

Bar Delta: Net Aggression in One Number

A footprint holds a lot of numbers. Bar delta summarises them in one.

The formula

Bar delta = aggressive buy volume − aggressive sell volume

In footprint terms: the sum of the ask column minus the sum of the bid column. For the candle above, delta = 1,000 − 890 = +110.

A larger worked example: a 5-minute GC bar with 1,200 contracts traded at the ask and 900 at the bid has:

Delta percentage

A raw delta of +300 means different things in different bars. Delta % normalises it:

Delta % = delta ÷ total volume

For our bar: 300 ÷ 2,100 ≈ 14%. Compare:

BarVolumeDeltaDelta %
Quiet Asian bar500+300+60%
Our New York bar2,100+300+14%
Data-release bar10,000+300+3%

The same +300 is overwhelming one-sidedness in the first bar and almost perfect balance in the third. Delta % is what lets you compare bars of very different sizes fairly.

+406-72-43+126+145-132+176+72-63Boxes appear only on candles where delta stands out.
Figure 1. Real 1-minute gold futures candles (Oct 2, around the jobs report). Delta boxes show net aggressive buying (+) or selling (−) where it stood out.

Max delta and min delta

Delta changes continuously as a bar forms. Many platforms show the max delta (the highest value delta reached during the bar) and the min delta (the lowest). A bar might close with delta +300 after spending part of its life at −400. Those two numbers sketch the path of aggression inside the bar, something the closing delta alone hides.

What positive delta tells you, and what it does not

A positive delta tells you exactly one thing: during this bar, buyers were more in a hurry than sellers. More contracts were bought by crossing the spread than were sold by crossing it.

It does not tell you:

  1. That price went up. A bar can close lower with positive delta. Picture aggressive buyers repeatedly lifting offers while a large seller keeps refilling the offer side with passive limit orders and the bid side quietly steps lower. Plenty of aggressive buying, yet a red candle.
  2. That "smart money" was buying. Identity is invisible, and many large participants trade passively.
  3. That the next bar will be higher. Delta describes the bar that just finished.
  4. Anything independent of classification. As shown above, the method can change the number, even its sign.

There is a simple way to keep this in perspective. Every bar is an interaction between aggressors, which delta measures, and passive orders, which delta does not see at all. Delta is half the story.

In our own testing, the sign of a bar's delta on its own did not predict the direction of the following bars once costs were included. Think of delta as a measurement of aggression, not a signal.

Key idea: Delta measures who was in a hurry, not who was "stronger", and not where price goes next.

Common mistake: "Positive delta means price will go up." Not necessarily, in this bar or the next.

Common mistake: "Delta is the number of buyers minus the number of sellers." Delta counts contracts, not people, and bought and sold contracts are always equal; delta measures only the aggressive side.

Common mistake: "A red candle with large positive delta is certain absorption and a reversal." This is a popular claim, not proven.

Try it: Take ten consecutive 5-minute GC bars and write each bar's delta and delta % underneath. Mark any green bar with negative delta and any red bar with positive delta. They are more common than most people expect.

---

Cumulative Volume Delta (CVD): The Running Total

Bar delta describes one bar. Cumulative volume delta (CVD) strings bars together.

The formula

CVD is the running sum of bar deltas from a chosen starting point, called the anchor:

CVD(n) = Δ(1) + Δ(2) + … + Δ(n)

Worked example: four bars with deltas +300, −100, +250, −50.

BarBar deltaCVD
1+300300
2−100200
3+250450
4−50400

CVD is usually drawn as a line, or as "CVD candles", in a panel under the price chart.

Reading CVD: the slope, not the number

The absolute level of CVD, such as "+12,400", means almost nothing on its own, because it depends entirely on where the sum started. What carries meaning is the change over a specific stretch of time. That is the gateway to the next section, on anchors.

CVD inherits, and accumulates, delta's limits

The realistic use of CVD is to summarise the flow of aggression across a session at a glance and compare it with the path of price. It is context, not an entry signal.

Key idea: Read the slope of CVD over a defined window. The absolute number depends on where you started counting.

Common mistake: "Positive CVD means more money came into gold today." It means more net aggressive buying, nothing more.

Common mistake: "CVD always turns before price." This is a popular claim, not proven.

---

The CVD Anchor Trap: Session Reset vs Chart Load

Because CVD is a running total, the anchor controls what you see. This is one of the most common sources of confusion in order flow, and it is easy to avoid once you understand it.

Trap 1: "since chart load"

Many platforms, by default, start the sum at the first bar loaded on the chart. Load five days of history today and ten days tomorrow, and the CVD line starts from a different place.

Suppose that over the five days before today, net delta was +4,800, while over the ten days before today it was −2,300. Today's own net aggression is +1,150 either way. But:

Chart settingCVD at today's startCVD at today's end
Since load, 5 days+4,800+5,950
Since load, 10 days−2,300−1,150
Session reset0+1,150

Mathematically, loading more history shifts the line by a constant on the days the two charts share. In practice, though, the panel rescales, the earliest loaded bars differ, data gaps fall in different places, and any comparison involving the start of the data changes. Screenshots stop being reproducible and level comparisons become meaningless. ATAS, for example, states plainly that without its session delta mode, the indicator uses all the loaded data.

Session reset

The alternative is to reset CVD to zero at the start of each session. Days become comparable: each day's CVD answers the same question. But that raises the next question: which session? For gold the reasonable choices include:

AnchorStarts atQuestion it answers
CME trading day18:00 ET the previous eveningNet aggression since the official trading day began
Asia18:00 ETNet aggression during the Asian session
Londonabout 03:00 ETNet aggression since London became active
New Yorkabout 08:20 ETNet aggression since the New York open (many educators prefer this for intraday work)
New York initial balance08:20 ET, first hourNet aggression during New York's opening hour

Remember from Chapter 1 that the CME trading day starts at 18:00 ET the evening before, so a Monday-evening Asian session belongs to Tuesday's trading day.

Why the anchor can change a "divergence"

Here is a concrete case. During one illustrative day, GC makes a high at 4020.0 at 04:10 ET during London, and a slightly higher high at 4024.0 at 10:30 ET during New York (about 3,990–3,993 and 3,994–3,997 on XAUUSD).

Both statements are true. They answer different questions: "Since the trading day began, was aggression at the second high weaker than at the first?" versus "Since New York opened, has aggressive buying accompanied the rally?" A comparison between two points after the same anchor gives the same answer whatever the anchor is. A comparison that straddles an anchor, or that compares levels across days, depends entirely on the anchor.

Trap 2: the incomplete anchor

Suppose your platform connects at 09:10 ET because your computer was off, and your "session CVD" is supposed to start at 18:00 ET the previous evening. Unless the platform backfills complete tick history, your CVD actually starts at 09:10: it is missing all of Asia and London. It looks exactly like a complete line. A good tool should flag an anchor as incomplete when data before it is missing or when there was a gap or disconnection during the session.

Trap 3: the wrong scale

A weekly or multi-day CVD buries short intraday swings under days of accumulated flow. The rule of thumb: the scale of the anchor should match the scale of the question. Intraday questions need intraday anchors.

Label your anchor

Whenever you show or share a CVD chart, write the anchor on it, for example "CVD anchored: NY open 08:20 ET". Without the anchor, a CVD claim cannot be checked.

Key idea: A CVD line without a stated anchor is incomplete information. Choose the anchor that matches your question, and say what it is.

Common mistake: "My CVD shows a divergence," without saying the anchor. With a different anchor the divergence may not exist.

Common mistake: "CVD is the same on every platform." Anchors and classification methods differ.

Common mistake: "Weekly CVD gives a bigger, better picture." For intraday questions it mostly adds noise.

Try it: On a 5-minute GC chart, display CVD three ways: since chart load, reset at 18:00 ET, and anchored at 08:20 ET. Pick two price highs on the same day, one before 08:20 and one after, and compare what each version says about them.

---

High Volume ≠ Direction

This idea appeared in Chapter 2 as a myth to discard. Now that you have the tools of this chapter, we can make it practical.

High volume means a large number of contracts changed hands. Every one of those contracts had a buyer and a seller, so volume is, by its nature, direction-free. The same tall volume bar can come from completely different situations.

Five stories behind one tall bar

  1. Initiative. One side arrives with heavy aggression and moves price. Typical footprint: high volume, delta strongly in the direction of the move, a large range.
  2. Stop run or liquidation. Many stop orders sit beyond an obvious level, such as the Asian-session high. When price reaches it, the stops trigger and turn into market orders. The volume is high because traders were forced to act, not because they chose to. Afterwards, the move may continue or may simply end.
  3. Absorption, or a two-sided battle. Heavy aggression runs into large passive orders on the other side. Volume is high but price barely moves.
  4. Scheduled events. A US data release at 08:30 ET, the GC settlement window from 13:29 to 13:30 ET, or a roll period. The volume is high because of the calendar.
  5. Spread and routine trading. Part of the volume can come from rolls between contract months or spread strategies that have no net directional intent.

Here are four illustrative 5-minute GC bars, each with RVOL above 3 (round numbers, not from a specific day):

StoryVolumeDeltaDelta %Range
Data release at 08:30 ET6,200+1,400+23%$9.0
Break of the Asian high (stop run)3,100+1,100+35%$4.5
Heavy volume, tiny range (possible absorption)4,000+900+22%$0.8
Bar containing the settlement window3,500+60+2%$1.2

All four would light up a volume filter. They are four different events.

What to read next to volume

To interpret a high-volume bar, look at least at:

A high-volume bar says, honestly, "something mattered to participants here." Working out what requires the other evidence, and even then the conclusion is a probability, not a certainty.

Key idea: A tall volume bar means "pay attention here," never "go this way."

Common mistake: "Big volume means big players are buying." Volume has no direction.

Common mistake: "A climactic high-volume bar marks the end of a trend." This is a popular claim, not proven.

Common mistake: "Low volume means the move is fake." This is a popular claim, not proven. When the order book is thin, moves on low volume are entirely real.

---

When Delta and Price Disagree (Introduction)

We usually expect aggressive buying to lift price and aggressive selling to push it down. When that does not happen, we have a disagreement, often called a divergence. This section only introduces the idea; later chapters return to it with more tools.

Two levels of disagreement

1. Within a single bar. A green candle with negative delta, or a red candle with positive delta. For example, GC rises during a bar while aggressive selling dominates. Price went up without buyers pushing it: perhaps passive sellers stepped away, or passive buyers kept raising their bids.

2. Across a stretch of CVD. Price makes a higher high, but CVD, with a stated anchor, makes a lower high. Or price makes a lower low while CVD makes a higher low.

PRICE 4230 → 4147CUMULATIVE DELTA 0 → +5,504
Figure 2. Monday Sep 28, 2026: gold fell about $82 while cumulative delta finished around +5,504. Aggressive buying was absorbed by resting sellers.

The figure shows a real gold session (28 September) in which price fell while cumulative delta rose: aggressive buying was dominating, yet price drifted lower.

Possible explanations

Each of these is plausible, and from the delta numbers alone you usually cannot tell which one applies:

A question, not a signal

Why only an introduction? Because divergence is widely sold online as a "reversal signal". That is a popular claim, not proven. A divergence can persist for hours while price continues in its own direction.

The useful way to treat a disagreement is as a question generator, not a decision maker. Ask: "Why isn't this side's aggression moving price? Who is passive on the other side?" Then look for other evidence: the order book or heatmap (Chapter 10), the location within the volume profile (Chapters 5 and 6), and how the market behaves next.

A helpful rule from ATAS's educational material: the scale of your reaction should match the scale of the disagreement. A disagreement in one bar does not justify a conclusion about the whole day.

Key idea: When delta and price disagree, the honest statement is "aggression on this side is not what is driving price right now; find out why."

Common mistake: "Delta divergence means a reversal." This is a popular claim, not proven.

Common mistake: "A CVD divergence always means big players are on the other side." This is a popular claim, not proven.

Common mistake: "Several divergences in a row make a reversal certain." There is no statistical evidence for this.

---

Chapter summary

Checklist

Quiz

  1. The bid is 4000.0 and the ask is 4000.1. A 12-lot trade prints at 4000.0. How is it classified under the quote rule, and who was passive?
  2. Quotes are unavailable. The previous trade printed at 4000.2 and this trade prints at 4000.3. What does the tick rule say? What would it say if the following trade also printed at 4000.3?
  3. A 5-minute bar at 02:15 ET trades 600 contracts. Over the previous 20 days, the average 02:15 bar traded 200 contracts. What is the RVOL, and what does it tell you about direction?
  4. A footprint bar's ask column sums to 600 and its bid column to 900. What are the bar delta and delta %? Could this bar have closed higher than it opened?
  5. Bar deltas, anchored at the first bar, are +200, −50 and +100. What is the CVD after bar 3? If you reloaded the chart with more history and no session reset, what would change?

Quiz answers

  1. It is an aggressive sell: a seller crossed the spread and hit the bid at 4000.0. The buyer was passive; their limit order was resting at the bid.
  2. 4000.3 is higher than 4000.2, an uptick, so the tick rule says buy. A following trade at 4000.3 is a zero-uptick, so it would also be labelled a buy, inheriting the last change. (In a quiet range, this inheritance is exactly how the tick rule carries errors forward.)
  3. RVOL = 600 ÷ 200 = 3: three times the normal activity for that time of day. It tells you nothing about direction; it only says something unusual happened in terms of activity. You would need delta, range, location and what followed to interpret it.
  4. Delta = 600 − 900 = −300. Volume = 1,500 (assuming no unknowns), so delta % = −300 ÷ 1,500 = −20%. Yes, the bar could still have closed higher: delta measures only aggressive orders, and price can rise if passive sellers withdraw or passive buyers keep raising their bids.
  5. CVD = 200 − 50 + 100 = 250. Reloading with more history and no reset would shift the level of the whole CVD line (it would start from the sum of all the earlier loaded bars), and the chart could look different because of rescaling and data differences. The bar deltas themselves, and the change from bar 1 to bar 3, would not change.
Prefer the PDF? This chapter is part of the free 301-page eBook Gold Order Flow: From Zero to Volume Trading.
Get the free PDFGlossary

Education only. Not financial advice. Trading involves substantial risk of loss.