Two years of data feels like a lot until you count the trades in it. The question I get asked most about backtesting, usually by someone who has just built their first strategy, is how many years of history they need before the results mean anything, and the honest answer is that a year is the wrong unit. A swing strategy that trades once a month produces maybe twenty four round trips in two years, which is a sample that would get laughed out of any other field that uses statistics. A scalper on five minute bars can produce more trades in six weeks than that swing system produces in a decade. Same calendar, completely different amounts of evidence.
So instead of a number, here is the framework I actually use, which comes down to three questions. How many trades does the dataset produce. How many distinct market conditions does it contain. And does the oldest part of it still describe a market that exists. If you can answer those three, the years take care of themselves.
Count trades, not years
A backtest is a sample of your edge, and each completed trade is one observation. With thirty observations, the error bars around your average trade are enormous, and a handful of outliers can carry the entire equity curve. A test I like: remove the three best trades from a thirty trade backtest and look at what remains. If the equity curve collapses without them, those three trades were the strategy, and that should worry you.
My rough working floor is a couple hundred round trips before I take a result seriously, and more is better. That one rule quietly answers the years question for you. An intraday system might clear the threshold with a few months of data. A weekly rebalance might need fifteen years, which it probably cannot get in crypto at all, and that is worth sitting with rather than papering over. Slow strategies are genuinely harder to validate. Most people respond to this by lowering the bar instead of admitting the uncertainty, which is how you end up confident in a system that has been observed two dozen times.
Regimes are what you are actually sampling
Trade count alone is not enough, because trades are not independent draws from some fixed distribution. Markets move through regimes, long stretches where one kind of behavior dominates, and a strategy that prints money in one regime will often bleed in the next. A thousand trades taken entirely inside a grinding uptrend tell you a lot about how your system performs in a grinding uptrend and almost nothing about anything else.
This is why five years of mostly bull market is worth less than eighteen months that span a crash, a dead sideways chop, and a recovery. The five year dataset looks bigger, but it samples one condition over and over. In a sustained uptrend, trend following looks brilliant, buying dips looks brilliant, adding leverage looks brilliant. Chop quietly kills all three, and a dataset without chop in it will never warn you.
The conditions I want to see represented before I trust anything:
- A sustained trend in each direction, because short setups behave nothing like long setups mirrored.
- At least one fast crash, the kind where liquidity vanishes and every asset correlates to one.
- An extended sideways chop, several months where every breakout fails and mean reversion rules.
- A quiet low volatility stretch, which is where plenty of strategies slowly bleed to death on fees.
Crypto has served up all of these in a fairly short span of history. The March 2020 crash was a liquidity event. The 2021 run was a euphoric trend punctured by a violent mid year cascade. 2022 was a slow grind lower that ended in an exchange collapse, and between all of that were long stretches where nothing happened at all. If your dataset only covers one of those textures, your backtest has been trained on one kind of weather.
The halving cycle, and why old data cuts both ways
Bitcoin's supply halving arrives roughly every four years, and historically the market has organized itself loosely around that clock. An expansion after the halving, a blowoff, a deep drawdown, then a long flat stretch of disinterest. I am not going to claim the pattern is a law of nature, and there are reasonable arguments that it weakens as the market matures and the buyer base shifts toward institutions. But as a data coverage heuristic it earns its keep. One full cycle, call it roughly four years, has historically guaranteed you at least one euphoric leg, one brutal drawdown, and one long boring stretch. If you are testing anything correlated to BTC, which in practice is most of crypto, a dataset much shorter than a full cycle is structurally likely to be missing at least one of those conditions.
There is a counterweight, though. Old crypto data describes a market that no longer exists. Order books from the early years were thin, fee schedules and funding mechanics were different, the participant mix has changed completely, and slippage assumptions calibrated to that era are fantasy today. So for anything execution sensitive, ancient data misleads in the opposite direction. The tension resolves in a workable way: use the long history to test whether your signal has directional value across regimes, and use only recent data to calibrate execution, fills, fees, and slippage. A signal that held up across two cycles but only clears costs at today's spreads is still a real finding. A signal that only ever worked when spreads were wide is not.
A checklist before you trust the number
Here is the pass I run before I believe any backtest, including my own.
- Count completed round trips. Under a couple hundred, treat every statistic downstream as provisional, whatever the Sharpe ratio says.
- Label the regimes in your window by hand. Pull up the chart and mark the trends, the crashes, and the chop. If you cannot find at least three distinct conditions, the window is too short or too lucky.
- Break performance out per regime. This is the most useful table you can build, because an aggregate return will happily hide the fact that all the profit came from one six month leg.
- Hold out the most recent chunk of data and never touch it during development, or walk the test forward in windows. Length does not protect you from overfitting if you optimized on the whole thing.
- Ask whether the oldest data still resembles the market you will actually trade, in liquidity, fees, and funding. If it does not, keep it for signal validation and drop it from your execution assumptions.
The failure mode this catches is the most common one I see. Someone tests three years of data, the aggregate numbers look great, and buried inside is the fact that every dollar of profit came from one four month trend while the rest of the window quietly bled. That backtest was long enough by any calendar standard and it still proved very little, because it contained one useful observation about regime performance rather than three years of them.
So when someone asks me how many years they need, I ask back how many kinds of market their data contains. It is a more annoying answer than a number would be, but the number does not exist, and pretending it does is how strategies that have only ever met a bull market end up meeting their first bear with real money attached.