VALYNOXSTRATEGY RESEARCH TECHNOLOGY
AlphaPrimeAlphaPrime
ACADEMY / Indicators and signals

Order flow indicators: delta, footprint and what a backtest needs

Order flow indicators split traded volume into aggressive buying and selling, by bar and by price. Testing them properly needs tick data that records each trade's side, because OHLC bars throw that information away.

By · Published · updated · Editorial policy

Contents
  1. What does delta measure in order flow trading?
  2. What does a footprint chart show?
  3. What does volume profile show?
  4. What order flow tools do NinjaTrader and ATAS offer?
  5. What data does an order flow backtest need?
  6. Why can't a bar-based backtest reproduce order flow signals?
  7. How do you backtest an order flow signal properly?
  8. Do order flow indicators predict direction?
  9. Frequently asked questions
  10. References

Order flow indicators in platforms such as NinjaTrader and ATAS split traded volume into aggressive buying and selling. Delta is the difference between the two, and a footprint shows that split at each price inside a bar. Testing delta or footprints needs tick data that records each trade's side, because OHLC bars do not keep it.

What does delta measure in order flow trading?

Delta measures which side was in a hurry, not which side was right. Every trade has a buyer and a seller. One of them was usually waiting with a limit order, and the other crossed the spread with a market order. Order flow trading is the practice of reading those aggressive orders as they print, instead of reading only the price that resulted. Order flow data is harder to get than price, which is why many traders begin with RSI, built from price alone.

Order flow is the stream of individual trades and orders that builds each bar, including the price, size and side of every trade. A trade "at the ask" means an aggressive buyer lifted a resting sell order. A trade "at the bid" means an aggressive seller hit a resting buy order.

Delta is the volume traded at the ask minus the volume traded at the bid, over one bar or another period. A delta volume indicator plots that number for each bar. Cumulative delta is a running total of bar deltas, usually reset at the start of each session. For example, a bar with more contracts bought at the ask than sold at the bid has a positive delta; the hypothetical footprint below works through one such bar.

Platforms label each trade as a buy or a sell in one of two ways. Some exchange feeds mark the aggressor side of each trade, and the platform uses that flag. Otherwise the platform compares the trade price with the best bid and ask at that moment. The two methods can give different labels for the same trade, so two platforms can show slightly different delta for the same bar.

What does a footprint chart show?

A footprint chart shows the inside of a bar: how much traded at each price, and on which side. Think of an ordinary candle as a receipt that lists only the total. The footprint is the itemised receipt.

A footprint chart is a bar chart in which every price level inside the bar shows its own volume, usually split into volume at the bid and volume at the ask. Many footprint chart indicators also show the delta per price level and highlight imbalances. An imbalance is a price level where aggressive volume on one side is much larger than on the other. Many platforms measure it diagonally: they compare the ask volume at one price with the bid volume one tick below, against a ratio the user sets.

Hypothetical example

One 5-minute bar on a contract that moves in steps of 0.25 points. The footprint records volume at each price:

PriceSold at bidBought at askDelta
101.00125−7
100.753045+15
100.506090+30
100.258070−10
100.002510−15
Bar total207220+13

An ordinary bar file stores only open 100.25, high 101.00, low 100.00, close 100.50 and volume 427. A second bar could have the same five numbers with 290 sold at the bid and 137 bought at the ask. That bar has a delta of −153. Nothing in the bar record tells the two bars apart.

The same hypothetical bar as a candle and as a footprint: the candle keeps only high 101.00, close 100.50, open 100.25, low 100.00 and volume 427, while the footprint keeps the bid and ask volume at every price and a bar delta of +13 The candle hides who traded Hypothetical bar: candle vs footprint H 101.00 C 100.50 O 100.25 L 100.00 Volume 427 Bid Ask 101.00 100.75 100.50 100.25 100.00 125 3045 6090 8070 2510 Bar delta +13 Only the footprint keeps the split. So: test order flow on tick data.
The same hypothetical bar as a candle and as a footprint. The candle keeps the price range and total volume. The footprint also keeps who traded aggressively at each price.

What does volume profile show?

Volume profile shows where trading happened, not who started it. It is a sideways histogram of volume at each price over a chosen period, such as one session or one week. The volume profile indicator page covers how it is built. Two terms matter for testing. The point of control is the price with the most volume. The value area is the price range that holds a set share of the volume, commonly about 70%.

