Quant Memo
Core

Cumulative Volume Delta

A running total, across the whole session, of buy-initiated volume minus sell-initiated volume — a chart traders watch alongside price to spot when the two are agreeing or diverging.

Prerequisites: Trade Aggressor Imbalance

Trade aggressor imbalance gives a snapshot over one window. Cumulative volume delta (CVD) takes the same buy-minus-sell idea and never resets it: it's a single running total, tick by tick, of buyer-initiated volume minus seller-initiated volume from the start of the session onward, plotted as its own line alongside the price chart. Where imbalance answers "who's winning right now," CVD answers "who's been winning all day, and does that match what price has actually done."

The idea: a scoreboard that never resets

Think of a long relay race where instead of watching the runners, you only get a running scoreboard of net ground gained by team A versus team B, updated after every leg and never reset to zero mid-race. If the scoreboard keeps climbing in team A's favor while the visible race markers (the price) also keep moving in team A's favor, the two stories agree — unsurprising. But if the scoreboard keeps climbing for team A while the visible markers stay flat or even move toward team B, something is off: team A is doing all the work of pushing (spending volume, initiating trades) without it translating into visible progress, which is exactly the kind of divergence traders watch CVD for.

Building it up, one step at a time

Classify every trade ii as buyer-initiated or seller-initiated using a trade classification rule, and accumulate:

CVDt=i=1t(VibuyVisell),CVD_t = \sum_{i=1}^{t} \left( V_i^{buy} - V_i^{sell} \right) ,

running from the first trade of the session up to the current trade tt, never resetting. In plain English: every buy-classified trade adds its size to the running total, every sell-classified trade subtracts its size, and the resulting line traces the net cumulative buying or selling pressure across the whole session so far.

Worked example: reading agreement versus divergence

A stock opens flat. Over the morning, CVD climbs steadily from 0 to +80,000 shares as buy-classified volume outpaces sell-classified volume, and the price rises from $40.00 to $40.60 over the same period — CVD and price are telling the same story, buying pressure is showing up as buying pressure in the price. This is the unremarkable, "confirming" case.

Now suppose over the afternoon CVD keeps climbing, reaching +140,000 shares by the close, but the price actually drifts back down to $40.30. That's a divergence: net order flow was still buyer-heavy by the classification rule, yet price didn't follow. Possible explanations traders look for include a large hidden seller absorbing the buy flow without letting price move (iceberg orders resting patiently at the offer), classification error inflating the apparent buy volume, or genuine buying pressure being met by an equally large, less "aggressive" but persistent seller who never crosses the spread and so never shows up as sell-classified volume. None of these are proven by CVD alone — the divergence is a prompt to investigate, not a signal to trade mechanically.

Path explorer
13055time →
end (bold path) 100.38spread of ends 58.966 independent paths, same settings

A CVD line that climbs steadily while price mean-reverts around a level, as the paths above illustrate for a mean-reverting process, is the visual signature traders call "absorption" — persistent one-sided flow being soaked up without moving price, often because a large resting order or a passive counterparty is on the other side.

What this means in practice

CVD is most useful read together with price, not on its own — the interesting information is almost entirely in the relationship between the two lines (agreement versus divergence) rather than the level of CVD itself, which is an arbitrary running sum with no natural zero once the session has been open a while. It's a popular tool on retail and prop-desk order-flow platforms precisely because it's visually intuitive, but it inherits every weakness of the underlying trade classification rule, and a persistent divergence is a hypothesis to investigate rather than an automatic trading signal.

Cumulative volume delta is a running, never-reset total of classified buy volume minus sell volume across a session. Watched alongside price, agreement between the two confirms the visible trend, while divergence flags possible hidden absorption or classification noise worth investigating further.

CVD's absolute level is not meaningful on its own — it depends entirely on when the running total started and on classification accuracy, which itself degrades in volatile conditions. Traders who chase the CVD level rather than watching its relationship to price are treating an arbitrary cumulative sum as if it had an inherent equilibrium.

Related concepts

Practice in interviews

Further reading

  • Aldridge, High-Frequency Trading: A Practical Guide, ch. on order flow
ShareTwitterLinkedIn