Skip to content

Running backtests and interpreting results

Use this guide whenever you want to evaluate a strategy revision on historical data before (or alongside) live trading.

By the end, you will be able to:

  • Configure and submit a backtest job.
  • Track backtest status.
  • Access and interpret results and statistics.
  • Use insights to create new revisions.
  • A backtest is a historical simulation of a specific strategy revision over a chosen time window.
  • Each backtest is:
    • Tied to a strategy and a revision version.
    • Uniquely identified by a hash of (strategy, revision, arguments) so identical runs are deduplicated.
  • You have at least one strategy with one or more revisions.

You do not need live trading accounts to run a backtest, because simulations operate on historical market data.

  1. Navigate to the Backtests section or a dedicated backtesting entry point.
  2. Click New backtest.
  3. Select:
    • The strategy you want to test.
    • The revision of that strategy to backtest.

Remember: each revision is immutable, so re‑running a backtest on the same revision and inputs will always simulate the same logic.

You will typically be asked to provide:

  • Time range:
    • A start date/time.
    • An end date/time.
    • Internally, these may be converted to high‑precision timestamps, but you select them as normal dates.
  • Markets or instruments:
    • Which assets or instruments the backtest should consider (for example, SOL‑PERP on Drift).
    • In many cases this is driven by your strategy revision’s settings.
  • Execution model (if exposed):
    • Latency assumptions or execution delay.
    • Slippage or fee models.
  • Initial conditions (if exposed):
    • Starting balances or positions.
    • Risk limits or margin settings.

The app may offer preset configurations (for example, “typical live‑like execution”) that translate into detailed arguments under the hood.

Before submitting, Structure may show:

  • The selected revision.
  • The requested time window.
  • Any relevant execution assumptions or market selections.

Review and confirm:

  1. Double‑check that the revision is correct (for example, v3 vs v2).
  2. Confirm the time window and, if relevant, markets or instruments.
  3. Click Run backtest.

This creates a backtest job with:

  • A unique ID (for referencing and monitoring).
  • Initial status set to pending.

From the Backtests list you will see, for each job:

  • Strategy and revision.
  • Time range.
  • Current status:
    • pending – queued and waiting to start.
    • running – actively simulating.
    • completed – finished successfully; results are ready.
    • failed – something went wrong; see error details.
  • When it was created and last updated.

You can:

  • Click into a backtest to see more detail.
  • Refresh or wait for the UI to update as the job progresses.

A backtest may fail for reasons such as:

  • Invalid or inconsistent arguments (for example, time range outside available data).
  • Insufficient historical data for the requested markets or timeframe.
  • Exceeding internal resource or time limits.
  • Transient infrastructure or data issues.

When a backtest is failed, open its detail page to see:

  • A short error message.
  • Any structured details the system provides.

Typical next steps:

  • Adjust the time window to one known to have data.
  • Simplify the configuration (for example, fewer markets) and retry.
  • If the error persists and appears internal, contact support with the backtest ID.

When a backtest reaches completed:

  1. Open the backtest detail page.
  2. You will typically find:
    • A Result download:
      • A file containing time‑series data for the simulation (for example, positions, P&L, trades).
    • A Statistics download:
      • Pre‑computed summary metrics, such as:
        • Total and annualized return.
        • Volatility.
        • Maximum drawdown.
        • Sharpe‑like ratios.
        • Win/loss rates and trade counts.

The UI may also present a visual summary, such as:

  • An equity curve over time.
  • Drawdown charts.
  • Per‑instrument breakdowns.

Under the hood, both the result and statistics files are stored in durable object storage and securely streamed to you; you do not need to manage those locations directly.

Use the backtest outputs to answer questions like:

  • “Does this strategy behave as expected in different market regimes?”
  • “Are drawdowns acceptable for my risk tolerance?”
  • “How sensitive is performance to parameter changes?”

Typical workflows:

  • Compare multiple revisions:
    • Run the same time window on revisions v1, v2, and v3.
    • Compare statistics side‑by‑side.
    • Promote the strongest revision to live trading.
  • Stress‑test across time periods:
    • Backtest across calm, volatile, and crisis periods.
    • Look for failure modes or instability.
  • Calibrate position sizing and risk:
    • Use drawdown and volatility metrics to set leverage and notional size.

When you decide on changes:

  1. Return to the Strategies section.
  2. Create a new revision incorporating what you learned.
  3. Optionally backtest again.
  4. When confident, start the revised strategy in live trading.
  • If you haven’t yet connected accounts and run live, see Creating and running strategies and Connecting trading accounts.
  • To understand how backtests fit into the broader mental model, read the Backtests concept page.