my backtests showed +20% annual returns. i’m down 12.75% after 3 months live.
something is very fucking wrong.
the numbers don’t match #
Figure 1: Backtest returns (2020-2022 data) vs actual live performance (2023). Complete opposite.
backtests: steady positive returns every month live trading: steady losses every month
i thought maybe just bad luck in Q1 2023. but this gap is too big to be variance. this is systematic failure.
what i fucked up #
spent today analyzing every difference between backtest and live. found 5 major issues:
1. slippage assumptions
backtest assumed 1 tick slippage on options. reality is more like 3-5 ticks during volatile periods.
Figure 2: My actual slippage is 3x what i modeled. Killing returns.
on a $100 option, that’s $0.30 vs $0.90-$1.50 slippage. multiply by 200+ trades per month and suddenly i’m down $2k-3k just from execution costs i didn’t model.
2. overfitting to 2020-2022 bull market
all my backtest data is from covid recovery bull market. 2023 is completely different regime:
- higher rates (fed funds 0% → 4.5%)
- higher vol (VIX avg 16 → 22)
- sector rotation (tech bleeding, energy pumping)
my strategies optimized for low vol, low rate environment. they’re dogshit in current market.
3. commission assumptions
thought IB options were $0.65/contract. they are. but i didn’t account for:
- exchange fees ($0.04-0.12 per contract)
- regulatory fees ($0.02 per contract)
- clearing fees
- total: ~$1.00-1.20 per contract all-in
again, multiply by 200 contracts/month = $200-240 i didn’t model
4. fill assumptions
backtested using mid-price fills. LMAO.
in live trading i’m lucky to get filled at bid when selling, ask when buying. sometimes worse during fast markets.
this alone probably costs 0.5-1% per trade. on 50 trades/month that’s 25-50% of my returns gone.
5. data quality
used free alpha vantage data for backtests. missing bars, bad greeks, stale prices.
switched to polygon.io for live trading ($199/month). data is WAY cleaner but also shows my strategies were fitted to noisy data that no longer matches reality.
the overfit problem #
here’s the brutal truth: i probably optimized my strategies to fit the noise in my shitty backtest data.
classic overfit mistake. my sharpe ratio of 2.1 in backtests? that was curve-fitted garbage.
real sharpe is probably 0.3-0.5 if i’m lucky. currently it’s -0.8 because i’m losing money.
what i’m doing different #
walk-forward testing: instead of optimizing on all 2020-2022 data, now i:
- optimize on 2020-2021
- test on 2022
- if 2022 works, optimize on 2020-2022
- test on Q1 2023 paper trading
this would’ve caught the regime change problem.
realistic costs: new backtest assumptions:
- slippage: 4 ticks average (conservative)
- commissions: $1.20 per contract all-in
- fills: always at bid/ask, never mid
- realistic order sizes (no assuming infinite liquidity)
out-of-sample data: saving 20% of data for final validation. never touching it until strategy is 100% locked.
regime filters: adding VIX filter. if VIX > 25, reduce position size or pause strategies that assume low vol.
starting over basically #
these changes dropped my backtest sharpe from 2.1 to 0.6.
that’s… more realistic but also depressing. means i need completely new strategies or accept that 10-15% annual returns is more realistic than the 50%+ i was dreaming about.
2:31am and i should sleep but gonna rerun backtests with new assumptions. probably won’t finish until 5am but whatever.
live and learn. $51k tuition so far.
-AK