Data and timeframes
A run reads bars that were built from real trades in a local store on your machine. This page covers what that store holds, which resolutions and timeframes you can choose, and what the engine does when the data has a gap.
What the store holds
- Trade prints for the tick resolution, and 1-second and 1-minute bars compiled from them.
- A Kraken 1-minute store used as a screening source for universes and selection, shown next to the Bybit rows with its own Source column so a coin that exists in both never looks like one dataset.
The Data page leads with a card listing what you have: each store with its coins, datasets, bars and the days it covers. Downloads are incremental, so fetching a range you partly hold only fills the days you are missing, and a cancelled download keeps the days it finished.
Resolutions
A backtest chooses tick, 1-second or 1-minute data. Finer data changes what a fill can be simulated against, so the same strategy on ticks can produce a different trade list than on 1-second bars, and that difference is real rather than noise. See Fills and slippage and Limit fills and queue lots for what each resolution can and cannot show.
Paper and live trading do not offer a resolution: the tape is the venue's live feed, so the resolution is not a knob you can set to something the exchange would not send.
Timeframes
The trading timeframe is the one your strategy evaluates: 1s, 1m, 15m and so on. Alongside it, every strategy gets a daily series, and the daily bar completion drives the daily callback with civil-day buckets in the run's timezone, so a day boundary is a day and not 24 arbitrary hours.
A strategy can also declare up to three extra timeframes in its own code, with AddTimeframe("15m"), and read indicators from them. A read never sees a value that had not closed yet.
Warm-up
Indicators need history before the first bar you trade, so a run has a warm-up window ahead of its start. Too little warm-up shows up as a strategy that is quiet for its first hours, and a result that reports a warm-up problem says so instead of leaving it to be guessed.
Gaps and late trades
- A minute with no trades is not a bar. The engine never fabricates a silent bar, so an illiquid stretch is a gap in the data rather than a flat bar with no volume.
- A late trade is never dropped. A print that arrives after its minute has closed is written into that minute's stored bar, so the bar ends up whole.
- A repair can restart an instance. If the instance already acted on that bar, it restarts once to warm its indicators from the repaired candles, and the log shows a line for each repair.
- Missing coverage is named. Before a run, the form says which coins have data for the whole window, and a portfolio reports a coin that stops mid-window rather than replaying its warm-up bars as if the days were traded.
Checking the store
The Data page carries an integrity check that reads the store back and reports what it finds, and datasets can be deleted from it with their whole artifact set. Running the check before a serious research pass is cheap, and it turns "the backtest looks odd" into a coverage fact you can point at.