Tick replay (bar test vs tick replay vs book replay)

Tick replay is a backtest or replay mode that feeds a strategy every historical trade in sequence, with its price, size and aggressor side, instead of pre-built bars. It sits between a bar-based test, which sees only OHLC and volume, and a book replay, which also reconstructs the order book at each moment.

Senzoukria · Glossary · Updated September 2026


Three levels of historical detail

The choice is dictated by the rule, not by preference. A strategy that reads per-level imbalances needs the ticks because the bid and ask volume at each price are rebuilt from them. A strategy that reads the DOM needs book history that most feeds do not archive. A rule on bar closes is served by bars, and running it on ticks only slows the test.

What each backtest mode can observe
ModeInput dataCan evaluateCannot evaluate
Bar testOHLC, volume, sometimes delta per barRules on closes, bar volume, bar deltaPer-level bid × ask, intra-bar order, exact excursions
Tick replayEvery trade with price, size, aggressor sideFootprint rules, imbalances, intra-bar MAE/MFE, time and salesResting liquidity, queue position, iceberg detection
Book replayTrades plus order book snapshots or MBO eventsDepth rules, liquidity pulls, queue-aware fillsNothing in the data, but the data is rarely complete

What tick replay changes in the result

  • Fills happen at a trade price that existed, rather than at a bar close that may never have been offered.
  • Excursions inside the trade are known, so MAE and MFE are exact rather than bounded by bar highs and lows.
  • Signals fire when the condition first became true inside the bar, not at the bar's end.
  • Gaps in the tick archive are visible as gaps; a bar feed silently smooths them.

In Senzoukria

The desktop backtest panel offers a "Granularity" setting and two history paths from the connected broker: "Download the missing history" fetches server bars, and "Download the footprint history" drains ticks window by window. The tick path is described in the panel as every trade with its aggressor side, rebuilt into bid × ask per price, the input that a strategy reading per-level imbalances needs. When server bars arrive with OHLC, volume and delta but no footprint levels, the panel says that such a strategy still needs the tick drain. If the broker returns no ticks, the message states that historical tick replay may not be enabled on that account, an entitlement question rather than a software setting.

The "Replay" screen plays a recorded CME session tick by tick, at the user's speed, on the same chart with the same indicators. Historical strategy backtests run TypeScript and Python strategies; C++ scripting uses a separate WebAssembly runtime and does not provide historical backtesting.

Common mistakes

  • Running a footprint rule on bars and reading the result as a test of the rule.
  • Assuming a tick fill at the next trade price includes queue priority; it does not.
  • Treating an empty tick window as a quiet market rather than a missing archive.
  • Expecting book replay from a feed that only archives trades.

This page in other languages

Frequently asked questions

Is tick replay the same as a tick chart?
No. A tick chart is a bar type where each bar closes after a fixed number of trades. Tick replay is a mode of feeding historical trades one by one to a chart or a strategy. A tick replay can build any bar type, including time, volume, range or tick bars.
Why can a broker refuse historical ticks?
Historical tick and bar data are separate entitlements on the account, set by the broker or the data provider and billed by them. Senzoukria's panel reports the broker's answer verbatim when a request is refused or comes back empty, so the user can tell an entitlement problem from an archive that does not reach far enough back.
Does book replay give a realistic fill?
It gives a better bound than a tick fill because the order can be walked against the historical depth, but it still assumes the strategy's order would not have changed the book and that the archive is complete. Both assumptions weaken as size grows.

Keep reading