CVD — cumulative volume delta — is the running total of delta: each candle's aggressive buy volume minus its aggressive sell volume, added up through the trading session. It is one line that describes which side has been initiating more of the trading since the open, and it is read against price rather than on its own.
Every trade has two sides, but only one side initiates it. A buyer who pays the offer price is the aggressor; so is a seller who accepts the bid. Delta counts that initiative for one candle: volume traded at the offer minus volume traded at the bid. CVD adds those deltas together, candle after candle, from the start of the session.
A rising CVD line means buyers have been initiating more volume than sellers so far today. A falling line means sellers have. A flat line means the two sides have roughly matched. Because it accumulates, CVD smooths out the bar-to-bar noise of individual deltas and shows the direction of initiative across the whole day. It does not show how much was wanted — resting limit orders that nobody traded against never appear in it. For the single-candle version, see volume delta explained.
There are three steps, and each one is a place where two platforms can legitimately produce different numbers.
An illustrative five-candle sequence (made-up numbers, for arithmetic only):
| Candle | Buy-initiated | Sell-initiated | Delta | CVD |
|---|---|---|---|---|
| 1 | 42,000 | 30,000 | +12,000 | +12,000 |
| 2 | 35,000 | 33,000 | +2,000 | +14,000 |
| 3 | 28,000 | 41,000 | −13,000 | +1,000 |
| 4 | 31,000 | 39,000 | −8,000 | −7,000 |
| 5 | 50,000 | 24,000 | +26,000 | +19,000 |
Notice candle 3: the session is still net positive (+1,000) even though that candle was clearly sell-dominated. CVD answers "who has led since the open", delta answers "who led this bar" — the two can point in different directions at the same moment.
CVD is almost always read alongside the price chart. Four observations cover most of what it describes:
A practical habit: compare CVD at price levels you already care about — the previous session's high and low, the volume profile point of control, or a round number — rather than scanning the line in isolation.
A divergence is a disagreement between the price chart and the initiative flow. The two common shapes:
A divergence is a description, not a forecast. It says the chart and the tape disagree at this moment. Plenty of divergences are followed by price continuing in the same direction, especially in strongly trending sessions, and a divergence measured over three candles means far less than one that builds over an hour. Divergences are most informative when they appear at a level that already matters for other reasons.
These four are often confused because they all start from volume.
| Measure | What it answers | How direction is decided | Resets |
|---|---|---|---|
| Volume | How much traded | No direction | Per candle |
| Delta | Who initiated more in this candle | Each trade vs bid/offer | Per candle |
| CVD | Who has initiated more since the open | Each trade vs bid/offer, summed | Per session |
| OBV (on-balance volume) | Running volume tally by closing direction | The whole candle's volume is added if the close is up, subtracted if down | Never (runs across days) |
The key difference from OBV: OBV assigns a full candle's volume to one side based only on where it closed, so a candle that closed up by five paise adds all of its volume as "up". CVD classifies trade by trade, so the same candle might carry a small or even negative delta.
The mechanics are the same on every instrument, but Indian market structure changes how the line looks.
Two charts of the same stock on the same day can show different CVD values. That is usually not an error — it comes from three choices each platform makes:
On VolumeLens, CVD is built from the live streaming market feed, each trade is classified against the best bid and offer with a tick-rule fallback, and the line resets at the start of every NSE session (IST). Because a streaming feed samples trades, read the line for direction, slope and divergence rather than as an exact count of exchange volume.
On a VolumeLens chart, per-candle delta bars and the session CVD line sit in a pane below price, alongside footprint, large-trade markers and volume profile. Order flow data is available for roughly 2,000 NSE stocks and the major index futures and options. The AI Mentor and Market Eye can describe CVD shifts in plain language while you watch the chart. The pro order-flow panes are part of a daily order-flow session, and your first session is free.
Every trading day VolumeLens also publishes free, factual order-flow numbers for about 450 NSE stocks — see any stock data page or the positive delta screener.
CVD stands for cumulative volume delta: the running total, across a session, of buyer-initiated volume minus seller-initiated volume.
Read it against price. Look at its slope (how one-sided initiative has been), whether it agrees with the price direction, whether it diverges at new highs or lows, and whether it flattens while price keeps moving.
Net aggressive buying is arriving while price declines — typically a sign that resting sell orders are absorbing the buying. It describes a disagreement between the tape and the chart, not what price does next.
When price and CVD disagree — for example price sets a new session high but CVD does not. It shows the latest push had less net aggressive participation than the previous one.
No. OBV adds or subtracts a whole candle's volume based on whether it closed up or down. CVD classifies each trade as buyer- or seller-initiated and sums the difference, and it usually resets each session.
On VolumeLens, yes — CVD resets at the start of each NSE session (IST), so the line always describes the current day. Some platforms run CVD continuously across days.
Yes. VolumeLens computes CVD for roughly 2,000 NSE stocks and the major index futures and options. Index futures and large caps give the smoothest lines; single option strikes and small caps are thinner.
Platforms classify trades differently, use different data granularity (exchange tick-by-tick vs sampled streaming feeds) and reset at different times, so absolute values differ even when the direction agrees.