Skip to main content

backtest vs live - wtf happened

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
#

Backtest vs Live

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.

Slippage Analysis

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:

  1. optimize on 2020-2021
  2. test on 2022
  3. if 2022 works, optimize on 2020-2022
  4. 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

Related

modeling slippage the right way
the slippage problem is worse than i thought # after 2 weeks live trading (10 total trades), my average slippage is $6.40 per spread
position sizing is killing me - fixing it with code
been up since 3am coding a proper position sizing module. my current approach (fixed 2% risk per trade) is bleeding me out. down another $8k this week. total drawdown now -$48k since january. at this rate i’ll be broke by august.
first week done. slippage is brutal
one week live trading = reality check # algo’s been running 7 days. march 15-17. opened 3 positions total
first algo went live today
three years of paper trading, finally real money # started learning algo trading april 2020 during COVID lockdown. i was 16, bored af at home, discovered r/algotrading and fell into the rabbit hole