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+1901.0%0.59+137.5%+63.2%+100.1%19
QQQ+3340.1%0.86+144.4%+79.0%+175.8%19
IWM+2931.5%0.77+78.7%+68.4%+154.3%19
DIA+1992.9%0.71+166.1%+79.0%+104.9%19
Avg+2541.4%0.73+131.7%+72.4%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