Docs menu

Backtester (single symbol)

A single-symbol backtest replays one strategy over one coin, or over a list of coins, and gives you a result you can read, compare and export. A multi-coin portfolio run has its own form.

The form, in three steps

The form follows the order of the decision, with nothing to scroll past that you do not need yet.

  • 1 Strategy and coins. The strategy, the build it runs, the coin list or the daily selector, and the strategy parameters. Positions at once and coins picked each day sit here too, and both disappear when you pick a fixed list, because a list trades every coin in it every day.
  • 2 Period. From and to, the trading timeframe, the fill data, and the warm-up. The out-of-sample cutoff is written out in words under the dates.
  • 3 Money. The starting balance. Fixed dollars and percentage-of-balance sizing both read it, see Position sizing.

A folded Advanced section holds the market-volatility filter, portfolio risk, a timeframe per coin and the engine and execution card. Its summary line says what is set in there, so a folded panel can never hide a changed setting.

Fill data

Raw ticks, 1-second bars or 1-minute bars, chosen independently of the trading timeframe. A guard rejects a combination that cannot work.

The resolution changes what a fill can be simulated against, so the same settings can produce a different trade list on ticks and on 1-minute bars. That difference is real: see Fills and slippage and Limit fills and queue lots. At 1-minute resolution a latency setting defers a market order to the next minute whatever its value, so use latency 0 for minute-bar work and study latency on ticks or 1-second data.

Before it starts

The form says which coins have data for the whole window, naming the ones that do not and the day each one starts: 4 of 6 coins have data for the whole window. That check runs by itself for a list of up to 60 coins, and the daily selector and bigger lists have a Check data for this window button.

A tick run whose window is not fully covered offers three answers instead of a warning: download the missing days, run anyway with the gaps, or cancel. Running with gaps is a real choice, and the days without ticks replay with no trades.

While it runs

The run reports progress as coin-days: how many of the total are done, the trades so far and the time elapsed. A coin that is skipped says why, whether the day had no bars or the coin has no data for it.

The progress bar stops at 70% while the replay finishes. The remaining part is the engine closing out the window and building the result, and 100% arrives with the result itself, not before.

Speed is worth having because it changes how you work: a few months of 1-second data replays in about ten seconds, so a test you would otherwise put off is a wait you can sit through.

What it keeps

  • The result is saved with its engine log, so a per-coin warm-up line or a skip is still readable days later through the run's own log panel.
  • A run that failed keeps its log too, because that log explains the failure.
  • A cancelled run is not saved, and its live log stays readable while the run is still there.
  • The trades download as a CSV that carries the fee of each trade, see Costs and fees.

Every run records the strategy build it used, so two results that differ can be traced to the code behind them, see Builds and versions.

Where the run lands

A finished run opens on its result page, and the dashboard lists it with the others, see Dashboard. A study over many settings runs from Optimiser instead of starting the form again each time.