Sell a higher-strike put and buy a lower-strike put for a net credit.
| Symbol | Return % | Sharpe | Max DD % | Win % | Avg/trade % | Trades |
|---|---|---|---|---|---|---|
| SPY | +447.7% | 1.04 | +68.3% | +94.7% | +23.6% | 19 |
| QQQ | +541.9% | 1.04 | +101.9% | +89.5% | +28.5% | 19 |
| IWM | +343.6% | 0.59 | +155.3% | +79.0% | +18.1% | 19 |
| DIA | +309.7% | 0.68 | +94.8% | +89.5% | +16.3% | 19 |
| Avg | +410.8% | 0.84 | +105.1% | +88.2% | — | 19 |
What this shows: Overlayed cumulative return series for this strategy across all available symbols.
How to read it: Look for symbols with smoother curves and faster recoveries to assess whether performance is broad-based or driven by a few outliers.
What this shows: Single-symbol cumulative return path for SPY.
How to read it: Use this detailed view to inspect entry/exit behavior over time and whether drawdowns cluster in specific periods.
| 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