Direct Answer
Cumulative volume delta (CVD) is the running sum of per-interval volume delta, where delta equals buyer-initiated volume (traded at the ask) minus seller-initiated volume (traded at the bid). Because exchanges typically don't publish whether a given print was buyer- or seller-initiated, platforms infer it with a trade-classification algorithm - and different platforms use different algorithms and data feeds, so the exact same underlying trades can produce meaningfully different CVD readings depending on where you're looking.
Key Takeaways
- Delta at any interval is buyer-initiated (ask-side) volume minus seller-initiated (bid-side) volume.
- Cumulative volume delta is the running total of that delta across a session or chart, not a per-bar reset.
- No exchange tape universally flags each trade as buyer- or seller-initiated, so platforms must infer it.
- The tick rule and quote-comparison rule are the two most common inference methods, and they can disagree on individual trades.
- Different data feeds (consolidated versus single-venue, for example) can also change which trades a platform even sees.
- Because of both factors, CVD numbers should be compared over time within one platform's own methodology, not against a different platform's CVD line.
What Is Cumulative Volume Delta (CVD)?
Cumulative volume delta is a running total of "delta" - the net difference between aggressive buying and aggressive selling - accumulated over a session or a chart. At each interval (a time bar, a price bar, or an individual trade, depending on the platform), delta is calculated as the volume classified as buyer-initiated minus the volume classified as seller-initiated. CVD then adds that interval's delta to the running total from before, producing a line that rises when buyers are more aggressive on net and falls when sellers are more aggressive on net.
CVD is distinct from raw volume, which simply counts how much traded regardless of direction, and distinct from price, which can move for reasons unrelated to the immediate balance of aggressive buying and selling (a large resting limit order absorbing flow, for instance). CVD is meant to describe who was more aggressive at each interval, not to predict what price does next.
How Is Delta Calculated at Each Interval?
Delta at a single interval is: Delta = Ask-side (buyer-initiated) volume − Bid-side (seller-initiated) volume. "Ask-side" means a trade executed at or near the prevailing ask price, interpreted as a buyer aggressively taking liquidity; "bid-side" means a trade executed at or near the prevailing bid, interpreted as a seller aggressively taking liquidity. Cumulative volume delta then carries forward: CVD at time t = CVD at time t−1 + Delta at time t. The running sum is what makes it "cumulative" rather than a per-bar reading like a single bar's delta alone.
Every trade in a continuous market has both a buyer and a seller by definition - what delta actually measures is which side of the trade was the aggressor (the one who crossed the spread to trade immediately) versus the passive side (the one whose resting order got filled). That aggressor/passive distinction is the entire basis of CVD, and it's also exactly the piece of information that isn't directly published on most exchange tapes.
Why Do Trade-Classification Methods Make CVD Differ Across Platforms?
This is the central limitation of CVD as a tool. Most exchanges publish a tape of executed trades - price, size, and timestamp - but not a flag stating whether each trade was buyer-initiated or seller-initiated. To build a CVD line, a platform has to infer that classification using a trade-classification algorithm applied after the fact. The two most common approaches are described below.
What Is the Tick Rule?
The tick rule classifies a trade by comparing its price to the immediately preceding trade price: if the trade occurs at a higher price than the last trade (an "uptick"), it's classified as buyer-initiated; if it occurs at a lower price (a "downtick"), it's classified as seller-initiated; a trade at the same price commonly inherits the classification of the last price change. The tick rule only needs the trade tape itself, which makes it simple to compute, but it can misclassify trades during fast, choppy sequences where price bounces don't cleanly reflect aggressor side.
What Is the Quote Rule?
The quote-comparison rule instead compares each trade's execution price to the prevailing best bid and ask at the moment of execution: a trade at or near the ask is classified as buyer-initiated, a trade at or near the bid is classified as seller-initiated, and a trade that lands between the bid and ask (a "midpoint" print) is typically handled with a platform-specific tiebreak rule. The quote rule generally requires access to a full quote (bid/ask) feed, not just the trade tape, so it depends on data the platform may or may not have licensed at the same resolution the exchange itself sees.
Can CVD Readings Be Compared Across Different Platforms?
Not reliably. A platform using the tick rule on a delayed, single-venue trade feed can produce a visibly different CVD line from a platform using a quote-comparison rule on a full consolidated feed - for the identical instrument, over the identical period. Neither line is simply "wrong"; they're measuring the same underlying trades through different classification lenses. The practical implication is to treat CVD as a within-platform, internally consistent metric: track how your platform's CVD behaves over time and relative to its own history, rather than comparing its absolute reading to a screenshot or number from a different tool.
Worked Hypothetical Example: Four-Interval CVD Calculation
The table below walks through a hypothetical instrument over four consecutive intervals (these could be one-minute bars, five-minute bars, or any other fixed interval a platform uses). Each interval's ask-side and bid-side volume is already classified - the arithmetic itself is simple addition and subtraction, shown step by step so it can be hand-verified.
| Interval | Ask-side volume (buyer-initiated) | Bid-side volume (seller-initiated) | Delta | Cumulative volume delta |
|---|---|---|---|---|
| 1 | 800 | 500 | +300 | +300 |
| 2 | 400 | 650 | −250 | +50 |
| 3 | 900 | 300 | +600 | +650 |
| 4 | 350 | 700 | −350 | +300 |
Interval 1: 800 ask-side minus 500 bid-side gives a delta of +300, so CVD starts the session at +300. Interval 2: 400 minus 650 gives a delta of −250, which is added to the prior CVD of +300 to give +50 (300 − 250 = 50). Interval 3: 900 minus 300 gives +600, carried forward to 50 + 600 = +650. Interval 4: 350 minus 700 gives −350, carried forward to 650 − 350 = +300. The session's CVD ends at +300, meaning buyer-initiated volume exceeded seller-initiated volume by 300 contracts or shares over the four intervals combined, even though interval 2 and interval 4 were both net-seller-initiated on their own.
Assumptions and limitations:
- The example is entirely hypothetical and the classification of each interval's volume into ask-side and bid-side is given, not derived from raw tick data.
- A real platform would apply a tick rule, quote rule, or proprietary method to arrive at these ask-side and bid-side splits, and a different method could produce different splits from the same raw trades.
- Four intervals are far too few to draw any conclusion about a real market; this is an arithmetic illustration only.
- Session resets, corrections, and data-feed gaps are not modeled here but affect real CVD series.
Tick Rule Versus Quote Rule Classification
| Method | What it compares | Data required | Main weakness |
|---|---|---|---|
| Tick rule | Current trade price vs. the previous trade price | Trade (tape) data only | Can misclassify trades during rapid, choppy price sequences |
| Quote rule | Current trade price vs. the prevailing bid/ask at execution | Trade data plus a synchronized quote feed | Needs a quote feed at the same resolution as the exchange; midpoint prints need a tiebreak rule |
Neither method is universally "more correct" - each is an inference built on different available data, and platforms don't always disclose which one, or which variant of it, they use.
Misconceptions Versus Reality
| Misconception | Reality |
|---|---|
| Exchanges publish whether each trade was buyer- or seller-initiated | Most exchange tapes only publish price, size, and timestamp - the aggressor side is inferred by the platform, not disclosed by the exchange |
| A CVD reading of +300 on one platform means the same thing as +300 on another platform | Different classification methods and data feeds can produce different absolute CVD values from identical underlying trades, so the numbers aren't directly comparable across platforms |
| CVD and price should always move in the same direction | Price and CVD can diverge - price can rise while CVD falls, or vice versa - and a divergence is a descriptive observation, not an automatic signal |
| A rising CVD guarantees rising prices next | CVD describes historical aggressor-side volume balance; it does not forecast future price direction on its own |
Risks and Limitations
- Classification uncertainty is unavoidable. Every CVD reading is built on an inferred, not disclosed, aggressor classification, so some percentage of trades are misclassified by any method.
- Cross-platform comparison is misleading. Comparing CVD levels between two different tools, or between a chart screenshot and your own platform, mixes two different classification methodologies and can manufacture an apparent discrepancy that has nothing to do with the market.
- Session and reset rules matter. A CVD line that resets at a different time than another platform's, or that includes or excludes extended-hours volume, isn't measuring the same window even on the same instrument.
- Data-feed differences compound classification differences. A single-venue feed and a consolidated feed can see different trades entirely, before classification methodology is even applied.
Treat CVD as a within-platform, methodology-dependent metric, not a universal, cross-platform number - and treat any single reading as descriptive of what already happened, not a guarantee of what happens next.
Checklist Before Relying on a CVD Reading
- The platform's trade-classification method (tick rule, quote rule, or another variant) was identified, if disclosed.
- The underlying data feed (consolidated versus single-venue, delayed versus real-time) was noted.
- The session and reset rules governing the CVD line were confirmed, including extended-hours treatment.
- Any CVD comparison was made within the same platform and methodology, not against a different tool's CVD line.
- A CVD divergence or extreme reading was treated as one input alongside price structure and other evidence, not a standalone trade signal.
CVD Glossary
- Delta - the net difference between buyer-initiated and seller-initiated volume at a single interval.
- Cumulative volume delta (CVD) - the running sum of delta across a session or chart.
- Buyer-initiated (ask-side) volume - volume from trades executed at or near the prevailing ask, interpreted as an aggressive buyer taking liquidity.
- Seller-initiated (bid-side) volume - volume from trades executed at or near the prevailing bid, interpreted as an aggressive seller taking liquidity.
- Trade classification - the algorithm a platform uses to infer whether a trade was buyer- or seller-initiated, since exchanges typically don't publish this directly.
- Tick rule - a classification method comparing a trade's price to the previous trade's price.
- Quote rule - a classification method comparing a trade's price to the prevailing bid/ask at execution.
Frequently Asked Questions
What Is Cumulative Volume Delta (CVD)?
Cumulative volume delta is the running sum of per-interval volume delta, where delta at each interval is buyer-initiated volume (traded at the ask) minus seller-initiated volume (traded at the bid). CVD accumulates that delta across a session or chart rather than resetting each bar, so it tracks the net direction of aggressive trading over time rather than at a single instant.
How Is Delta Calculated at Each Interval?
Delta at a given interval equals the volume classified as buyer-initiated (trades executed at or near the ask) minus the volume classified as seller-initiated (trades executed at or near the bid). The interval can be a time bar, a price bar, or a single trade, depending on the platform.
Why Do Trade-Classification Methods Make CVD Differ Across Platforms?
Exchanges typically don't publish whether each print was buyer- or seller-initiated, so platforms infer it using a trade-classification algorithm, commonly a variant of the tick rule or a quote-comparison rule. Different platforms use different classification methods and different underlying data feeds, so the same underlying trades can produce meaningfully different CVD readings depending on which platform calculated them.
Can CVD Readings Be Compared Across Different Platforms?
Not reliably. Because classification methodology and data feeds differ by platform, a CVD series from one platform is not directly comparable to a CVD series from another, even for the identical instrument and time period. CVD is best used consistently within one platform's own methodology rather than compared across tools.
Related Reading
- Order Flow & Volume-at-Price Deep Dive - the hub this page belongs to.
- Order Flow Data Limitations - the fuller treatment of why classification methodology and data feeds cause cross-platform inconsistency.
- Footprint Charts, Bid/Ask Volume, and Delta - how delta is visualized at each price level within a single candle.
- Volume Profile Explained - a related volume-by-price framework that shows where volume traded rather than which side initiated it.
- Technical Indicators Guide - the full indicator library this page is part of.