Buy a lower-strike call and sell a higher-strike call for a net debit.
| Parameter | Default | Description |
|---|---|---|
| long_strike_pct | 1.02 | Long call strike (2% OTM) |
| short_strike_pct | 1.07 | Short call strike (7% OTM) |
| dte | 45 | Days to expiration |
A bull call spread buys an OTM call (102% of spot) and sells a further OTM call (107% of spot) for a net debit. Maximum profit is the spread width minus debit (when underlying closes above the short strike). Maximum loss is the debit paid. The strategy profits in moderately bullish markets with defined risk and capped reward. P&L is expressed as a percentage of the debit paid.
# Bull Call Spread: buy K1 call, sell K2 call (K1 < K2)
for entry in monthly_entries:
S = spot_at_entry
K1 = round(S * 1.02 / 5) * 5 # buy call (closer to ATM)
K2 = round(S * 1.07 / 5) * 5 # sell call (further OTM)
T = 45 / 365.25
prem_buy = black_scholes_call(S, K1, T, r, sigma)
prem_sell = black_scholes_call(S, K2, T, r, sigma)
debit = prem_buy - prem_sell
S_exp = spot_at_expiry
payoff_buy = max(0, S_exp - K1)
payoff_sell = max(0, S_exp - K2)
pnl = payoff_buy - payoff_sell - debit
pnl_pct = pnl / debit * 100| Symbol | Return % | Sharpe | Max DD % | Win % | Avg/trade % | Trades |
|---|---|---|---|---|---|---|
| SPY | +2846.8% | 0.62 | +500.0% | +63.2% | +149.8% | 19 |
| QQQ | +4521.3% | 0.74 | +300.0% | +63.2% | +238.0% | 19 |
| IWM | +4286.5% | 0.77 | +600.0% | +57.9% | +225.6% | 19 |
| DIA | +2118.1% | 0.53 | +600.0% | +57.9% | +111.5% | 19 |
| Avg | +3443.2% | 0.67 | +500.0% | +60.5% | — | 19 |