Filling long history for backtests: footprint drain or server bars
The automatic backtest panel reads the cache coverage for the chosen contract, granularity and period, then offers two downloads for the missing sessions: the footprint drain (every trade with its aggressor side, rebuilt into bid × ask) or the faster server bars without levels. Coverage is counted in trading sessions at five per seven days.
Senzoukria · Documentation · Updated September 2026
Where to find it
- Where
- Replay → Automatic backtest → coverage card under Period and Granularity
- Periods
- 1 week, 1 month (default), 3 months, 6 months, 1 year, 2 years, 5 years; granularity 1 minute, 5 minutes, 15 minutes (default), 1 hour
- Two buttons
- "Download the footprint history ({dur})" (primary) and "Download the missing history ({dur})" (secondary, server bars)
- Coverage text
- "{n} sessions cached out of {n} requested — {n} are missing. The backtest can run right away on what exists, but the result will only cover that window."
What it does
Changing the contract, granularity or period re-reads the cache (cache_coverage) without any broker call. Requested days are converted to sessions at 5/7, covered nanoseconds become covered sessions, and the difference is the missing count. When nothing at all is cached the card says "Nothing cached for {symbol} at {tf}. Open this contract in the chart at that granularity: the history fills itself, and stays available afterwards."
The footprint drain calls rithmic_history_ensure over windows of 28 days, oldest window last, with the contract tick size. Its estimate is 107 seconds per missing session, shown in the button. Each window reports bars fetched, spans skipped as denied and spans failed; a busy backend skips the window without counting it as failed. This path carries the bid × ask per price and is the one a strategy reading per-level imbalances needs.
The server-bars path calls rithmic_fetch_history_batch with chunks planned at 9,000 bars each (23 hours per session, 5/7 sessions per day), sent 8 windows per batch and 2 batches in flight. It is faster but the bars carry OHLC, volume and delta only: "Server bars carry OHLC, volume and delta, but no footprint levels."
Settings and estimates
| Setting | Default | What it changes |
|---|---|---|
| Period | 1 month (30 days) | Days requested: 7, 30, 90, 180, 365, 730 or 1,825 |
| Granularity | 15 minutes | Timeframe of the cached bars read for the backtest: 1m, 5m, 15m, 1h |
| Footprint drain window | 28 days | Size of each rithmic_history_ensure request |
| Footprint estimate | 107 s per missing session | Duration shown in the primary button |
| Server-bars chunk | 9,000 bars | Size of each history window; estimate 150 s per chunk |
| Truncation flag | < 90 % of requested days | coveredSpan marks the result as truncated when the bars span less than 90 % of the period |
How to use it
- Pick the contract, granularity and period, then read the coverage line before launching: a backtest can run on what exists, but its result only covers that window.
- Prefer the footprint drain when the strategy reads imbalances or per-level volume; accept the hours it announces.
- Use Cancel to stop either download; what already arrived is kept, and running it again fills the rest.
- Watch the status line: "Draining tick by tick — window {done} of {total}, {bars} bars so far" or "Downloading — chunk {done} of {total}, {bars} bars so far".
Verdicts and pitfalls
- denied: the broker answered rp_code 13 ("permission denied"). Historical bars are a broker entitlement, not an app setting; historical ticks may still work and that is what manual replay uses.
- silent: login accepted, nothing sent on every window. Either the archive does not reach that far or the history plant is down; retry when the market is open.
- empty: the broker answered but served no bars for this window; its archive may not go back that far for this contract.
- Tick drain with codes: "The broker returned no ticks and answered: {codes}. Historical tick replay may not be enabled on this account."
- Historical data is served and billed by your broker or data provider according to your account; the app cannot extend an entitlement.
Related pages
This page in other languages
Frequently asked questions
- Why are two downloads offered, and which should I choose?
- They do not carry the same data. The footprint drain rebuilds bid × ask per price from every trade and is required for per-level strategies; server bars are quicker but have no levels. The footprint drain is the primary action for that reason.
- Why does the estimate say hours?
- It is 107 seconds per missing session on purpose; announcing too short a time made users cut downloads that were completing.
- The download finished but the coverage did not change?
- Coverage is re-read after every run. If it did not move, read the message under the buttons: partial chunks, a refusal code or an empty archive explain it.