A backtest that cannot see the future.

A crypto backtest is only useful if it is honest. AurexionLabs replays the market event by event in a compiled Rust engine, with fills, fees and slippage modelled without optimism.

Every event, in order.

The backtester replays the market one event at a time, in time order: every tick, or every 1-second or 1-minute bar. Your strategy reacts to each event the way it would live, with the same code.

No look-ahead bias. It cannot see the future, anywhere.

  • Bars. At a bar's close your strategy sees the bar that just closed, and of the next bar only what has printed up to that moment.
  • Indicators. They are fed completed bars only, so no indicator value contains a price from after the decision. A value is never rewritten once its bar has closed.
  • The current day and other timeframes. The daily series and up to 3 extra timeframes show completed periods only; the period still forming holds nothing from its future.
  • Market regime. A regime filter is computed from past bars only.

Each of these rules is in a written audit and pinned by an automated test, so a change that broke one would fail before it shipped.

The app's result screen for a real backtest: Donchian Breakout on SOLUSDT, 4-hour bars, 2025. Total return +15.7 percent, max drawdown -10.5 percent, 93 trades, Sharpe 1.25, significance test: not significant, and the equity curve
The app's result screen for one real backtest: Donchian Breakout, one of the included example strategies, on SOLUSDT, 4-hour bars, all of 2025, default settings, run once. The app's own significance test says the result is not significant, which is the honest read of one coin and one year. An example strategy, not an edge; a backtest is a simulation, not a promise of future results.

Fills, modelled without optimism.

Slippage and spread are simulated. A simulated fill can sit at a price where nothing printed, and that is correct: it is the cost of trading that the model is meant to charge, not a defect.

  • Maker and taker fee rates are settings you choose, and the results carry whatever you put in.
  • Slippage is priced on taker fills, the orders that cross the spread, such as a market order or a triggered stop.
  • A stop the market gapped past fills at the next real tick, and slippage applies from there.

Fast, even on ticks.

Run it on raw ticks, on 1-second bars or on 1-minute bars.

The engine is written in Rust and compiled as one program. It runs your C# strategy in-process, with no network hop or interpreter in the event loop. Event-by-event backtesting stays fast, even across years of tick data, so you can test an idea and still have time to think about the result.

Research tools that look for luck.

  • Optimiser. A Bayesian search that prefers broad, stable parameter ranges over a single peak. Each result says whether it is a robust plateau, a soft hill or a spike, with a stability score and a check on whether it could be luck. Every evaluation is a real engine backtest.
  • Coin sweeps. Run one strategy across the whole coin list, with a significance test per coin, and save the coins that pass as a universe.
The app's surface map for a real optimiser run: Sharpe ratio over channel period and take-profit, one dot per backtest, with the optimiser's pick marked on a broad raised area
The app's surface map for a real optimiser run: Donchian Breakout on ZECUSDT, 4-hour bars, all of 2025. 121 backtests; each dot is one of them. The optimiser's verdict: a soft hill, best Sharpe 1.21. A backtest is a simulation, not a promise of future results.
The optimiser screen: strategy, symbol, period, metric, search budget, and a table of settings with start, end and step
The optimiser: choose which settings to search, their range and step, and what to optimise for.

One symbol proves little.

A result on one symbol proves little, so AurexionLabs is built to test portfolios of several coins, each with its own strategy and share of the account. See portfolios.

See which plan fits how you trade.

Previous stage: Develop · Next stage: Portfolios