A running sum of estimated buying minus selling volume — useful context, but only as good as the delta estimate underneath it.
Cumulative Volume Delta (CVD) is a running total of volume delta, where delta for each bar is the volume attributed to buyer-initiated trades minus the volume attributed to seller-initiated trades. Plotted as a line in a separate pane, it aims to show whether aggressive buying or aggressive selling has dominated over time, independent of where price itself sits. The honest answer to whether TradingView's CVD is 'accurate': it is an approximation. True delta requires trade-by-trade data with bid/ask context — each trade classified as buyer-initiated (executed at or near the ask) or seller-initiated (at or near the bid). Chart platforms that lack full tick data instead estimate delta from lower-timeframe candles, assigning each small candle's entire volume to one side based on its direction. That proxy is often directionally reasonable but can differ materially from tick-level delta on a footprint platform, and the two should not be treated as interchangeable. CVD is descriptive, not predictive — it summarizes estimated past order flow and forecasts nothing. This is educational material, not financial advice, and trading involves risk of loss.
With real tick data, each trade is classified by where it executed relative to the prevailing bid and ask: lifting the offer counts as buy volume, hitting the bid counts as sell volume. Per-bar delta is the difference, and CVD is the cumulative sum of those deltas from some anchor point (a session open, week open, or the start of loaded data). The common approximation instead requests lower-timeframe candles inside each chart bar — say, 1-minute candles inside a 1-hour bar — and assigns each small candle's full volume as buying if it closed up and selling if it closed down (or via the tick rule against the prior close). What this misses is precisely what CVD users often care about most: two-sided flow inside each small candle, trades executing at the midpoint, and absorption — situations where heavy aggressive flow is met by passive orders and price barely moves. Venue coverage adds another layer: the volume feeding the calculation comes from one exchange or feed, not the whole market. And in spot forex there is no centralized volume at all — charts use broker tick volume — so an FX 'CVD' is an approximation built on an approximation. Conclusions drawn from fine-grained CVD wiggles, small divergences, or absorption reads are unsafe under candle-based approximation; broad multi-session slope is the more defensible read.
The main choices are the anchor (session, week, month, or visible range — anchored versions reset periodically so readings stay comparable), the lower timeframe used for the approximation (finer granularity tracks tick delta more closely but shortens available history), and the classification rule (candle direction versus tick rule against the prior close). There are no standard numeric defaults the way there are for RSI or MACD; what matters is knowing which construction your chart uses.
//@version=6
indicator("Approximate CVD (Candle-Based)", overlay = false)
// HONEST LIMITATION: true volume delta requires trade-by-trade bid/ask
// data. This proxy assigns each bar's ENTIRE volume to one side using the
// tick rule (source vs prior source) — coarse, but explicit about it.
src = input.source(close, "Direction Source")
dirUp = src > src[1]
dirDn = src < src[1]
delta = dirUp ? volume : dirDn ? -volume : 0.0
cvd = ta.cum(delta)
plot(cvd, "Approx CVD", color = color.teal)
hline(0, "Zero", color = color.gray)Pro tip: Before acting on any CVD read, find out exactly how your platform built the line — which venue's volume, which lower timeframe, which classification rule — because a divergence that appears on candle-approximated CVD may simply not exist in tick-level delta. Restrict yourself to broad slope and sustained divergence rather than bar-by-bar wiggles, and pair the read with price structure and defined risk. Educational context only, not financial advice; no indicator predicts price, and trading involves risk of loss.
Educational only — not financial advice, not a recommendation to trade. No indicator is predictive; trading involves substantial risk of loss.