Sell a higher-strike put and buy a lower-strike put for a net credit.
| Parameter | Default | Description |
|---|---|---|
| short_strike_pct | 0.97 | Short put strike (3% OTM) |
| long_strike_pct | 0.92 | Long put strike (8% OTM) |
| dte | 45 | Days to expiration |
A bull put spread sells an OTM put (97% of spot) and buys a further OTM put (92% of spot) for a net credit. Maximum profit is the credit received when both puts expire worthless (underlying stays above the short strike). Maximum loss is the spread width minus credit. The strategy profits in neutral-to-bullish markets and has defined risk on both sides. P&L is expressed as a percentage of the spread width.
# Bull Put Spread: sell K1 put, buy K2 put (K1 > K2)
for entry in monthly_entries:
S = spot_at_entry
K1 = round(S * 0.97 / 5) * 5 # sell put (closer to ATM)
K2 = round(S * 0.92 / 5) * 5 # buy put (further OTM)
T = 45 / 365.25
prem_sell = black_scholes_put(S, K1, T, r, sigma)
prem_buy = black_scholes_put(S, K2, T, r, sigma)
credit = prem_sell - prem_buy
S_exp = spot_at_expiry
payoff_sell = max(0, K1 - S_exp)
payoff_buy = max(0, K2 - S_exp)
pnl = credit - payoff_sell + payoff_buy
pnl_pct = pnl / (K1 - K2) * 100 # % of spread width| Symbol | Return % | Sharpe | Max DD % | Win % | Avg/trade % | Trades |
|---|---|---|---|---|---|---|
| SPY | -15.7% | -0.04 | +95.4% | +94.7% | -0.8% | 19 |
| QQQ | -53.0% | -0.12 | +116.8% | +89.5% | -2.8% | 19 |
| IWM | -204.6% | -0.33 | +255.8% | +79.0% | -10.8% | 19 |
| DIA | +64.5% | 0.15 | +90.6% | +94.7% | +3.4% | 19 |
| Avg | -52.2% | -0.08 | +139.7% | +89.5% | — | 19 |