Why Crypto Strategy Backtesting Overstates Reality
Crypto strategy backtesting produces numbers that are wrong in a predictable direction. Backtests commonly overstate returns and understate drawdowns. That happens because a backtest is a simulation you built and kept adjusting until it agreed with you. The market has no interest in agreeing with you.
This article is general information only. It does not account for your objectives, financial situation or needs, and it is not financial, tax or legal advice. Automated trading in crypto assets carries a real risk of losing some or all of your capital.
This is not a general warning about being careful. It is a structural claim: the process of building and refining a backtest actively generates optimism. Every parameter you nudge, every date range you shift, every trade you exclude because “that was an outlier” moves the result further from what you would have actually experienced.
The gap between backtest and live performance has five main sources. Overfitting, look-ahead bias, survivorship bias, unrealistic fill assumptions, and validation that never tested anything out of sample. In my experience, retail backtests tend to carry several of these at once rather than just one. What follows is how to detect each one and what an honest testing process looks like instead.
Overfitting: You Memorised the Past
Overfitting is, in my view, among the most common reasons a profitable backtest turns into a losing bot. It happens when your strategy’s parameters describe the specific noise in your sample rather than any repeatable market behaviour.
The mechanism is mundane. You test a moving-average crossover, get a mediocre result, and start experimenting. A 12/26 pairing beats 9/21, adding an RSI filter above 55 helps, and excluding trades on Sundays helps too. By that point you have stopped doing research and started fitting a curve to historical accidents.
Every parameter you add multiplies the number of configurations you have implicitly searched. Search enough combinations against one dataset and some will look excellent purely by chance. A strategy with eleven tunable inputs and a beautiful equity curve is more suspicious than a two-parameter strategy with a mediocre one.
The defence that costs nothing is to write down how many configurations you tested. Keep a running count of every variant you ran against the same data, including the ones you abandoned after a single glance, because those count too. A result that looks strong after two hundred trials is a far weaker claim than the same result after three, and most people cannot recall their own trial count within an order of magnitude.
Detection signals worth taking seriously:
- Parameter cliffs. If a 20-period lookback is profitable and a 21-period lookback is not, you have found noise. Real edges degrade gradually as you move parameters, not off a cliff.
- Too many rules relative to trades. A strategy with six conditions validated on 40 trades has almost no statistical content.
- Suspiciously smooth equity curves. Genuine crypto strategies have ugly drawdowns. A clean 45-degree line usually means something is leaking.
- Results that collapse on a neighbouring asset. If your BTC/AUD settings lose money on ETH/AUD with identical logic, you have probably fitted BTC’s particular history.
The practical defence is parameter parsimony. Prefer fewer inputs, prefer round numbers over optimised ones, and prefer a strategy that is broadly profitable across a plateau of settings over one that peaks sharply at a single configuration.
Look-Ahead Bias: Using Information You Could Not Have Had
Look-ahead bias means your backtest made decisions using data that did not exist at the moment of the decision. It is the most embarrassing failure mode because it is invisible in the results and obvious in hindsight.
The classic version in crypto is candle-close leakage. Your signal evaluates whether the four-hour candle closed above a moving average, then executes at that same candle’s close price. Live, you only know the close after it has happened, and by the time your order reaches the exchange the price has moved. The fix is to signal on one bar and fill at the next bar’s open.
Indicator repainting is the second common source. Several popular charting indicators adjust their historical values as new data arrives, so the chart you are studying shows signals that were never available in real time. If an indicator’s past values change when you reload the chart, it cannot be backtested honestly.
A third form is subtler and specific to research workflows. You choose which asset to test after already knowing which coin performed well over your sample period. Nothing in the code looks ahead, but you did, and the selection itself imports the bias.
Survivorship Bias: The Coins Missing From Your Data
Survivorship bias is the distortion you get when your historical dataset contains only the assets that still exist today. It is severe in crypto, worse than in equities, and most retail data pipelines do nothing about it.
If you pull historical data from an exchange API today, you get the assets that are still listed today. Every token that was delisted, collapsed, or quietly stopped trading is absent. Your universe consists of survivors, and a strategy tested on survivors will look far better than one tested against the full historical opportunity set.
This matters enormously for anything that ranks or rotates. A momentum strategy that buys the strongest performers among the top fifty tokens, backtested on today’s top fifty, systematically excludes the assets that had strong momentum and then went to zero. That is precisely the failure the strategy would have suffered live.
Point-in-time data — a record of what was actually listed and how it ranked on each historical date — is the correct answer, and it is expensive or unavailable for most retail traders. The practical mitigations are to restrict multi-asset strategies to a small set of large, long-lived assets, or to apply a deliberate haircut to any ranking strategy’s results and treat them as an optimistic upper bound.
Fill Assumptions: The Trades You Would Never Have Got
Most backtesting engines assume you get filled at the price you asked for, in full, instantly. On an Australian crypto exchange, all three assumptions commonly overstate what live execution would have delivered.
Start with fees, because they are the easiest to model and the most commonly ignored. Retail taker fees on Australian-accessible exchanges are high enough that a strategy trading frequently on thin margins can be profitable before costs and negative after. Round-trip cost is two sides of fees plus the spread you crossed, and that full figure belongs in the model before you look at any performance metric.
Spreads on AUD pairs run wider than on equivalent USD pairs, and they widen further on smaller assets and during volatility. A strategy whose average winning trade is smaller than its all-in round-trip cost has no edge regardless of what the equity curve says. Test this first — it eliminates a lot of ideas in about ten minutes.
Slippage and partial fills are harder. Your backtest fills a market order at the last traded price, but a real market order walks the order book, and in thin conditions it can walk a long way. The specific irony is that slippage is worst exactly when your signal fires, because the same volatility that triggered the entry is what thinned the book.
Conservative modelling assumptions worth adopting:
| Assumption | Naive backtest | Honest backtest |
|---|---|---|
| Entry price | Signal bar close | Next bar open |
| Fees | Zero, or the maker rate | Taker rate, both sides |
| Spread | Ignored | Crossed on every entry and exit |
| Slippage | Zero | Scaled up during high volatility |
| Stop losses | Filled at the stop price | Filled worse, sometimes much worse |
| Order rejection | Never happens | Happens; rate limits and outages exist |
That last row deserves attention. Exchange APIs impose rate limits tight enough that aggressive polling will get you throttled, and venues degrade or enter maintenance during exactly the volatile sessions your strategy cares about. No backtest models a five-minute API outage during a crash.
Walk-Forward Validation: The Minimum Standard for Crypto Strategy Backtesting
A single in-sample backtest tells you almost nothing. Walk-forward validation is the minimum standard for crypto strategy backtesting with any claim to predictive value.
The method is straightforward. Split your history into sequential blocks, fit parameters on the first block, then test them unchanged on the block immediately after. Roll the window forward and repeat, so you accumulate a series of out-of-sample results that were each produced by a process you could have run in real time.
What you care about is the out-of-sample record only. The in-sample numbers are a by-product of fitting and carry no information about the future. If the out-of-sample curve is materially worse than the in-sample one — and it will be — the honest reading is that the out-of-sample figure is your estimate, not the average of the two.
Two disciplines make this work. First, hold back a final block of data that you never touch during development, and look at it once, at the end. Second, count your looks: every time you revise the strategy after seeing out-of-sample results, that data becomes in-sample and its value as validation is spent.
Window sizing is where most implementations quietly fail. The fitting window has to be long enough to contain a meaningful number of trades, and the test window short enough that the parameters have not gone stale by the end of it, and on a low-frequency strategy those two requirements can be flatly incompatible. When they are, the honest conclusion is that you do not have the data to validate the strategy — not that you should shrink the windows until something fits.
Crypto adds a regime problem that walk-forward handles better than most approaches. The market has moved through distinct volatility and liquidity regimes, and a strategy fitted entirely within one bull cycle has never been tested against anything else. Your windows should span more than one regime, and you should read per-window results rather than only the aggregate.
The Honest Crypto Strategy Backtesting Workflow
The honest workflow runs in a fixed order: define the strategy, model costs, validate walk-forward across regimes, look at your held-back block once, then forward test on live data before any real capital moves. Forward testing sits last because it is the one step a backtest cannot replace. Walk-forward validation still runs on historical data, so it cannot detect infrastructure problems, and only paper trading or a very small live allocation will.
This stage catches a category of failure no backtest reaches. Websocket disconnections, clock drift, duplicated orders after a retry, a position-size calculation that breaks on the exchange’s minimum order increment. These are engineering failures rather than strategy failures, and in my experience they account for a substantial share of automation losses that get blamed on the strategy itself.
A workable sequence looks like this:
- Define the strategy and its parameters before looking at any results.
- Model fees, spread and slippage first, then check whether the average trade even clears costs.
- Run walk-forward validation across multiple market regimes.
- Look at your held-back block once.
- Paper trade long enough to watch the strategy handle a genuinely volatile session.
- Deploy small and compare live fills against backtested fills continuously.
Step six is the one people skip. Logging your expected fill price alongside your actual fill price, trade by trade, is the only way to find out whether your cost model was right. If live results diverge from the backtest by more than your modelled slippage, something in the model is broken and the strategy should come off.
Australian Specifics That Distort Backtests
Three Australian factors change the arithmetic and rarely appear in generic backtesting guides: AUD pair liquidity, tax treatment, and platform or regulatory change. Each one moves a backtest result in the optimistic direction if you leave it out.
AUD pair liquidity is thinner than the USD equivalent, so slippage assumptions borrowed from US-focused content will be too generous. If you backtest on USD data and trade AUD pairs, you have introduced a mismatch that flatters the result. Backtest on the pair you will actually trade, or model the difference explicitly.
Tax treatment also affects whether a marginal strategy is worth running. The ATO treats disposals of crypto by investors as CGT events, and a high-frequency strategy generates a very large number of them. Where someone is carrying on a business of trading, the ATO’s guidance points to revenue or trading-stock treatment instead, which changes the calculation materially. Which category applies depends on individual circumstances and is worth confirming with a registered tax agent rather than assuming.
Regulatory change is the third factor, and its direction matters more to a backtest than its detail. ASIC’s class no-action position for digital asset businesses turns on taking a qualifying step by 30 September 2026 — for an AFS licence, lodging the application or variation, while market licences and CS facility licences follow a separate notice-and-pre-meeting path — and it then continues until that application is determined rather than lapsing on that date. It is a policy position rather than a legal opinion, and ASIC can revise or withdraw it at any time. Separately, AUSTRAC’s transition of already-registered digital currency exchange providers into the virtual asset registration regime happened automatically, without those businesses reapplying.
That registration is an AML/CTF obligation and nothing more — not an endorsement, not a solvency assessment, and no protection of your funds if a platform fails.
The relevance to backtesting is indirect but real. Platform availability changes over time, and a strategy dependent on one venue’s API carries a risk your historical data cannot show you. A venue that delisted your pair, throttled its API, or left the market entirely leaves no trace in a price series pulled today.
Frequently Asked Questions
How much historical data do I need for a valid backtest?
Enough to cover multiple market regimes, which in crypto means at least one full bull and bear cycle. Trade count matters more than calendar span: a few hundred out-of-sample trades gives you something to reason about, while thirty does not. A daily-timeframe strategy therefore needs far more years of data than an hourly one.
Is a charting platform’s built-in strategy tester good enough?
It is fine for a first-pass sanity check and poor for anything you intend to fund. Fee and slippage modelling in those tools is coarse, several popular indicators repaint, and walk-forward validation is generally not supported natively. Use it to discard bad ideas quickly, then rebuild anything promising in Python where you control the fill assumptions.
What Sharpe ratio should I expect from a real crypto strategy?
Be sceptical of anything unusually high in a retail backtest, because it usually indicates a leak rather than an edge. Look-ahead bias and zero-cost fill assumptions inflate this metric dramatically. A modest out-of-sample Sharpe that survives realistic costs is worth more than a spectacular in-sample number.
Does paper trading replace backtesting?
No, they answer different questions. Backtesting tells you whether the logic has ever worked across varied conditions; paper trading tells you whether your implementation actually functions against a live exchange. Paper trading alone would take years to accumulate a meaningful sample.
How do I know when a live strategy has stopped working?
One common approach is to define the failure condition before deployment, in writing. That might mean nominating a maximum drawdown and a minimum expected win rate drawn from your own walk-forward results, and treating a breach of either as the trigger to stop. Deciding this while watching a live loss is exactly the emotional judgement automation was meant to remove.
Is a strategy that fails backtesting always worth abandoning?
Usually yes, and that is the useful outcome. The value of a rigorous testing process lies mostly in what it stops you from deploying. An idea that clears realistic costs out of sample is rare enough that most of your results should be rejections.
Important Information
Everything above is general information and commentary about testing methodology. It does not take your objectives, financial situation or needs into account, and it is not financial, tax, legal or investment advice. Crypto assets are volatile and automated strategies can fail in ways no backtest predicts, so your capital is at risk and past or simulated performance is not a reliable indicator of future results. Consider obtaining advice from a licensed financial adviser and a registered tax agent before acting.