Cumulative delta: what it shows a futures trader and its limits
Cumulative delta is the running total of volume traded at the ask minus volume traded at the bid. It records which side crossed the spread more aggressively in the past; it does not by itself say where price goes next. Testing it needs tick data with bid and ask quotes, exact written rules and costs on every trade.
By Soren Huang · Published · updated · Editorial policy
Contents
- What does cumulative delta tell a futures trader?
- How is volume split into buy volume and sell volume at the bid and ask?
- How do you build the cumulative delta line?
- How do you use cumulative delta divergence with price?
- What data does cumulative delta need?
- What does a momentum stand-in test on ES show, and what does it not show?
- How reliable is cumulative delta, and what should you check before trusting it?
- Frequently asked questions
- References
What does cumulative delta tell a futures trader?
Cumulative delta is the running total of volume traded at the ask minus volume traded at the bid. It shows which side crossed the spread more aggressively, so it records past buying or selling pressure. It is a record, not a forecast: price does not have to follow the line, and testing it needs tick data with bid and ask quotes.
The idea is simple. In a futures order book, buyers who wait place limit orders at the bid, and sellers who wait place limit orders at the ask. A trader who wants to be filled now crosses the spread: a buyer pays the ask, a seller hits the bid. Cumulative delta counts the volume of these impatient trades and keeps the difference. When the line rises, buyers have been more impatient than sellers over the counting period. When it falls, sellers have.
This makes cumulative delta different from most indicators you can put on a chart. Indicators such as RSI or the Hilbert oscillator cycle indicator are built from price alone. Delta is built from the side of each trade, which price bars do not store. It belongs to the family of order flow tools, next to volume profile and market profile; the guide to market profile value area and POC on ES covers that neighbour.
The claim this article defends is that cumulative delta reliably tells you who was aggressive, and nothing more. Aggressive buying can meet a wall of resting sell orders and move price nowhere. Kirilenko, Kyle, Samadi and Tuzun (2017) describe the opposite case in E-mini S&P 500 futures on 6 May 2010: aggressive selling that overwhelmed resting buy orders and moved price a long way. The same delta reading can sit in front of both outcomes. Whether price follows is an empirical question that only a backtest on the right data can answer.
How is volume split into buy volume and sell volume at the bid and ask?
A trade filled at the ask price counts as buy volume and a trade filled at the bid price counts as sell volume, and this sorting needs the bid and ask quote at the moment of each trade. The split is the foundation of the whole indicator, so it is worth knowing where it is exact and where it guesses.
Picture a market stall. Buyers who pay the asking price without haggling are the aggressive buyers. Sellers who accept the first offer are the aggressive sellers. If you stand next to the stall and note every sale, you can count both. If you only read the day's total sales from the ledger, you cannot. The ledger is what a price bar gives you; standing next to the stall is what tick data with quotes gives you.
The sorting rule for one trade is:
- Record the trade price, the trade volume, and the best bid and best ask at that instant.
- If the trade price equals the ask, label it a buy (+ volume).
- If the trade price equals the bid, label it a sell (− volume).
- If the trade price is inside the spread or outside both quotes, apply a fixed rule, for example compare it with the previous trade price (an uptick is a buy, a downtick is a sell) or with the midpoint of the spread.
Step 4 is where errors enter. Some trades land between the quotes when the spread is wider than one tick, and some are reported a moment after the quote changed. These trades are labelled by convention, and some of the labels are wrong. On a liquid contract that trades at a one-tick spread most of the day, the share of unclear trades is small; on a thin contract or in the first seconds after a news release it is larger. Write down which rule your data vendor or your own code uses, because two delta lines built from the same trades with different rules will not match.
How do you build the cumulative delta line?
Compute each bar's delta as ask volume minus bid volume, then add the bar deltas one after another from a chosen starting point, and decide in advance whether the sum resets at the session open or runs without a reset. The one formula to know:
bar delta = volume at the ask − volume at the bid
Here volume at the ask is the sum of contracts in trades labelled as buys during the bar, and volume at the bid is the sum of contracts in trades labelled as sells. Cumulative delta at any bar is the sum of all bar deltas from the start of the count up to that bar.
Hypothetical example
Five one-minute bars have bar deltas of +70, −40, +120, −90 and +30 contracts. The cumulative line reads 70, then 30, then 150, then 60, then 90. The line is at 90 after bar five even though sellers won two of the five bars, because the two biggest bars were buy bars. If the count resets at bar three, the line reads 120, 30, 60 for bars three to five instead. Same trades, different level, same slopes.
The example shows why the starting point matters. With a session reset, the level at any time tells you the net aggression since the open, and the line is comparable from one day to the next. With a continuous sum, the level carries history from days or weeks ago, and the number itself means little; only the direction and the shape of recent swings are useful. Both choices are valid. What is not valid is mixing them, or changing the reset rule after seeing which one made a past signal look better.
Two more choices change the line. The bar size sets how much the line is smoothed: one-minute bars show every burst, daily bars show only the net result. And the trade classification rule from the previous section decides what counts as a buy at all. Fix all three before you look at a chart.
How do you use cumulative delta divergence with price?
Delta divergence is price making a new high or a new low while cumulative delta fails to make the same new extreme, and it becomes a testable rule only when you write exact conditions for "new high", "fails to confirm" and the entry that follows. The common reading is that price rose on less aggressive buying than before, so the move is tiring. The common reading is a hypothesis, not a result.
Confirmation and divergence look like this:
| Situation | Price | Cumulative delta | Common reading |
|---|---|---|---|
| Bullish confirmation | Higher high | Higher high | Buyers still crossing the spread; trend intact |
| Bearish divergence | Higher high | Lower high | New high made with less aggressive buying |
| Bearish confirmation | Lower low | Lower low | Sellers still crossing the spread; trend intact |
| Bullish divergence | Lower low | Higher low | New low made with less aggressive selling |
On a chart, a divergence is easy to see after the fact and hard to define before it. A testable version needs numbers for every word:
- New high: the highest close of the last N bars, with N written down (for example 20).
- Fails to confirm: cumulative delta at that bar is below its own highest value over the same N bars by at least a fixed amount, in contracts or as a percentage.
- Entry: sell at the open of the next bar after the divergence bar closes, not at the high itself, because the high is only known after it.
- Exit: a fixed number of bars, a return to the delta high, or a stop in ticks, chosen before the test.
Each of these settings produces a different number of signals and a different result, which is exactly why the vague version of divergence cannot be tested and the exact version can. A rule drawn by eye on past charts has the same problem as a repainting signal: the test of whether the LuxAlgo indicator repaints and how to test its signals walks through why a signal you cannot write in numbers cannot be graded. The broader question of which technical analysis tools and indicators can actually be tested comes down to the same point.
What data does cumulative delta need?
Only tick data that carries the bid and ask quote with each trade can produce a true cumulative delta; tick data without quotes, one-minute bars and daily bars can only approximate it, so a delta backtest stands or falls on the data you feed it. This is the main practical limit of the indicator, and it is a data limit rather than a logic limit.
| Data type | Can compute true delta | Approximation method | Typical use |
|---|---|---|---|
| Tick data with bid and ask | Yes | None needed; only trades inside the spread use a rule | Live delta charts and the only sound basis for a delta backtest |
| Tick data without quotes | Partly | Trade-side rule: uptick counts as a buy, downtick as a sell | Rough delta; label errors grow when the spread widens |
| 1-minute bars | No | Estimate from where the close sits between the bar's high and low | A volume-weighted momentum proxy, not delta |
| Daily bars | No | Same close-position estimate, far coarser | Not usable for intraday delta; only for momentum stand-ins |
The one-minute and daily estimates deserve a plain word. If you guess the buy share of a bar from where the close sits in the bar's range, you have built an indicator from price. That is not wrong, but it is not delta: it cannot tell you about aggressive buying that met resting sellers and left the close in the middle of the range, which is the one case delta was supposed to reveal. Before buying or recording tick data, read when tick data backtesting is needed for futures for what the files look like and how large they get, and the overview of delta, footprint and other order flow indicators in a backtest for what each one needs.
Two more data checks. Exchange and vendor time stamps must match to the millisecond or better, or trades will be sorted against the wrong quote. And the quote and trade history must cover the same sessions you plan to trade; a delta line built from day-session trades and full-session quotes will be wrong at every open.
What does a momentum stand-in test on ES show, and what does it not show?
Because most historical bar data cannot carry delta, a rule built from standard indicators serves here as a stand-in for the momentum idea behind delta, and the result shows what a cost-included, long-and-short ES daily test looks like, not what cumulative delta would have done. The run tests a stand-in rule, not cumulative delta itself.
The idea behind a rising delta line is that one side is pressing harder than the other. A price-based momentum rule carries a related idea in a form that daily bars can hold. The search tried 1,024 candidates of a High-Low Exhaustion Oscillator rule on ES daily bars from 2019-01-02 to 2025-06-30, long and short, one contract, with the rule as the only entry and exit, no stop, no target and no filter. It kept one candidate for its return against its drawdown. The figures below are that one candidate.
Source: AlphaPrime product engine (CPU), run 2026-10-31. ES daily bars, 2019-01-02 to 2025-06-30, long and short, 1 contract, $20 commission and $25 slippage per trade.
| Number | Result |
|---|---|
| Net profit (closed trades) | $132,237.5 |
| Max drawdown | $51,095 |
| Trades | 200 |
| Win rate | 54% |
| Profit factor | 1.443 |
| Average trade | $661.19 |
| Time in market | 77.84% |
Read the table as one data point, not as a verdict on momentum or on delta. The kept candidate was chosen after the fact from 1,024 tries, and choosing the best of many flatters the one you keep: part of its result is pattern and part is the luck of being the winner in that history. Bailey, Borwein, López de Prado and Zhu (2014) show how quickly the best of many backtests becomes inflated as the number of tries grows. The rule did not "earn" this money in any sense a reader can expect to repeat, and the number of trades, 200 over six and a half years, is modest for a per-trade figure.

