Common Crypto Backtesting Mistakes and How to Detect Them
Most dangerous backtest errors make the result look better, not obviously broken. A credible review actively searches for information leakage, repeated tuning, missing friction, and concentration before asking whether the strategy was profitable.
Prevent look-ahead and timing bias
Look-ahead bias occurs when a decision uses information that was not available at the simulated decision time. Common examples include trading on the same candle close that confirms the signal, using a completed higher-timeframe candle too early, or allowing a fill based on the favorable order of high and low inside one bar.[4][2]
Count how many ideas and parameters were tried
If hundreds of variants are tested and only the best is shown, its apparent performance includes selection luck. Keep a research log, limit degrees of freedom, and reserve data that did not influence the chosen rules. Nearby parameter values should produce a coherent region rather than one isolated peak.[3][4]
Count more than formal optimizer runs. Changing the symbol list, date range, indicator family, exit type, benchmark, and performance threshold after viewing results are all trials. Record them even when no report was saved. Define a search budget before exploration and group related variations under the hypothesis they test. Once a holdout result has influenced a choice, relabel it as development data and obtain genuinely later evidence. The apparent winner should face a higher evidentiary bar when it emerged from a larger search.
Inspect a parameter surface rather than a leaderboard. Choose two important parameters, test a small grid around the selected values, and look for a broad plateau of similar behavior across periods. An isolated spike suggests sensitivity to a few historical observations. Prefer a simpler point inside a stable region over the maximum. Repeat the comparison using net performance, drawdown, and trade count together, because a smooth return surface can still hide collapsing sample size or unacceptable risk.
| Symptom | Why it matters | Corrective check |
|---|---|---|
| One exact parameter wins | Noise may define the optimum | Perturb nearby values |
| Many discarded variants | Selection probability is hidden | Record every tested family |
| Strong in-sample only | Rules may memorize one period | Freeze and test later data |
| Complex filters, few trades | Degrees of freedom exceed evidence | Simplify or extend the sample |
Audit data coverage and universe selection
Using only assets that exist today can exclude failed or delisted instruments. Missing candles, insufficient indicator warm-up, changing contract specifications, and incomplete funding or open-interest snapshots can silently alter signals. Preserve warnings and state exactly which symbols were eligible at each time.
Construct a coverage report before the performance report. For each symbol show first and last usable timestamp, missing and duplicated intervals, warm-up consumed, required external series, and reasons for exclusion. Compare the eligible universe at each historical point with the universe the strategy claims to trade. If current listings are used as a proxy, name the resulting survivorship limitation and avoid conclusions about a dynamic market-wide portfolio. Never replace unknown external observations with zero unless zero is the documented meaning of the source.
- Check missing and duplicated bars before evaluating signals.
- Require enough pre-period data for every indicator warm-up.
- Document delisted, renamed, or unavailable instruments.
- Do not add a profitable symbol after seeing the result.
- Treat incomplete external-signal history as a limitation, not as zero events.
Challenge fills, costs, leverage, and liquidation
Filling every limit order when price merely touches it, ignoring bid-ask spread, charging one fee instead of every fill, or omitting funding can create profit that execution cannot keep. Leverage must affect margin and liquidation exposure; it is not a multiplier that can be applied only to winning PnL.
Review execution assumptions with adversarial examples. Use a candle that touches both stop and target, a gap beyond the stop, a limit touched only at the extreme, an order below minimum notional, and a leveraged move near liquidation. Write the model's outcome before running the examples. Conservative deterministic behavior is preferable to selectively choosing the favorable path, and unresolved intrabar ambiguity should appear as a limitation or a sensitivity range rather than a precise fictional fill.
credible net result = modeled fills - all execution costs + signed fundingThe exact implementation varies, but each assumption must be visible and stressed. If a small adverse adjustment removes the edge, the strategy has little execution margin.
Avoid metrics and comparisons that hide fragility
Win rate without payoff size, return without drawdown, and annualization from a short period can mislead. Check trade count, distribution, recovery time, concentration by symbol and month, and performance against a simple benchmark. A strategy should not pass because one extraordinary trade covers persistent losses.
- Compare net PnL with gross PnL and a simple benchmark.
- Inspect maximum drawdown and time spent below the prior equity peak.
- Identify the largest trade and recalculate the result without it.
- Split performance by period, symbol, direction, and volatility regime.
- Verify that out-of-sample evidence was not used during design.
Red-team one attractive backtest
Assume the result is overstated and try to find the mechanism before accepting it.
- Draw a timeline showing when each signal input became available and when execution could occur.
- List every tested variant, rejected parameter set, and symbol-selection decision.
- Recalculate with conservative fills, complete costs, and realistic funding.
- Remove the largest winner and split the remaining trades into independent periods.
- Record unresolved limitations and decide whether they require rejection or another test.
Backtest red-team checklist
A result should not advance while any critical item is unknown.
- No signal uses future or not-yet-closed data.
- The number of tried variants and the selection process are documented.
- Universe membership, warm-up data, and missing history are auditable.
- Fills, fees, spread, slippage, funding, leverage, and liquidation are modeled consistently.
- Return is evaluated with drawdown, distribution, benchmark, and untouched data.
Why passing the checklist is not proof
Bias controls reduce known ways to overstate historical performance, but unknown data issues, implementation errors, market changes, and future liquidity remain. A clean backtest is a stronger experiment, not a guarantee. Paper, sandbox, and limited live stages must still be treated as separate tests.
Sources and further reading
Product behavior is checked against SteadyEdge documentation and code; changing exchange and platform details link to current official sources.
- How SteadyEdge evaluates strategiesSteadyEdge
- Why Live And Backtest Results DifferSteadyEdge Help Center
- How Backtest Overfitting in Finance Leads to False DiscoveriesSignificance / Oxford Academic
- Deep Reinforcement Learning for Cryptocurrency Trading: Practical Approach to Address Backtest OverfittingarXiv
Apply the checklist before adding another indicator
Use the SteadyEdge methodology and report warnings to challenge the current result. Fix evidence quality before attempting to improve performance.