Backtesting

Test it on real history. Before you risk real money.

The backtester pulls real candles from the venue you'd be trading on, replays your strategy across them with the actual fee schedule and a configurable slippage assumption, and reports the same metrics you'd see live. The same engine validates every Strategy AI recommendation and every Spot Grid AI grid configuration before they reach your dashboard.

How a backtest runs

From configuration to result

01

You configure

Pick the strategy, the symbol, the venue, the timeframe, and the date range — or accept the strategy-specific defaults the engine ships with.

02

Historical candles fetched

Real candles from the venue, including a warm-up window (50–100 candles ahead of the primary range) so the strategy's indicators have settled before any signal can fire.

03

Strategy replayed

The exact strategy code that runs live runs again on the historical bars. Signals fire, entries open, stops and take-profits apply, and exits close — using the venue's actual fee schedule and a configurable slippage assumption.

04

Metrics and trade ledger

A full trade ledger plus the standard performance metrics. Multi-window consensus runs additionally split the ledger into sub-windows so you can see whether the strategy worked consistently or only on one stretch.

Where the engine runs

Three surfaces, one engine

The backtester is not a separate tool that only lives in a corner of the dashboard — it's the same engine driving validation for every AI surface.

Strategy AI recommendations

Every Strategy AI recommendation is run through the backtester before it surfaces. Multi-window consensus tags the recommendation PASSED or FAILED — and a FAILED rec still appears in your list with the failure reason, because the decision is yours.

Spot Grid AI recommendations

Every grid parameter set is validated against a 30-day historical window when it's recommended, then recalculated at deploy time. Recommendations get a VERIFIED or HIGH_RISK badge depending on whether the backtest cleared the gates.

On-demand from the dashboard

You can run a custom backtest from the strategies surface — pick the configuration, pick the window, and the engine queues it. Results are saved to your backtest history with the full trade ledger for drill-down.

Multi-window consensus

Why one backtest is not enough

A strategy that worked in one historical window often fails in a different one. The engine splits the primary backtest into sub-windows and asks whether the result held up across them — not just whether the headline number was positive.

One run, multiple windows

The strategy is backtested once across the primary range; the resulting trade ledger is then split into sub-windows. No additional backtest passes — the same simulation is sliced for consistency analysis.

Two of three windows must work

Default consensus rules require at least two of three sub-windows to be profitable, with the worst drawdown across them under 30%. A strategy that survives one window and blows up in another does not pass.

Strategy-specific window lengths

Grid and Perp strategies validate against 60–90 days. MA Cross validates against 180 days because the crossover signal needs more bars to fire enough times to be meaningful. Mean Reversion sits in the middle at 90 days.

Metrics

What every backtest reports

Metric
Net P&L
Total profit and loss after fees, after slippage, after any modelled funding payments — not gross.
Metric
Max drawdown
Largest peak-to-trough equity decline observed during the run.
Metric
Sharpe ratio
Risk-adjusted return, annualised. Computed from the strategy's realised return series during the window.
Metric
Profit factor
Ratio of gross profit to gross loss. Above 1 means winning trades outweigh losing trades by total currency.
Metric
Win rate
Percent of closed trades that finished above breakeven after costs.
Metric
Trade counts
Winning, losing, total, plus average win and average loss in absolute terms.
Metric
Largest win / loss
Single best and single worst trades in the run — useful for spotting a backtest that depends on one outlier.
Metric
Per-window stats
For multi-window consensus runs, the same metrics broken out per sub-window so you can see consistency.
Validation gates

What it takes to earn the PASSED badge

Single-window minimum

Even on a single-window check, a strategy needs at least three closed trades, a non-negative return, and a maximum drawdown under 25% to clear the bar. Tighter than just 'positive P&L'.

Multi-window consensus

At least two of three sub-windows must have meaningful data; the primary window needs at least three closed trades; the median sub-window return must be non-negative; the worst-window drawdown must be under 30%.

Grid-specific validation

For Spot Grid AI recommendations, the parameters need positive net P&L, a 50% or better win rate when there are enough cycles, a max drawdown under 15%, and at least four trades plus a completed grid cycle.

A FAILED tag still surfaces

The engine annotates rather than hides. A Strategy AI recommendation that fails multi-window consensus still appears, labelled FAILED with the failure reason, so you can decide whether the historical fit matters to you in current conditions.

What it models

The things the engine accounts for

Real fees

Maker / taker rates are fetched per-venue from the live exchange. If the venue's API is unreachable, the engine falls back to a published platform rate so the numbers are never silently zero.

Configurable slippage

A default slippage assumption is applied to every market fill. You can override it per backtest. The number is honest about being an assumption — not a per-order-book reconstruction.

Perp funding (when configured)

Perp backtests can charge funding against open positions per bar — prorated against the venue's funding interval (1 hour on Hyperliquid, 8 hours on CEX perps by default). The rate is a single value you set per backtest; the engine does not replay the venue's actual historical funding-rate series. Default is zero — if you don't set a rate, no funding is modelled.

Modelling scope

How the engine models execution, and where it doesn't

A backtest is a model of live execution, not a replay of it. Knowing where the model diverges is half the work of using a backtest responsibly.

Per-candle execution model

Fills happen at the open or close of a candle, plus high/low for trailing stops. A live limit order that gets filled mid-bar will not match a backtest that has to wait for the next bar to react. An intra-candle sub-step walk that closes this gap is on the backlog.

Candle-level fills, no order-book depth

The backtester does not reconstruct depth or spread per bar — it does not know whether your size would have moved the market. That is the gap any single-venue candle backtest has, and slippage is the assumption that stands in for it.

DEX gas isn't in the cost line

Gas costs on on-chain trades are not yet folded into the backtest cost line. A DEX strategy whose live edge is consumed by gas can look healthier in a backtest than it will run live.

Some strategies use a different validation path

HODL, Arbitrage, Risk Management, Sentiment, and TradingView (spot + perp) sit outside the bar-by-bar replay model — HODL is just held, Arbitrage needs two venues' order books at once, Risk Management attaches to live positions, Sentiment depends on a feed that isn't historically replayable, and TradingView is webhook-driven so the alert stream can't be reconstructed. Every other spot and perp strategy — including Perp Grid — runs through the engine.

Past performance is not a forecast

A backtest that passes can still lose money live. The engine guards against look-ahead bias and includes delisted pairs to reduce survivor bias — but it cannot eliminate regime change. Read the Risk Disclosure before you deploy.

Rate-limited on demand

On-demand backtests are rate-limited per account to keep the queue responsive — typically 20 runs per hour. AI-driven backtests (Strategy AI, Spot Grid AI) run on the platform's own quota, not yours.

Validate on history. Deploy with conviction.

Backtests are surfaced automatically on every AI recommendation. You can also run a custom backtest from the dashboard any time.