What the run does show is what a usable test looks like: both sides traded, one contract, a fixed period, and costs inside the result. In AlphaPrime (Valynox), backtesting charges the commission and slippage you set inside every candidate's evaluation and fills on the next bar, which is why the average trade above is already a net figure rather than a gross one that costs would later shrink. A true delta test would keep every one of these settings and replace only the data and the rule.
How reliable is cumulative delta, and what should you check before trusting it?
Cumulative delta reliably records who crossed the spread, not whether price followed, so the checks before trusting a delta rule are a written rule, bid-ask tick data, costs on every trade and an out-of-sample result read against a rule set in advance. Each check removes one way the indicator can look better than it is.
- Get tick data with bid and ask quotes. Without it you are testing a price proxy, and the section on data above explains why that is a different indicator.
- Fix the classification rule and the reset rule. Write both down. Changing either after seeing a result turns the test into a search.
- Write the entry, exit and divergence conditions in exact numbers. Lookback length, minimum divergence size, entry bar, exit rule. The four-step list in the divergence section is a template.
- Backtest with commission and slippage on every trade. Delta rules often trade intraday and often, so the average trade must be compared with the round-trip cost before anything else.
- Judge the out-of-sample result against a rule written beforehand. Set aside the most recent part of the data, decide what counts as a pass, then run once. The method is laid out in how to split in-sample and out-of-sample data and how much is enough.
A good outcome of these steps is a rule that still shows a positive average trade after costs on data it never saw, with signals spread across many days rather than clustered in one week. A bad outcome is a rule that only works with one classification convention, or whose profit vanishes when slippage is doubled. Both outcomes are useful; the second one saved you from trading a line that only describes the past.
Next step: take the delta chart you already watch, write its reset rule and its classification rule on one line each, and then write the exact numbers for one divergence signal you believe in. If you cannot write all three in numbers today, that is the first thing to fix before any data purchase or any test.
Frequently asked questions
What does cumulative delta mean in futures trading?
Cumulative delta is the running total of volume traded at the ask minus volume traded at the bid. A trade at the ask is counted as an aggressive buy and a trade at the bid as an aggressive sell. A rising line means buyers have been crossing the spread more than sellers over the counting period. It records past pressure and does not by itself forecast the next move.
Is cumulative volume delta the same as cumulative delta?
Yes. Cumulative volume delta, often shortened to CVD, is the same running sum of buy volume minus sell volume. Different charting tools use different names and sometimes different trade classification rules or reset rules, so two lines with the same name can differ. Check the rule behind the line before comparing values.
Does cumulative delta reset every day?
That depends on a setting you choose. With a session reset the line starts at zero at each open and its level shows net aggression since the open. With a continuous sum the level carries history from earlier days and only the direction and recent shape are meaningful. Pick one rule before you look at charts and keep it for the whole test.
Can I calculate cumulative delta from 1-minute bars?
Not a true delta. A one-minute bar stores open, high, low, close and total volume, but not which trades hit the bid or the ask. You can estimate a buy share from where the close sits in the bar's range, but that estimate is built from price and misses the case delta is meant to show, where aggressive buying met resting sellers. True delta needs tick data with bid and ask quotes.
Does the ES test in this article prove that delta divergence works?
No. The run tests a momentum rule built from standard indicators on daily bars, because daily bars cannot carry delta. It is one candidate kept out of 1,024 for its return against its drawdown, and picking the winner after the fact flatters it. It shows what a cost-included, long-and-short test looks like. A delta rule would need bid-ask tick data and its own test.
References
- Bailey, D. H., Borwein, J., López de Prado, M., & Zhu, Q. J. (2014). Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance. Notices of the American Mathematical Society, 61(5), 458–471.
- Kirilenko, A., Kyle, A. S., Samadi, M., & Tuzun, T. (2017). The Flash Crash: High-Frequency Trading in an Electronic Market. The Journal of Finance, 72(3), 967–998.

