Order flow and data quality · 1 / 5
Calculate cumulative volume delta from a trade tape
Cumulative volume delta is a running signed sum of classified trading activity. Its usefulness depends on what was counted, how the trade side was identified and where the sum started. A green line does not mean that more buyers than sellers exist.
Athenum7 minUpdated:
Define the sign and the unit
For a trade feed with a reliable taker-side field, assign positive size to buyer-initiated trades and negative size to seller-initiated trades. Delta for a window is the sum of those signed sizes; CVD accumulates successive deltas from a declared starting point. Every matched trade still has both a buyer and a seller. The sign identifies who crossed available liquidity.
Use either base quantity or quote notional consistently. For quote delta, multiply each trade's base size by its own execution price before summing. Multiplying the final base delta by the last price is generally a different calculation. If a vendor infers direction from price movements rather than exchange taker flags, document that method; the resulting series may differ even with the same total volume.
CVD is not an opening-position ledger
An aggressive buy may open a long, close a short or form one leg of a hedge. CVD cannot identify which of those happened. OI adds information about net outstanding exposure, but combining the two aggregates still does not reveal all participant-level transitions. Keep statements about flow separate from claims about inventory.
The reset convention also changes the level. A daily reset, session reset and continuous history can show different absolute values with the same recent slope. Compare changes over aligned windows. If a feed disconnects, a silently flat CVD line should not be interpreted as balanced trading until completeness is restored.
Four trades, 0.7 BTC of net aggressive buying
Start the running sum at zero. A buyer-initiated trade of 2 BTC gives +2. A seller-initiated 0.5 BTC reduces the sum to 1.5. Another buy of 1 BTC raises it to 2.5, and a sell of 1.8 BTC leaves 0.7. Total traded volume is 5.3 BTC, much larger than the net delta.
The last trade is a sell even though final CVD is positive. Both facts can be true: the whole window contains more buyer-initiated size, while its most recent event is seller-initiated. A decision about the next trade needs price response and context, rather than the final sign alone.
| Trade | Taker side | Size BTC | Running CVD BTC |
|---|---|---|---|
| 1 | Buy | 2.0 | 2.0 |
| 2 | Sell | 0.5 | 1.5 |
| 3 | Buy | 1.0 | 2.5 |
| 4 | Sell | 1.8 | 0.7 |
- After trade 1
- 2 BTC
- After trade 2
- 1.5 BTC
- After trade 3
- 2.5 BTC
- After trade 4
- 0.7 BTC
A divergence can be a measurement mismatch
Comparing a single exchange's CVD with a multi-exchange price index can produce an apparent divergence because the two series cover different markets. Quote/base conversions, filtering and missing intervals can do the same. First reproduce the calculation with aligned coverage; only then investigate whether the residual price/flow relationship has trading value.
Before acting
- Verify whether direction comes from taker flags or an estimation rule.
- Choose base quantity or per-trade quote notional.
- Align start time, reset convention, venues and product type.
- Check missing intervals and duplicate trade IDs.
- Describe aggressor behaviour without inventing opening-position intent.
Check your understanding
A fifth seller-initiated trade of 1.2 BTC follows the example. What are final CVD and total volume?
Show the explained answer
CVD becomes 0.7 − 1.2 = −0.5 BTC. Total volume becomes 5.3 + 1.2 = 6.5 BTC. The net sign switches, but the calculation still does not identify how many traders opened or closed positions.