Backtesting
Test it against the past, with the engine that trades the present
A replay here is not a second implementation of your rule. It is the same engine reading recorded bars instead of live ones, which is the only way a result means anything about what will happen next.
The result
What a finished run tells you
Grouped as the results screen groups it. Nothing here is a metric we plan to add, because a list like this grows a plausible extra entry and nobody finds out until they run one.
- Final equity
- Net profit and loss
- Total return
- Annualised growthcan be blank
- Maximum drawdown
- Longest drawdown, in time
- Sharpecan be blank
- Sortinocan be blank
- Time holding a position
- Trades, won and lost
- Win rate
- Profit factorcan be blank
- Average win
- Average loss
- Largest win
- Largest loss
- Commission paid
- Bars replayed
HYPOTHETICAL PERFORMANCE. Every figure above is produced by replaying a rule over recorded bars. It is not the result of trading and no money was at risk. Hypothetical results have inherent limitations, chief among them that they are prepared with the benefit of hindsight and that no replay contains the order it is testing. No representation is made that any account will or is likely to achieve a profit or a loss resembling one shown here. Sections 12 and 13 of the Terms of Service and Section 16 of the Risk Disclosure Agreement state this in full.
The window
What a replay is set up over
A window, a starting balance, and one decision about which bars count. Nothing here is a result yet.
Regular hours only is the setting most likely to change a result quietly, which is why the app says what it does rather than naming it and moving on. A replay that includes pre-market bars fills at prices a thin book produced, and a rule that looked profitable on them is a rule that was tested somewhere it will not trade.
How it can be wrong
Every backtest is a claim about a past that did not contain your order
The ways that claim can be wrong are knowable, so here are ours. A result you cannot interrogate is a result you should not act on.
Bars, not ticks
We hold minute bars, not every quote and trade. Inside a single bar the exact path is reconstructed from its open, high, low and close, so anything that depends on the order those were touched is an approximation.
Options are not replayed yet
Stocks and crypto only. The historical options data we hold is too thin to replay honestly, and a spread backtest built on it would look precise and mean nothing.
A modelled fill is not a fill
Commission and slippage are applied from a model you set. Real fills depend on a book that was not asked to absorb your order, and no replay anywhere can undo that.
Before it touches money
Build a rule, replay it over the window you care about, and read the result next to what the replay cannot know.
