Backtesting a Strategy
Backtesting lets you run your strategy against historical market data before you deploy it to a live exchange. The results appear as a node on the canvas so you can see how your automated trading strategy would have performed historically.
How it works
When you run a backtest, the Strategy Builder:
- Takes the current strategy graph from the canvas
- Fetches historical price and indicator data for the time range
- Replays the strategy through that data, simulating fills at historical prices
- Shows the results in a Backtest Result node
The backtest replays your strategy logic against historical data to approximate how the strategy would have behaved under past market conditions. It is useful for validating logic and comparing setups, but it does not fully reproduce live execution conditions. See the Limitations section below for what backtests cannot account for.
A backtest is a rehearsal on yesterday’s market, not a forecast of tomorrow’s. It is a tool for understanding how your logic would have behaved under past conditions, never a guarantee of future results. A strong backtest is a reason to test further, not a reason to size up.
Running a backtest
- Build or load your strategy on the canvas.
- Click Run Backtest in the floating toolbar.
- The builder prepares the historical data range and runs the simulation.
- A Backtest Result node appears on the canvas with the outcome.
If the strategy graph has validation errors, the backtest will not run. Fix any flagged issues first.
Reading the results

A Backtest Result node: the performance tiles, the equity curve, and every simulated fill.
The Backtest Result node shows a set of metric tiles:
| Metric | What it means |
|---|---|
| Return | Total percentage gain or loss across all simulated trades |
| Net P&L | Profit or loss in USD, with fees paid shown beneath it |
| Sharpe | Risk-adjusted return. Above 1 is generally considered good |
| Sortino | Like Sharpe, but only the downside (harmful) volatility counts against it. Higher is better |
| Drawdown | Largest peak-to-trough decline during the backtest period |
| Win Rate | Percentage of trades that were profitable |
| Avg Win / Loss | The average winning trade against the average losing trade |
| Long / Short | How many trades were long versus short |
| Time in Market | The share of the period the strategy held a position |
Open the expanded view for the full summary, which adds:
- Equity curve: The simulated portfolio value from start to end, with a marker on each trade. The starting cash is your account equity at run time, or a default of 10,000 when that is not available
- Annualized: Return projected to a full year, shown beneath the Return tile
- Fills: A list of every simulated trade with side (buy/sell), size, price, fee, realized PnL on closes, and timestamp
Partial results
If some historical data is missing or the output is truncated to fit display limits, the result node shows a Partial badge with a warning message. The metrics are still useful, but the fill list may be incomplete.
Limitations
Backtests simulate fills at historical prices. They apply the slippage tolerance you configured and report a slippage cost, but they cannot reproduce live order-book depth, latency, or market impact. A backtest assumes your order fills at a historical candle. A live order competes for real liquidity at that moment.
Historical indicator values are computed from historical data, not live feeds. This is usually accurate but can differ slightly from real-time computation during fast markets.
The backtest runs against the current canvas state. If you modify the strategy after running a backtest, the result node reflects the old version until you run it again.
Tips
Backtest before deploying any new strategy. It catches logical errors a glance at the canvas misses, like impossible conditions or a misconfigured cycle. Configure your stop loss and take profit first, so the simulation includes the risk management that will run live.
Compare backtest results across different time ranges to see how the strategy behaves in different market regimes. A setup that thrives in a trend can bleed in a chop. The regime is part of the test.
Delete old backtest result nodes to keep the canvas clean. Click the X on the node header.
Next steps
Once you’re satisfied with the backtest results, you can deploy to live markets. Read Deploy a Strategy to learn how.