Long Strangle

Volatility

Buy an OTM put and OTM call — cheaper than a straddle, needs a bigger move to profit.

Performance across all datasets

SymbolReturn %SharpeMax DD %Win %Avg/trade %Trades
SPY+17837.7%0.47+500.0%+36.8%+938.8%19
QQQ+32528.1%0.65+400.0%+63.2%+1712.0%19
IWM+23900.5%0.74+200.0%+52.6%+1257.9%19
DIA+25921.8%0.33+500.0%+31.6%+1364.3%19
Avg+25047.0%0.55+400.0%+46.1%19
Cumulative P&L % — all symbols
Detail:
Cumulative P&L % — SPY

Risk Profile

Max Profit
Unlimited (call side) / K_put − Debit (put side)
Max Loss
Total debit paid
Breakeven
K_put − Debit or K_call + Debit
Outlook
High volatility expected (direction agnostic)

Parameters

ParameterDefaultDescription
put_strike_pct0.95Put strike (5% OTM)
call_strike_pct1.05Call strike (5% OTM)
dte45Days to expiration

Methodology

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.

Implementation

# 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