Volume profile sits halfway between bar data and true order flow. You can approximate it from fine bars by spreading each bar's volume over its range. That approximation is close enough for many rule tests. An exact profile, or a profile split into bid and ask volume, needs tick data.

What order flow tools do NinjaTrader and ATAS offer?

Both platforms build the same three core displays from tick data and add their own trade and order book views. The names differ more than the ideas.

DisplayNinjaTrader 8 nameATAS name
FootprintOrder Flow Volumetric BarsCluster chart
Delta over timeOrder Flow Cumulative DeltaCumulative delta indicator
Volume by priceOrder Flow Volume ProfileVolume profile indicators
Resting ordersOrder Flow Market Depth MapOrder book (DOM) views

NinjaTrader also offers an order flow VWAP and a trade detector that marks large trades. ATAS adds a tape of individual trades and filters for large trades. The order book views show resting limit orders, which have not traded yet. That is a different kind of data from delta and footprints, which describe trades that already happened.

For order flow in NinjaTrader on historical charts, the platform needs historical tick data from your data provider. Its Tick Replay setting rebuilds each historical bar trade by trade, so indicators that depend on the bid/ask split can be calculated on past bars and used in strategy tests.

What data does an order flow backtest need?

An order flow backtest needs data at least as detailed as the signal. In practice, that means tick data with the side of every trade. Tick data is a record of every trade, with its time, price and size. Some tick data also carries the best bid and ask at that moment, or an aggressor flag. Without one of those, a trade cannot be labelled as a buy or a sell.

Data you haveWhat it can rebuildWhat it cannot rebuild
OHLCV bars (open, high, low, close, volume)Price-based indicators, bar volume, an approximate volume profileDelta, footprints, imbalances
Tick data: price and size onlyExact volume at each priceTrue delta (only an estimate from whether each trade ticked up or down)
Tick data with bid/ask or an aggressor flagDelta, cumulative delta, footprints, imbalancesResting orders that never traded
Recorded order book depthDepth maps and signals based on resting orders—
A four-level ladder of data detail: OHLCV bars rebuild only an approximate volume profile, ticks without side give exact volume at price, ticks with side give delta and footprints, and recorded order book depth gives a depth map Each tool needs enough data Least detail at the bottom Order book depth Ticks with side Ticks, no side OHLCV bars Depth map Delta, footprint Exact volume Approx. profile Delta needs ticks with side. So: check your data level first.
Each order flow display needs a minimum level of data detail. Delta and footprints start at tick data that records the side of each trade.

Tick data brings its own quality checks. Some feeds report one large aggressive order as several separate prints, because it filled against several resting orders. Other feeds group those fills into one trade. Trade counts and "large trade" filters therefore change with the data source. Timestamps, session boundaries and contract rolls matter even more than with bars. The guide to backtest data quality: gaps, bad ticks, time zones and rolls lists what to check.

Why can't a bar-based backtest reproduce order flow signals?

A bar-based backtest cannot reproduce order flow signals because the information was deleted when the bar was made. Turning trades into a bar is like boiling a soup down to a stock cube. You keep the weight and the flavour, but you cannot pull the original vegetables back out.

An OHLCV bar keeps five numbers. It drops the side of every trade, the volume at each price and the order in which trades happened inside the bar. The worked example above shows two bars with identical OHLCV and opposite delta. Any rule that says "enter when delta is above X" or "enter after three stacked ask imbalances" needs exactly the information the bar removed.

Estimates do not close the gap. A common shortcut labels a trade as a buy if it printed higher than the previous trade, and as a sell if it printed lower. That shortcut needs tick data, and it still misclassifies many trades. Applied to bars instead of ticks, the guess gets rougher still. A strategy tested on estimated delta is a test of the estimate, not of the indicator you watch live.

How do you backtest an order flow signal properly?

