Buy an ATM call and ATM put simultaneously — profits from large moves in either direction.
| Symbol | Return % | Sharpe | Max DD % | Win % | Avg/trade % | Trades |
|---|---|---|---|---|---|---|
| SPY | +1392.8% | 0.61 | +101.2% | +68.4% | +73.3% | 19 |
| QQQ | +2322.0% | 0.72 | +91.2% | +73.7% | +122.2% | 19 |
| IWM | +2888.0% | 0.80 | +148.3% | +73.7% | +152.0% | 19 |
| DIA | +2517.7% | 1.07 | +45.7% | +79.0% | +132.5% | 19 |
| Avg | +2280.1% | 0.80 | +96.6% | +73.7% | — | 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 |
|---|---|---|
| dte | 45 | Days to expiration |
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.
# 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