three weeks live = enough data for initial validation #
march 15 - march 30 (15 trading days)
time to see if reality matches backtest
the numbers #
live trading results:
- total trades: 12
- wins: 9
- losses: 3
- win rate: 75%
- average win: $387
- average loss: $128
- net P&L: $2,099
- return on $400k account: 0.52%
- annualized (if sustained): 12.5%
- sharpe ratio: 2.13
backtest prediction (march 2023):
- expected trades: 14
- expected win rate: 72%
- expected return: 0.48%
- expected sharpe: 1.64
performance vs prediction #
| metric | backtest | actual | difference |
|---|---|---|---|
| trades | 14 | 12 | -14% |
| win rate | 72% | 75% | +4% |
| monthly return | 0.48% | 0.52% | +8% |
| sharpe ratio | 1.64 | 2.13 | +30% |
beating backtest by decent margin
probably luck. 3 weeks isn’t enough to validate but it’s encouraging
why actual sharpe is higher #
sharpe ratio = (return - risk_free_rate) / volatility
my returns are slightly higher (0.52% vs 0.48%)
but more importantly: volatility is lower
backtest assumed 8% monthly volatility based on 2021-2022 data
actual volatility march 15-30: 5.2%
lower vol = higher sharpe even with similar returns
trade-by-trade breakdown #
9 winners:
- march 15: $430 (50% target hit, 9 days)
- march 16: $395 (50% target hit, 8 days)
- march 17: $285 (50% target hit, 6 days)
- march 21: $445 (50% target hit, 7 days)
- march 22: $380 (50% target hit, 6 days)
- march 23: $410 (50% target hit, 5 days)
- march 27: $325 (2 DTE close, 4 days)
- march 28: $360 (50% target hit, 5 days)
- march 29: $455 (50% target hit, 8 days)
3 losses:
- march 17: -$95 (stopped out, spread widened against me)
- march 20: -$135 (stopped out, volatility spike)
- march 24: -$150 (stopped out, tested short strike)
average hold time for winners: 6.4 days average hold time for losers: 2.1 days
losers get stopped faster (good). winners have time to work
slippage tracking #
total slippage march 15-30: $238
12 trades × avg $6.40 slippage per spread × 10 contracts = $768 theoretical
actual was $238
way better than model predicted
why? i started using limit orders on march 22 instead of market orders
saves $3-4 per spread but adds execution risk (sometimes don’t get filled)
got filled on 8 out of 10 limit orders. 2 times had to cancel and re-submit at market
net result: lower slippage without missing too many trades
position sizing validation #
been risking 2.5% per trade ($1,000 max loss per spread, 10 contracts)
max portfolio heat hit: 12.5% (5 positions open simultaneously on march 23)
within my 15% limit. good
largest loss was $150 = 0.0375% of account
even if i hit 5 max losses in a row (unlikely): 0.1875% drawdown
survivable
what’s working #
- 50% profit target - hitting it 75% of the time
- IV rank > 40 filter - keeping me out of low premium environments
- 2 DTE exit - prevents holding into risky expiration
- limit orders - reducing slippage meaningfully
- position sizing - keeping losses small
what needs improvement #
- stop loss discipline - 3 losses were all near max loss ($150). could’ve cut earlier
- trade frequency - only 12 trades in 15 days. backtest assumed 14. need to be more aggressive when setups appear
- slippage model - still predicting $6.40 average but actual is $4.80 with limit orders. need to update
next week priorities #
- update slippage model with limit order assumptions
- tighten stop loss from -200% to -150% (exit when spread doubles, not when it hits max loss)
- look for more trade opportunities - might be leaving setups on table
march isn’t over yet (one more day) but this is solid progress
if i can maintain sharpe > 1.8 over next 3 months that would validate the strategy for real
-AK