Skip to content

AI analysis

Crypto cumulative volume delta: verify the trades behind CVD

One six-trade ledger ends at zero, −6 or +9 depending on resets and data integrity. Reconstruct the feed before interpreting its CVD line.

Ivory tiles converge from both sides through a clear frame beneath a lime stack, while several tiles fall into a dark gap.
Illustration for ai analysis; examples in this article are educational.

Crypto cumulative volume delta (CVD) accumulates signed trading volume from a defined starting point or reset. With aggressor-side trade data, it adds buyer-initiated quantity and subtracts seller-initiated quantity; some chart implementations instead estimate the sign from lower-timeframe price bars. Interpret CVD only after checking the classification method, units, reset and venue coverage. A rising line describes the selected feed, not net money entering crypto or a guaranteed future price move.

Two charts labeled CVD can disagree without either calculation containing an arithmetic error. They may classify activity differently, start on different dates or observe different trades. The useful first question is what each line actually sums.

Establish how volume receives its sign

Every matched trade has a buyer and seller. Aggressor-side delta distinguishes which side takes available liquidity. A buyer who consumes resting sell liquidity contributes positive quantity; a seller who consumes resting buy liquidity contributes negative quantity. “More buys than sells” is therefore an imprecise description: the measure compares buyer-initiated and seller-initiated volume, not the existence of counterparties.

For Binance spot, the public trade schema includes quantity, trade identity, trade time and m, which indicates whether the buyer is the maker. Under the buyer-positive convention used here, m = true makes the seller the taker and the contribution negative; m = false makes it positive. The aggregate trade stream groups information for a single taker order. These are venue-specific field meanings documented in Binance's spot trade stream reference.

An aggressor need not have submitted a market order: a limit order that crosses resting liquidity can also take it, a distinction reflected in Binance's post-only order definition. The classification concerns the execution's role. Do not infer the original order type, trader intention or whether the participant is opening or closing a position from a signed quantity alone.

A different construction appears in TradingView's Cumulative Volume Delta documentation. That indicator estimates signed volume using lower-timeframe bars: an intrabar close above its open assigns positive volume, and a lower close assigns negative volume. Equal-price cases use previous-close and previous-sign rules. It accumulates across an anchor period and resets at the next period. This describes the documented indicator, rather than every tool carrying the CVD name.

Record whether your data use observed taker classifications or a price-direction estimate. A smaller intrabar interval does not turn the latter into an exchange aggressor flag. The OBV calculation guide covers another distinct rule: signing an entire candle's volume from its close versus the preceding close. Calling both lines “buying pressure” hides that difference.

Rebuild a six-trade CVD ledger

The following trades are invented. Assume one spot market, quantity in base-token units, buyer-positive signing and complete unique trades. Both series begin at zero before trade A. The final column additionally resets to zero immediately before the first trade at or after 00:00 UTC.

TradeUTC timeTaker sideQuantitySigned quantityContinuous CVDDaily-reset CVD
A23:59:57Buy3+333
B23:59:58Sell2−211
C23:59:59Buy5+566
D00:00:01Sell4−42−4
E00:00:02Buy1+13−3
F00:00:03Sell3−30−6

Buyer-initiated quantity is 3 + 5 + 1 = 9. Seller-initiated quantity is 2 + 4 + 3 = 9. The continuous series ends at zero after 18 units of total trading. It reached six earlier, so a zero endpoint does not mean nothing happened.

The daily-reset series ends at −6 because the new day's signed sum is −4 + 1 − 3. The continuous series also falls by six during that interval, from six to zero. Their changes agree within the new period; their levels differ because their starting states differ. A zero crossing is meaningless without the reset definition.

For a 24-hour crypto market, a daily reset is a chosen measurement boundary. Specify the timezone and the treatment of a trade exactly on the boundary. Do not compare yesterday's final cumulative level with today's new zero as if that discontinuity represented a burst of selling.

One gap and one duplicate can reverse the reading

Keep the continuous calculation but suppose trade D never arrives. The observed sum finishes at +4, since removing a −4 contribution raises the total by four. If trade C is then replayed and counted twice, the observed total becomes +9. The complete record ended at zero; the corrupted one appears strongly buyer-positive using exactly the same signing rule.

This is a constructed failure case, not evidence of a particular exchange fault. Its lesson is that a reconnection should not silently splice uncertain history into a cumulative total. Track the last accepted trade identity, backfill available history, remove duplicates and mark unresolved coverage. If completeness cannot be established, an explicit new segment is more honest than a line implying continuity. The WebSocket recovery guide explains why a live heartbeat does not establish recovered market state.

Identity rules also vary. Bybit's public trade documentation defines S as the taker side and i as the trade ID. It warns that multiple futures or spot messages may share the same seq. Deduplicating solely on that sequence can therefore discard legitimate data. Use the documented event identity and scope for the feed, as shown in Bybit's public trade schema.

Keep venue coverage beside every interpretation

A BTC spot pair on one venue and a BTC perpetual contract on another describe different activity. Adding their raw quantities requires compatible units, instrument definitions and an explicit aggregation method. A contract count is not automatically a BTC quantity, and base quantity is not quote turnover. The volume confirmation worksheet helps establish the denominator before comparing activity.

Even a correctly reconstructed single-market CVD leaves other venues, instruments and trading channels outside its scope. A positive spot delta and negative perpetual delta can coexist. Neither observation establishes a global net flow, and a composite cannot repair a missing input merely by including more sources.

Price can also fall while observed buyer-initiated volume dominates. CVD counts executed quantities; it does not contain the complete changing supply of resting orders, cancellations or activity outside the feed. A divergence is a defined disagreement to investigate, not proof of absorption by a particular participant or a reversal deadline.

Other indicators answer different questions. Keltner versus Bollinger channels compares range-based and dispersion-based envelopes around price. A rolling z-score locates an observation within a chosen distribution. Combining those readings with CVD still requires a separately specified decision rule and evaluation; indicator agreement alone does not demonstrate independent evidence or predictive value.

Preserve a feed contract before testing a rule

FieldWhat to record
IdentityVenue, exact instrument, spot or derivative and included channels
VolumeBase units, quote value or normalized contracts; conversion rule
SignObserved taker side or estimated price direction; field mapping
StateStarting timestamp, initial value, reset timezone and boundary rule
CompletenessTrade identity, duplicates, gaps, backfill and unresolved intervals
DecisionObservation time, completed or provisional state, entry condition and invalidation

Use the same contract in historical reconstruction and live observation. A test built from price-direction estimates cannot validate a live rule defined on a different aggressor feed without explaining that substitution. Preserve revisions and uncertain intervals instead of allowing a later repaired line to become evidence that an earlier decision had complete data.

This article was prepared with AI assistance using the linked primary documentation. Its ledger and data-loss scenarios are original hypothetical examples. They explain how to audit CVD, establish no profitable trading result and make no claim about a particular KLINEO CVD implementation.

Keep the context with the example.

Each worked example is illustrative, with its sources and assumptions in the article. Read our editorial standards for authorship, verification and corrections.