
I Found 4 Backtesting Biases in My AI Trading Bot (83% Returns to Realistic)
My AI trading bot was showing 83% annualized returns in backtesting. I knew something was wrong. No strategy consistently returns 83% annualized. So I audited my own backtest engine and found 4 distinct biases inflating results. Bias 1: Signal-at-Close, Entry-at-Close (Lookahead Bias) My original entry logic: # WRONG if signals [ i ] == ' BUY ' : entry_price = bars [ i ]. close # Using bar i's close for bar i's signal A buy signal at the close of bar i cannot be acted on until the open of bar i+1. # CORRECT if signals [ i ] == ' BUY ' : entry_price = bars [ i + 1 ]. open # Enter at next bar's open This single fix knocked returns down substantially. Bias 2: Monte Carlo Over Bars Instead of Trades Shuffling bars destroys time series properties. The fix: shuffle trade P&L outcomes, not bars. # CORRECT trade_pnls = run_backtest ( bars ) random . shuffle ( trade_pnls ) # Bootstrap trades, not bars portfolio_return = sum ( trade_pnls ) Bias 3: Survivorship Bias in Universe Selection Testing
Continue reading on Dev.to Python
Opens in a new tab



