Replay is where configuration meets evidence. A replay session that advances cleanly through a stored tick range lets you test a chart arrangement against a known sequence. A replay session that jumps, stalls, or resets teaches the wrong lessons. This chapter covers the data conditions that make replay trustworthy and the settings that keep it aligned with live behavior.
The Local Data Store
Historical trades and depth snapshots are kept in a local store, indexed by instrument and session. The store is append-only during normal operation; replay reads from it through a virtual clock. Two properties matter for configuration: the store's granularity and its completeness. Granularity determines the smallest interval replay can resolve, while completeness determines whether a range can be replayed without gaps.
Storage grows with the number of instruments and the depth of history retained. A modest retention window is easier to verify than a large one, and verification is the point. Keep enough history for the studies you actually run, and prune the rest on a schedule. An unpruned store eventually becomes slow to index, which shows up first as a delay when opening a chart.
Tick Replay Versus Bar Replay
Tick replay advances trade by trade and reproduces the sequence inside each bar. Bar replay advances completed bars and reconstructs the footprint from stored aggregates. Tick replay is more faithful and more expensive; bar replay is faster and loses intrabar order. For testing a footprint configuration, tick replay is the correct choice. For reviewing a session's shape, bar replay is usually sufficient.
The transport exposes speed as a multiplier. A high multiplier reduces wall-clock time but can starve the renderer, producing a display that lags the virtual clock. If the chart appears to skip rows at high speed, lower the multiplier before concluding that data is missing. The transport is not dropping trades; the display is not keeping up.
Sessions, Time Zones, and the Replay Clock
Session templates define which trades belong to a replay range. A template set to a regular session will exclude overnight trades even if they are present in the store. This is correct behavior and a frequent source of confusion when a replayed session looks shorter than expected. Check the template before checking the data.
Time zones affect labels, not storage. The store records timestamps in a canonical zone, and panels render them in the zone selected for the workspace. Changing the display zone relabels the axis without moving any trade. If two panels show different clock labels for the same bar, their display zones differ; the underlying data is identical.
A replay range is only as good as its worst gap. Scan for gaps before a long replay, and mark the affected sessions so later analysis does not treat a discontinuity as market behavior.
Feed Configuration and Fallbacks
A live feed and a historical source can disagree about a session's opening trades. The usual reasons are different aggregation windows, different venue coverage, and different correction policies. When a chart built from one source is compared with a chart built from another, expect small differences at the boundaries and larger differences after a halt. Neither source is lying; they are answering slightly different questions.
Configure one source as primary and one as a fallback, and record which is in use in the workspace. Automatic fallback is convenient but can silently change the character of a series mid-session. A visible indicator is worth more than a seamless switch.
Replay Workflow
- Select the instrument and confirm the tick size.
- Choose the session template and the display time zone.
- Set the replay range and scan for gaps.
- Open the panels that will be used, and confirm they follow the replay clock.
- Start at a low multiplier, then increase once the display is stable.
- Pause at the point of interest and inspect rows, not just the bar shape.
When Replay Disagrees with the Live Chart
Small differences are normal; structural differences are not. If replay shows a bar with a completely different row distribution, check whether the live chart was built with a different bar type or a different tick multiplier. If replay shows missing bars, check the session template and the store's coverage. If replay shows correct bars but a flat cumulative series, check whether the module is subscribed to the replay clock.
Keep a short log of replay anomalies with the instrument, date, and setting values. Patterns emerge quickly: a particular session template, a particular feed, or a particular multiplier. Without the log, each anomaly is investigated from scratch; with it, the third occurrence is diagnosed in seconds.