Buy an OTM put and OTM call — cheaper than a straddle, needs a bigger move to profit.
| Symbol | Return % | Sharpe | Max DD % | Win % | Avg/trade % | Trades |
|---|---|---|---|---|---|---|
| SPY | -1363.6% | -1.28 | +1277.7% | +10.5% | -71.8% | 19 |
| QQQ | -1364.3% | -1.65 | +1272.3% | +10.5% | -71.8% | 19 |
| IWM | -1185.7% | -0.99 | +1085.7% | +15.8% | -62.4% | 19 |
| DIA | -1255.3% | -0.83 | +1155.3% | +15.8% | -66.1% | 19 |
| Avg | -1292.2% | -1.19 | +1197.7% | +13.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 |
|---|---|---|
| put_strike_pct | 0.95 | Put strike (5% OTM) |
| call_strike_pct | 1.05 | Call strike (5% OTM) |
| dte | 45 | Days to expiration |
A long strangle buys an OTM put (95% of spot) and an OTM call (105% of spot). It is cheaper than a straddle but requires a larger underlying move to profit. Like the straddle, it is a volatility bet that wins when realised volatility exceeds implied. The wider strikes reduce the debit but widen the breakeven range. Backtested with 45 DTE cycles.
# Long Strangle: buy OTM put + buy OTM call
for entry in monthly_entries:
S = spot_at_entry
K_put = round(S * 0.95 / 5) * 5 # 5% OTM put
K_call = round(S * 1.05 / 5) * 5 # 5% OTM call
T = 45 / 365.25
prem_put = black_scholes_put(S, K_put, T, r, sigma)
prem_call = black_scholes_call(S, K_call, T, r, sigma)
debit = prem_put + prem_call
S_exp = spot_at_expiry
payoff = max(0, K_put - S_exp) + max(0, S_exp - K_call)
pnl = payoff - debit
pnl_pct = pnl / debit * 100