Find out if your backtest is real before you trade it.

Know if your edge is real before you fund it.

Start freeFree, no card required
sma-crossover.ts
strategy('SMA Crossover')  .category('Strategy')  .tags('trend-following')  .input('fastLength', 'integer', { default: 8, min: 2, max: 200 })  .input('slowLength', 'integer', { default: 34, min: 5, max: 500 })  .input('source', 'source', { default: 'close' })  .state('prevFast', 'number')  .state('prevSlow', 'number')  .state('fastSMA', 'number')  .state('slowSMA', 'number')  .calculate(({ helpers, inputs, ta, state }) => {    const sourceData = helpers.lookback(inputs.slowLength, inputs.source);    const fastSMA = ta.sma(sourceData.slice(-inputs.fastLength), inputs.fastLength);    const slowSMA = ta.sma(sourceData, inputs.slowLength);    state.prevFast = state.fastSMA;    state.prevSlow = state.slowSMA;    state.fastSMA = fastSMA;    state.slowSMA = slowSMA;    return { fastSMA, slowSMA };  })  .entry(({ state }) => {    const crossUp = state.prevFast <= state.prevSlow && state.fastSMA > state.slowSMA;    const crossDown = state.prevFast >= state.prevSlow && state.fastSMA < state.slowSMA;    return { long: crossUp, short: crossDown };  })  .risk({ stopLoss: 2, maxPositions: 1, positionSize: 100 })  .build();
BacktestNVDA, 15-minute bars

Example: SMA Crossover on NVDA, Sep 3 to Oct 2, 2026.

Write your own strategy, or start from ours.

Test the exact rules you'd trade, not a rough version of them.

Example: SMA Crossover on NVDA, Sep 3 to Oct 2, 2026.

Test every variation at once. See which results are luck.

Find the version of your strategy that keeps working, not the one that peaked once.

Example: SMA Crossover on SPY, 80 combinations, Jan 2 to Oct 1, 2026.

Two strategies looked good. Only one passed.

Same stock, same dates, same test.

Likely luckSMA Crossover on SPY
Result: likely curve-fitted. Failed out-of-sample, 0 of 2 windows profitable, 67% overfitting risk, no stable region.
Passed on new data
0 of 2
Overfitting risk
67%
PassedRSI Mean Reversion on SPY
Result: passed out-of-sample, 2 of 2 windows profitable, 19% overfitting risk, 8 of 36 combinations in a stable region.
Passed on new data
2 of 2
Overfitting risk
19%

Example: SPY, 15-minute bars, Jan 2 to Oct 1, 2026.

Three more checks before you trust it.

Walk-forward tests your settings on dates they never saw. The robustness check rebuilds the period 2,000 times from your own trades to show the range of outcomes. And holding SPY sits on the same chart: on these dates it made 12.5% while the strategy lost 8.4%.

A walk-forward test of Bollinger Breakout on SPY, profitable in 4 of 6 windows, with bbLength 55 chosen in every window. Below it, one backtest on the default settings: the strategy lost 8.4% while holding SPY made 12.5%, 90% of 2,000 redraws ended between -19.9% and +4.9%, and the average trade of -1.6 bp is not clearly different from zero.
Example: Bollinger Breakout on SPY, 5-minute bars, Jan 5 to Oct 5, 2026. Top: a walk-forward over 10 settings. Bottom: one backtest on the default settings.

Test every variation, not just one.

Upgrade to test every variation of a strategy at once, see whether the best one is overfit, and backtest a full year of history.

Questions

Do I have to write code?

No. Start from a built-in strategy and adjust it. Write your own in TypeScript when you want your own rules.

What can I backtest?

Any US stock or ETF, on minute or daily bars.

Can I trade a strategy once it’s tested?

Yes. Deploy it to a paper account from the same screen and watch it trade the live market.

Test the idea before you risk the money.

Start free. No card required.