How to Read Backtest Results: What to Check Before Returns, and Common Pitfalls
Maximum drawdown, costs, look-ahead bias and overfitting: the things to check before you trust the numbers a backtest gives you.
📚 Chart Analysis, Properly From the Start · 31/33·⏱ About 7min read·Information updated 2026-09-23
📋 Key facts
Key
A record of what following the rules would have done in the past, not a forecast
First
Check max drawdown, trade count and results versus holding before the return
Costs
Around 0.1% per fill in fees; the more often you trade, the more they eat into results
Pitfalls
Look-ahead bias, overfitting, survivorship bias, a single bull run
The question a backtest answers
A backtest applies a fixed set of trading rules to past prices exactly as written. The question it answers is "what would have happened if I had followed these rules back then," not "will it keep working." So before looking at any single number in the results table, ask how close that number is to chance. This site's Crypto Strategy Backtester runs six rules on real historical Binance candles and shows the results side by side with simply holding.
The numbers in the results table
Total return grows with the length of the period, so results over different periods are compared by annualized return (CAGR). A high win rate can still lose money if one losing trade is large, and a low win rate can still make money if the winning trades are large. That is why the win rate only means something when read with the payoff ratio. Market exposure is the share of time a position was held. A rule with 30% exposure sat in cash for the other 70%, so keep that difference in mind when comparing its return and drawdown with holding.
Profit factor: total profit of winning trades ÷ total loss of losing trades
Market exposure: bars spent in a position ÷ all bars
Compare with holding, and include costs
A rule's result only means something when compared with buying and simply holding over the same period. In a period when the coin rose sharply, most buying rules make a profit. Costs have to go in too. Binance's default spot fee is 0.1% per fill, and on top of that comes slippage, where an order fills at a worse price than expected. If you buy and sell your whole balance each time, 200 fills at 0.1% each cost about 18% of your capital, and at 0.15% each about 26%. The example in the figure has only 49 fills, yet its final equity of 168 before costs, above holding (165), drops to 157, below holding, once 0.15% is subtracted per fill. You can compare against buying in installments with the Crypto DCA Simulator.
Illustration: equity curves (starting at 100) from applying the rule "buy at the next bar's open when the close moves above the 5-bar moving average, sell when it moves below" to 240 bars of randomly generated prices (picked from several generated series). Subtracting 0.15% per fill (0.1% fee + 0.05% slippage) across 49 fills turns a final value that was above holding into one below it.
Look at maximum drawdown (MDD) first
Maximum drawdown is the deepest percentage your equity fell from its peak up to that point. Even with the same final return, a curve that dropped 35% along the way and one that dropped 10% are entirely different experiences. Losses and recoveries are asymmetric: after losing 20% you need a 25% gain to get back to even, after 35% about 54%, and after 50% a full 100%. Also look at how long it took to get back above the old peak. In the figure's example, the MDD of the buy-and-hold curve was 35%, while the rule's curve with costs had an MDD of 11% over the same period.
Illustration: the "Buy & hold" curve from the figure above. The deepest drop from the running peak is the maximum drawdown (MDD), here -35%. How long it took to get back above the peak is worth checking too.
Look-ahead bias: information you did not have yet
Look-ahead bias is the mistake of basing a decision on information that could not have been known at that moment. The most common form is to judge a signal on a bar's close and assume the trade filled at that same close. The close is only known once the bar has ended, so if you decide on a closed bar's close, the fill has to be set at the next bar's open. This site's backtester does exactly that. Two other mistakes of the same kind are assuming you know a day's high and low when that day begins, and using a swing high at the bar where it formed even though it is only confirmed once the bars to its right have closed.
Overfitting: the more you try, the more likely you are to pick luck
Try dozens of settings such as periods and multipliers, and one of them will produce a good result by chance. The moment you pick that setting, the results table reflects the act of picking rather than the skill of the rule. The figure above was made that way. We generated several random price series and picked one that suited the explanation, and even though these were random prices, where a rule for timing buys and sells has no reason to work, the result was a curve that looked better than holding before costs. To check for this, see whether values next to the chosen setting also do similarly well, and whether the result holds over other periods and on other coins.
Survivorship bias and dependence on market regime
If you test the past using only coins that trade today, the coins that vanished or were delisted in the meantime drop out, and a sample made only of survivors flatters the results. Choosing "today's top coins by market cap" as your universe has the same problem, since it amounts to picking coins while already knowing they rose sharply in the meantime. This course's own statistics were also measured on 10 large coins that are still around, so they share this limitation. Market regime matters too. Across all 29,746 daily bars of those 10 coins (from each coin's listing date to September 2026), the return from a bar's close to the close 20 bars later averaged +4.62%, but the median was +0.15% and the share that rose was 50.4%. In other words, a small number of large rallies pulled the average up, and the result can change a great deal depending on whether those few fall inside the test period. Split the period into segments to check that the result does not hinge on a single bull run.
With few trades, the numbers are unstable
With only ten or so closed trades, the win rate and profit factor swing widely on a few chance outcomes. In this course's measurements, golden crosses on Binance BTC daily candles (the SMA50 crossing above the SMA200) happened only 9 times from August 2017 to September 2026. Five bars later price was higher in 1 of 9 cases (11.1%), and twenty bars later in 6 of 8 (75.0%). The figures for all bars were 53.1% and 53.7% respectively. The same signal looks like its opposite just by changing when you measure. With a small sample, hold off on conclusions whether the result looks good or bad; the next step is to raise the trade count by extending the period or adding coins.
What even a good backtest does not tell you
Even a backtest that avoids every pitfall shows only one path the past happened to take. When the character of the market changes, a rule that worked well may stop working for a while, and in real trading it is harder than you would expect to stick to the rule through a string of losses. It is more accurate to see a backtest as a tool that shows a rule's character in advance: how often it trades and how deep its drawdowns go. If you want to test your own eye, the Chart Prediction Quiz lets you compare your hit rate with a random-guess baseline.
🌍 Search the web for this
Each button runs this keyword on that search engine