Backtester

Tick-accurate. Brutally honest.

Spreads, slippage, weekend gaps, news lockouts and margin caps modelled engine-side. We don't flatter your equity curve — what you see is what your live engine should produce within slippage.

92k bars
<200 ms
O(N) prepared engine
Replay speed
500×
1× to 500× simulated time
Lookback
24 mo
tick-accurate where broker provides
Per backtest
< 5 mb
lean storage, fast fetches
The principle

Same engine. Same spec. Same answers.

The backtester and the live executor are the same code. There is no “backtest version” vs “live version” — they cannot diverge.

What you backtest is what you trade.

  • Single spec, both modes
    A backtest run reads the same StrategySpec the live executor will run. No translation, no glue.
  • Modelled spreads
    Per-symbol spread series. Widens around news. Yes, including the 2 am Sunday spike.
  • Slippage simulator
    Configurable per-symbol slippage with a stochastic component. Defaults match real-broker live data.
  • Weekend gaps preserved
    Friday close → Sunday open is a real gap, not a smoothed line. Stops trigger correctly.
  • Margin-aware sizing
    Lot size capped by available margin × leverage. The strategy can't over-leverage by accident.
run.config.json
{
  "strategyId":  "strat_a82c3f...",
  "symbol":      "NAS100",
  "from":        "2025-11-05",
  "to":          "2026-05-05",
  "initialBalance": 200000,
  "leverage":    50,
  "perTradePct": 1.0,
  "compounding": true,
  "dailyDDStopPct": 5,
  "maxDDStopPct":   8,
  "stopOnConsecutiveLosses": 3,
  "spreadModel": "broker.real",
  "slippage":    "broker.real"
}
Pipeline

Prepare once. Replay forever.

01
Prepare

A single O(N) pass pre-computes EMAs, swing-level deques, FVG arrays, news blackouts.

  • No O(N²) per-bar recompute
  • Cached for the run
  • Re-used across replay seeks
02
Run

Bar-by-bar evaluation against the spec. Decisions come out as a TimelineEvent stream.

  • OPEN / CLOSE / BE_SET / TRAIL / STOPPED
  • Stripped of payload bloat
  • Cheap to seek and replay
03
Score

Net P&L, win rate, profit factor, expectancy, Sharpe, Calmar, max DD, drawdown series.

  • Per-symbol & per-session attribution
  • Monthly returns table
  • Streak histograms
04
Replay

cTrader-style chart replay. Speed 1×–500×. TP/SL ribbons, BUY/SELL arrows, live KPI tape.

  • No blinking
  • No event-walks
  • requestAnimationFrame clock
Replay engine

cTrader-grade chart replay, in the browser.

1×–500× speed

Step bar-by-bar or fast-forward. Time-driven cursor, not event-walk.

TP/SL ribbons

Closed positions render as ribbons; live ones as floating brackets.

No blinking

RAF accumulator + 100 ms commit throttle. Smooth at 100×.

Synchronised KPIs

Equity, today's P&L, drawdown — tape ticks with the chart.

Seek anywhere

Click the equity curve to jump to that moment. State rebuilt deterministically.

Export

Save the replay run. Share it with a teammate. Re-load it next week.

Honest by default

What we model. What we don't.

Modelled
  • • Per-symbol spread series, time-of-day variation, news-time widening
  • • Stochastic slippage with broker-realistic distributions
  • • Weekend and holiday gaps preserved as gaps
  • • Order-of-events within a bar (OPEN before STOP unless conflict)
  • • News blackouts (per-currency, per-impact level)
  • • Margin caps (notional / leverage ≤ available balance)
  • • Daily DD halt, max DD halt, consecutive-loss skip-day
  • • Session boundaries, DST transitions, IANA timezones
Not modelled
  • • Live order-book impact (your fill never moves the price)
  • • Broker-specific quirks (requotes, partial fills, last-look)
  • • Connection drops and re-routing
  • • Extreme tail events the historical sample didn't contain
  • • Behavioural variance (you closing early in real life)

Treat backtest numbers as an upper bound, not a forecast. We say this on the report screen, too.

What you get

Every metric your prop desk would want.

Net P&L

Total return, % return, basis-point return per trade.

Win rate · PF

Win rate, profit factor, expectancy, payout ratio.

Drawdown

Peak-to-trough series, time-under-water, Calmar, MAR.

Streaks

Consecutive-win and consecutive-loss histograms.

Attribution

Per-symbol, per-session, per-DOW, per-month attribution.

Risk envelopes

How often each risk cap bound, how much it cost.

News-day P&L

Returns split by red-folder vs no-news days.

Latency model

How execution latency affects fills (broker-realistic distributions).

FAQ

What people ask after a too-good-to-be-true backtest.

See your strategy run, before you fund the account.

Six months in under a second. Zero glue.

Join the waitlist