OverfitLabs
Python · offline · 57 tests

Your backtest says 300%. Is it real, or curve-fitting?

An honest engine (fees, slippage, next-bar fills) plus the stress tests quant funds use: walk-forward, an untouched out-of-sample hold-out, Monte Carlo and parameter heatmaps. One command, one HTML report. Your code, on your machine.

Buy for $12 in BTC Download Lite (free) See 3 example reports →

Crypto Backtest Toolkit Pro screenshot

The trap it's built to catch

The bundled demo tunes a moving-average strategy on the first 70% of the data. In-sample it looks great: Sharpe 1.49. On the untouched last 30% it falls apart: Sharpe −0.13. Most backtesting tools would only ever show you the first number.

What you get

Honest engine

Decide at the close, fill at the next open, fee + slippage on every fill. No look-ahead (tested).

Walk-forward

Rolling or anchored re-optimization, stitched out-of-sample equity, WF-efficiency score.

Out-of-sample split

Optimize on 70%, test once on the untouched 30%.

Monte Carlo

Trade bootstrap, order shuffle, block bootstrap. Percentile bands, P(loss), drawdown distribution.

Parameter heatmaps

Plateau score separates robust edges from lucky spikes.

6 strategies + your own

MA cross, Donchian, RSI reversion, EMA+ATR, vol-targeted trend, B&H. Add yours with a 5-line decorator.

Risk exits & sizing

Stop-loss, take-profit, trailing stop (gap-aware); 0–100% fractional and volatility-targeted sizing.

20+ metrics

CAGR, Sharpe, Sortino, Calmar, max DD & duration, profit factor, expectancy, fees, B&H comparison.

YAML + full CLI

run, split, walkforward, montecarlo, sensitivity, report. Any OHLCV CSV, keyless candle downloader.

Screenshots

7-panel tearsheet: trades, equity vs buy & hold, drawdown, exposure, monthly heatmap
7-panel tearsheet: trades, equity vs buy & hold, drawdown, exposure, monthly heatmap
In-sample vs out-of-sample: catches overfitting
In-sample vs out-of-sample: catches overfitting
Walk-forward out-of-sample equity and per-fold results
Walk-forward out-of-sample equity and per-fold results
Monte Carlo fan chart and drawdown distribution
Monte Carlo fan chart and drawdown distribution
Parameter-sensitivity heatmap with plateau score
Parameter-sensitivity heatmap with plateau score

Lite vs Pro

Lite (free, MIT)Pro ($12)
Engine with fees, slippage, next-open fills✓✓
CAGR, Sharpe, max drawdown, win rate✓✓
Sortino, Calmar, profit factor, 20+ metrics✓
StrategiesMA crossover6 + custom registry
Stops / take-profit / trailing / fractional sizing✓
Out-of-sample split · walk-forward · Monte Carlo✓
Parameter-sensitivity heatmaps✓
Chartsequity + drawdown5 chart types + HTML report
Config + CLIbasic flagsYAML + full CLI

Free: Crypto Backtest Toolkit Lite

The same honest engine with fees, slippage and the core metrics, MIT-licensed. Try it first and see the code quality for yourself.

Download Lite (free) zip · Python 3.10+ · MIT

Example reports made with the Toolkit

Three strategies tuned and backtested with the Toolkit Pro engine, then put through an out-of-sample split, Monte Carlo and a parameter-sensitivity check. Each report gives a 0–100 robustness score and a plain-English verdict.

Made-up data. All three use the synthetic daily price series bundled with the Toolkit (2018 to 2025), not BTC or any real coin.

The score and this report layout come from our own scoring script, which isn't part of the Pro download. The checks underneath (out-of-sample split, Monte Carlo, parameter heatmaps) are Toolkit Pro features you can run on your own data.

Buy Toolkit Pro

$12
one-time

Compare plans · or get it in the Everything bundle ($22 for 3 products)

One-time payment in bitcoin (on-chain). No email, no account.

Order ID Claim key Amount Expires in30:00

Open in wallet

If no wallet opens, copy the address and amount into your wallet app.

Pay only to this address

Same address is listed in the FAQ and our Nostr profile. This quote was verified as signed by our shop key.

Save your order ID and claim key. They're stored in this browser, but they are the only way to recover your purchase on another device. all details.

Waiting for your payment…

Send the exact amount in one payment. Network fees are paid by you. Digital goods are final sale.

  1. Get a live quote: an exact sat amount, an order ID and a secret claim key. Valid 30 minutes. Don't send anything before you see it.
  2. Send exactly that amount to the address shown, in one payment.
  3. Keep this page open, or come back later. After 1 confirmation your download appears right here.
Honest note on timing

Our checkout runs on a small machine that isn't always online. Requests and deliveries travel as end-to-end encrypted messages through public Nostr relays, which hold them while it's offline, so a quote or delivery can take hours instead of seconds. The line above shows when the checkout was last online. Your order is saved in this browser.

Checkout diagnostics (screenshot this if checkout doesn't work)
Recover my order

Paste the order ID and claim key you saved.

Related reading

FAQ

What do I get?

A one-time download of Crypto Backtest Toolkit Pro ($12): the honest engine plus walk-forward, out-of-sample hold-out, Monte Carlo and parameter heatmaps, with an HTML tearsheet. Lite (MIT) stays free.

How do I know the address is real?

Our only payment address is 1MVAKAcfvPNSyxW9Pa7zdn7SQn5xTqhCKu. It's in this FAQ and in our Nostr profile (npub16lgpp5erwwfrwdur0sjashuessfg28mlf8c0uruq06ah2ag26x5sm7vd7g), which you can check in any Nostr app independent of this website, and the checkout refuses any quote not signed by that shop key or naming a different address. If you ever see another address, don't pay it.

What do I need?

Python 3.10+ with numpy, pandas, matplotlib and pyyaml. Windows, macOS or Linux. Runs fully offline.

Does it trade or give signals?

No. It's research software: no exchange connections, no API keys, no signals. Sample data is synthetic.

Why bitcoin only?

No payment processor and no account for you or us. You pay an exact amount on-chain and get a one-time download link after 1 confirmation.

Refunds?

Digital download, so all sales are final. That's why the Lite edition is free: try before you buy.

License?

Single user, on all your own machines, commercial use OK.