
Cumulative Volume Delta. Who is actually hitting the book.
Every trade has a buyer and a seller, so volume alone cannot tell you which side was in a hurry. Cumulative volume delta separates them by looking at who crossed the spread: market buys count positive, market sells count negative, and the running total is CVD.
It is the closest thing to a direct read on aggression, and its most useful signal appears when it disagrees with price.
Divergence between CVD and price is absorption
If aggressive selling is heavy and price does not fall, something is absorbing it: resting bids are soaking up every market sell without stepping back. That is a meaningfully different situation from price holding on light volume, and it is invisible on a candle chart. The same logic inverts at highs, where heavy aggressive buying that fails to lift price usually means someone is distributing into it.
Cumulative Volume Delta in a strategy
Falling CVD with flat price at support means sellers are being absorbed rather than winning.
A rally with CVD rising alongside it is being driven by real aggressive buying, not just thin books.
A sharp CVD spike that produces almost no price movement often marks the end of a push.
A strategy can require price and CVD to agree before it takes a signal.
Buy absorption at a range low
The setup is a level holding while sellers keep hitting it. CVD is what turns "it feels like buyers are defending this" into a condition.
- IFPrice is within 0.5% of a range low that has held at least twice
- ANDCVD over the last 30 minutes is falling, showing sustained aggressive selling
- ANDPrice over that same 30 minutes is flat or higher, so the selling is not working
- ANDThe candle low has not broken the prior range low
The whole signal lives in the contradiction between the third condition and the second. Falling CVD alone just means people are selling, which is normal. Falling CVD while price refuses to follow means the selling is being absorbed by resting bids, and whoever is doing that has more size than the sellers. It fails when the absorbing bid is pulled, which is why the stop sits below the level rather than at it.
Venues publish each execution with a flag for which side was the aggressor, which is the raw input CVD is built from.
TradingView and most order flow tools compute CVD per venue directly from those trade prints.
CVD is meaningful for a single order book. Summing it across exchanges mixes separate books and mostly produces noise.
The aggressor flag is not always what it seems
CVD depends on the exchange correctly labelling which side initiated, and that labelling differs between venues and can be distorted by how an exchange reports large or self-matched trades. It is also strictly per-book, so a strong reading on one exchange can be contradicted on another.
Turn Cumulative Volume Delta into a rule that fires.
Paper trade it first, go live when the numbers convince you.
- Absorption at levels
- Trend confirmation
- Exhaustion

