Long Straddle

Volatility

Buy an ATM call and ATM put simultaneously — profits from large moves in either direction.

Performance across all datasets

SymbolReturn %SharpeMax DD %Win %Avg/trade %Trades
SPY-955.6%-1.33+866.6%+15.8%-50.3%19
QQQ-861.2%-1.16+784.8%+10.5%-45.3%19
IWM-743.5%-1.08+674.2%+15.8%-39.1%19
DIA-779.4%-1.11+766.1%+10.5%-41.0%19
Avg-834.9%-1.17+772.9%+13.2%19
Cumulative P&L % — all symbols
Detail:
Cumulative P&L % — SPY

Risk Profile

Max Profit
Unlimited (call side) / Strike − Debit (put side)
Max Loss
Total debit paid
Breakeven
Strike ± Debit
Outlook
High volatility expected (direction agnostic)

Parameters

ParameterDefaultDescription
dte45Days to expiration

Methodology

A long straddle buys an ATM call and ATM put at the same strike and expiration. It profits when the underlying makes a large move in either direction, exceeding the total premium paid. The strategy is a pure volatility bet — it wins when realised volatility exceeds implied volatility. It loses when the underlying stays near the strike (time decay erodes both legs). Backtested with 45 DTE cycles at the nearest round-number ATM strike.

Implementation

# Long Straddle: buy ATM call + buy ATM put
for entry in monthly_entries:
    S = spot_at_entry
    K = round(S / 5) * 5           # ATM strike
    T = 45 / 365.25

    prem_call = black_scholes_call(S, K, T, r, sigma)
    prem_put  = black_scholes_put(S, K, T, r, sigma)
    debit = prem_call + prem_put

    S_exp = spot_at_expiry
    payoff = max(0, S_exp - K) + max(0, K - S_exp)
    pnl = payoff - debit
    pnl_pct = pnl / debit * 100