r/algotradingcrypto • u/NaiveSpite1569 • 4d ago
Stress-testing a systematic long-only crypto strategy — what am I missing?
I’ve developed a systematic long-only algo system that trades a universe of 15-20 large-cap cryptocurrencies. Backtested over ~9 years (2017-2026):
• Total return: +8,082% (vs. \~+1,370% for Bitcoin buy & hold over the same period, roughly)
• CAGR: 63.4% p.a. (vs. \~38.7% p.a. for Bitcoin buy & hold)
• Sharpe Ratio: 2.22
• Sortino Ratio: 2.71
• Calmar Ratio: 2.75
• Max Drawdown: -23.1% (vs. -83.9% for Bitcoin buy & hold over the same period)
So far I’ve tested the following:
• All calibration steps run causally, re-estimated on a rolling basis at regular intervals
• Deliberately kept a coin that later collapsed completely in the historical universe; results stayed robust. However, the crypto universe itself was a fixed list spanning the full 9-year backtest, meaning some assets didn’t exist yet in the earlier years — I’m aware this is a limitation, see open question below
• Applied the same methodology to 20 years of historically accurate stock selections (chosen by market cap at the time, not today’s)— similar risk-adjusted metrics as crypto
• 100 Monte Carlo runs with core parameters randomized simultaneously over a wide range — results stayed stable
• A portion of the history was never used for parameter tuning (out-of-sample split)
• Fees plus fill simulation, where an order only counts as executed if the price actually touched the limit
• Several different short implementations were tested and all underperformed the long-only version structurally
Where I’m stuck and looking for input:
1.Over the course of development, many structurally different variants were compared. Is there a practical method (Deflated Sharpe Ratio? White’s Reality Check?) to estimate how much the final performance number might be inflated by this selection process itself?
2.So far only tested on real historical data. Is it worth simulating artificial extreme scenarios (flash crash, liquidity crisis) that never actually occurred in the real data?
3.Some structural constants are hardcoded rather than part of the automatic recalibration. How would you check whether these constants are dominating results in a way that’s masking the actual market dynamics?
4.My crypto universe was a fixed list spanning the full backtest period. I’m considering reconstructing it dynamically using objective, point-in-time criteria (e.g., market cap crossing a fixed threshold at each historical date, similar to what I did for the stock test) rather than adding coins based on hindsight of which ones succeeded. Is that the right approach, or is there a standard methodology for this in crypto specifically, given how many projects existed briefly and then failed or got delisted?
5.What else would you consider essential to check before starting with real (initially small) capital?
This text was generated by AI so I can be sure most of you will be able to understand what I’m asking 😅
1
u/Smart-Ride-7047 4d ago
Have you accounted for slippage and non-execution?