You backtest an order flow signal properly by rebuilding it exactly as you see it live, from tick data, and by filling orders as the market would have filled them. Go through the steps below in order:

  1. Write the signal as a rule with numbers. "Strong buying" is not testable. "Bar delta above +200 and the close in the top quarter of the bar" is testable.
  2. Get tick data with bid/ask or aggressor information for the whole test period, from the same source you will use live if possible.
  3. Use the same settings as your live chart: the same bar type, the same tick grouping per footprint row, the same session reset for cumulative delta and the same imbalance ratio.
  4. Act only on information that existed. A footprint bar is final only when the bar closes. A signal read from the finished bar can trade from the next trade after the close, not at the bar's own close. The article on look-ahead bias in backtests shows how to check this.
  5. Model fills honestly. Order flow traders often use limit orders at a level. Count a limit order as filled only when price trades through it, not when price merely touches it. Your order waits in a queue behind other orders at that price.
  6. Include commission and slippage on every trade. Order flow strategies tend to trade often and aim for small moves per trade, so costs take a large share of the result.
  7. Fix your thresholds before you look at later data, then test on a period the rule has not seen.

Step 7 matters because order flow rules have many dials: delta thresholds, imbalance ratios, how many stacked levels to require, how large a "large trade" is. Each dial you tune is one more chance to fit noise. If you try many settings and keep the best one, the winning result is likely to be inflated (Harvey & Liu, 2015; White, 2000). For the price-bar side of such a rule, the strategy validation in AlphaPrime (Valynox) runs walk-forward analysis against your own thresholds, so tuned dials are judged on windows they never saw.

Do order flow indicators predict direction?

No. Order flow indicators describe trades that already happened, and they do not tell you where price goes next. Positive delta says aggressive buyers traded more than aggressive sellers. It does not say the buyers will win. Large passive sellers can absorb all that buying with limit orders, and price can still fall.

Hypothetical absorption over six bars: price falls from 100 to 98 while cumulative delta rises from 0 to +400, so positive delta and falling price happen together Buying rose, price fell Six hypothetical bars Price 100 → 98 Cum. delta 0 → +400 Delta shows trades, not direction. So: test the reading after costs.
Hypothetical absorption: cumulative delta rises while price falls. The same reading can come before a bounce or before a further drop.

This is why the same pattern gets opposite readings. Traders call rising delta with flat price "absorption" when price later drops, and "accumulation" when price later rises. Only a rule tested on enough history tells you which reading held more often, and by how much after costs.

When true order flow data is not available for a long history, many traders split the work in two. First they research bar-based rules on long histories, using price, bar volume and approximations such as a bar-built volume profile. Then they use footprint reading as discretionary context, or they test an order flow filter separately on the shorter tick history. AlphaPrime supports the first part. Its strategy generation turns research ideas into testable rules with parameter ranges and entry and exit conditions, evaluated on your own historical bar data. Finished strategies can be exported as source code to NinjaTrader (NinjaScript) and the other platforms on the supported platform export list. There, an order flow filter can be added and tested on tick data.

What this means if you use AlphaPrime: use it for the rules your bar data can express, where AlphaPrime's backtesting evaluates each candidate with fees, slippage, next-bar execution and trading sessions. Test any delta or footprint condition on tick data in the platform where you trade it.

Frequently asked questions

What is the difference between delta and cumulative delta?

Delta is the volume bought at the ask minus the volume sold at the bid within one bar. Cumulative delta adds those bar values together over time, usually starting from zero at each session open. Delta shows the balance inside one bar, and cumulative delta shows the running balance across the session.

Can you backtest a footprint chart indicator in NinjaTrader?

Yes, if historical tick data is available from your data provider. NinjaTrader's Tick Replay setting rebuilds historical bars trade by trade, so footprint-based values can be calculated on past data. Without tick data, the platform has no bid/ask split to rebuild the footprint from.

Is volume profile an order flow indicator?

Volume profile is often grouped with order flow tools, but it shows how much traded at each price, not which side was aggressive. It can be approximated from fine bar data, while delta and footprints cannot. A volume profile split into bid and ask volume needs tick data.

Does a high positive delta mean price will go up?

No. Positive delta only means aggressive buyers traded more contracts than aggressive sellers in that period. Passive sellers with limit orders can absorb that buying, and price can fall anyway. Any directional meaning has to be tested on history, after costs.

What data do I need for order flow trading backtests?

You need tick data that records every trade's price and size, plus either the best bid and ask at that moment or an aggressor flag from the exchange feed. Signals based on resting orders also need recorded order book depth. OHLCV bars are not enough for delta, footprint or imbalance rules.

References

  • Harvey, C. R., & Liu, Y. (2015). Backtesting. The Journal of Portfolio Management, 42(1), 13–28.
  • White, H. (2000). A Reality Check for Data Snooping. Econometrica, 68(5), 1097–1126.