A bar closes green. The cumulative delta line underneath it closes lower than it opened. Somebody will tell you this proves the rally is fake and sellers are in control. Sometimes that is exactly right. Often it is an artifact of the data. Occasionally it means the opposite of what it looks like.
Delta is one of the few genuinely useful things you can pull off the tape, and one of the most over-interpreted numbers in retail trading. Here is what it measures, what the running total adds, and the four places where the read quietly stops working.
Every futures trade has a buyer and a seller, so "more buyers than sellers" is never a real description of anything that happened in a market. What differs between the two sides is not the count. It is who was in a hurry.
A resting limit order sits at a price and waits to be filled. A market order crosses the spread and takes whatever is there. Delta counts that difference: contracts that traded at the ask (someone paid up to get in, an aggressive buy) minus contracts that traded at the bid (someone hit the bid to get out, an aggressive sell). Positive delta over a bar means the aggressive buyers moved more size than the aggressive sellers.
That is the whole definition, and it is narrower than most people assume. Delta measures aggression, not demand, and it says nothing about who took the other side. The mechanics of the spread and what crossing it costs you are in bid, ask and the tape.
Delta tells you which side crossed the spread, not which side won. A market can absorb enormous aggressive buying and go down anyway, and while that happens, delta prints positive the entire way.
Trades do not arrive with a label saying who initiated them. The side is inferred: a print at the ask is counted as buyer-initiated, a print at the bid as seller-initiated. That inference is the standard approach in market microstructure and it is right most of the time, but it is still an inference, and it degrades in exactly the conditions you care about most: fast markets, prices sweeping several levels, trades printing inside a moving spread.
This is why the same instrument on the same day can show slightly different delta on two platforms. Nobody is faking anything: the feed and the classification rules differ, and small differences accumulate over thousands of prints. Treat delta as a texture, not as a precise quantity.
Cumulative delta is the sum of bar delta from a chosen starting point, usually the session open. Plotted as its own candles or as a line under price, it turns a series of one-bar readings into a picture of who has been leaning on the market all session.
The value is comparative. Alone, a cumulative delta chart is close to meaningless. Set against price, it answers one question: are the people paying up getting anywhere? When the two rise together, the aggressive side is being rewarded. When they separate, something is absorbing the pressure.
The classic setup is a price high that cumulative delta does not confirm. Price makes a new session high; cumulative delta makes a lower one. The plain reading is that buyers kept paying the ask and stopped getting new prices for it, which is what absorption looks like from the tape side. That pattern, and its mirror at lows, is covered in absorption and exhaustion.
What a divergence is not is a signal. It describes the last few minutes, and a large resting seller who absorbs a push may simply finish the order and step away, at which point the market goes right on up. Read as context, divergences are informative. Traded blindly, they are a coin flip with a story attached.
| What the chart shows | The common reading | What else it could be |
|---|---|---|
| Price up, cumulative delta up | Aggressive buyers are being rewarded | An ordinary trend, which the chart already told you |
| Price up, cumulative delta flat | The move is being sold into | Buyers working passively with limit orders instead of paying up |
| Price flat, cumulative delta strongly up | A large resting seller is absorbing | Hedging or spread flow with no directional opinion at all |
| Price down, cumulative delta up | Aggressive buyers are being run over | Classification noise in a fast, wide market |
The Algomyth engine takes one trade a day, at 9:30 AM ET, with the stop and the target placed in the market at the same instant as the entry. The logic and the conditions are set out in full.
Four limits, and every one of them is common enough to matter.
No tick data, no delta. Real delta needs every trade with its bid and ask context. Bar-level "up volume and down volume" derived from closing direction is an approximation, not the same measurement. In NinjaTrader 8, accurate delta on historical bars requires Tick Replay and enough tick history stored locally, which is why two traders can open the same chart and see different numbers. The platform side is in NinjaTrader 8 explained.
Non-directional flow counts too. Hedges, calendar spreads and index arbitrage all print on the tape and all get classified as aggression. None of them expresses an opinion about where price is going. On a quiet morning that flow can dominate the delta reading entirely.
Rollover splits the volume. During the days around a contract roll, activity moves from the front month to the next one, and a cumulative delta chart on the expiring contract becomes progressively less representative. The mechanics are in contract rollover explained.
It is always a record of what already happened. Delta is not a forecast, and it never leads. The most it can do is tell you whether the last push was paid for by aggression that got results.
Delta answers who was in a hurry. It never answers who was right.
As context rather than as a trigger, delta earns its space. Around a scheduled release, when the tape goes from twenty contracts a minute to two thousand, it separates a real repricing from a spike nobody followed. On a breakout, it distinguishes a level that gave way under sustained aggression from one that slipped through on almost nothing.
What it does not do is replace the rest of the read. Delta is one input alongside price structure, volume distribution and the level being tested, which is the argument in order flow versus indicators and in the introduction at order flow trading explained. Where price traded most, and where it barely traded, comes from volume profile.
An automated strategy cannot interpret a divergence the way an experienced discretionary trader can, and should not pretend to. What it can do is encode measurable conditions, check them at one moment, and act or stand down.
There is also a practical argument for restraint. Any condition that depends on tick-accurate historical data makes a strategy harder to backtest honestly and more fragile when a feed hiccups: a rule that needs perfect tick reconstruction will behave differently in the test than it does live. The Algomyth engine takes one trade a day in the 9:30 AM ET window, sizes the target at three times the risk, and closes out before the session ends, and its conditions are chosen partly because they survive imperfect data. The reasoning behind that window is in the 9:30 AM ET window.
No. Volume counts every contract traded regardless of who initiated it. Delta splits that same volume by which side crossed the spread, then subtracts one from the other, so it is a directional net rather than a total. A bar can have very high volume and delta near zero, which simply means aggressive buyers and aggressive sellers were roughly matched. The two are read together, not interchangeably.
For anything accurate, yes. Delta is built from individual trades classified against the bid and ask at the moment they printed, so a data feed that only stores bar summaries cannot reconstruct it faithfully. In NinjaTrader 8 that means enabling Tick Replay and holding enough downloaded tick history for the period you want to study. Without it you are looking at an approximation that can disagree with the real number at exactly the moments that matter.
It means aggressive orders on one side stopped producing new prices. That is consistent with absorption, where a large passive participant is filling those aggressive orders without giving ground, and it is also consistent with several dull explanations including thin conditions and trade classification noise. Treat a divergence as a reason to look closer at the level being tested, not as an entry.
It can be coded to, but it inherits every weakness above at once: an inferred classification, a dependence on tick-accurate data, and no way to tell directional aggression from hedging flow. A strategy built only on delta tends to test beautifully and behave differently live, because the live data is never as clean as the reconstruction. Used as one condition among several, with a stop and a target defined before entry, it is far more defensible.
Everything we write comes back to one idea: verify, then decide. The live terminal exists for exactly that.
Unlock Algomyth Live