Automated backtesting

Running a backtest

Launching a run from the New menu, watching it live, and managing it from the Automated tab.

Automated runs start from the New menu → Automated, which opens the "New backtesting run" dialog. Fill in what to run and where, choose whether to watch it live, and press Start. Every run you launch from the app is saved as an automated session.

The dialog

  • Strategy script. One of your own Strategy scripts. If you don't have one yet, the dialog offers to create one in the Script Editor.
  • Symbol & Interval. The instrument to backtest and the timeframe your script's bars are built on.
  • Date range. Start and end dates, limited to the range the instrument has data for.
  • Start balance. The simulated account's starting balance — defaults to 10,000. Return % and drawdown % in the report are measured against it.
  • Parameters. The script's own inputs, rendered as a form. Values start at the script's defaults; anything you change is recorded with the run.

Attach & stream vs. Run in background

The "When it starts" row picks what happens the moment you press Start — the dialog remembers your last choice:

  • Attach & stream: your workspace follows the run live — progress moves along the timeline and trades appear on the chart as they happen.
  • Run in background: the run computes without touching your workspace. Watch it from the Automated tab whenever you like — "View live" on a running card joins the stream, and nothing is lost by joining late.

While attached, the view is pinned to the run's live edge — the newest moment it has computed. You can leave that pin at any time: jump backward to inspect an earlier trade and the view stops following while the run keeps computing. Jumping forward is clamped to what has been computed so far — you can't scrub ahead of the run. Jump back to the live edge to re-pin and keep following.

The run lifecycle

StateCard showsYou can
QueuedIts position in the queue, e.g. "Queued · #2"Cancel
RunningPercent complete and how far into the date range it has computedView live · Stop (ends as Cancelled)
SavingResults being written — brief
DoneNet P&L, trade count, win rate, and how long the run tookOpen · Re-run with parameters…
FailedThe error messageRetry
CancelledIts stateRe-run
Expired (rare)The run waited too long without being picked upRe-run

Retry, Re-run, and Re-run with parameters… all open the dialog prefilled with the run's parameters, so you see exactly what will run before spending compute time. Clicking a Done card opens its run report; Open loads the result onto the chart as a read-only replay.

In the ⋯ menu: Rename… renames the saved session, and Remove from list clears the card — the result is then no longer reachable in the app.

How many runs compute in parallel depends on your plan; anything beyond that waits in the queue.

No duplicate runs

Identical submissions merge. Starting a run with exactly the same compiled script and settings — instrument, interval, range, balance, and parameters — while that run is already queued or running merges into the run in flight instead of creating a second one: in Attach mode you're taken to it, in background mode it simply doesn't create a duplicate. Once a run has finished, the same configuration starts a fresh run.

Something missing or wrong? Email support@strategytune.com.