Sell an OTM put spread and OTM call spread simultaneously for a net credit.
| Parameter | Default | Description |
|---|---|---|
| put_short_pct | 0.95 | Short put strike (5% OTM) |
| put_long_pct | 0.90 | Long put wing (10% OTM) |
| call_short_pct | 1.05 | Short call strike (5% OTM) |
| call_long_pct | 1.10 | Long call wing (10% OTM) |
| dte | 45 | Days to expiration |
An iron condor combines a bull put spread and a bear call spread. It sells a 95% put, buys a 90% put, sells a 105% call, and buys a 110% call — all at the same expiration. The net credit is the maximum profit, achieved when the underlying stays between the two short strikes. Maximum loss is the wider spread width minus credit. It is the classic range-bound, high-probability income strategy. Backtested with 45 DTE cycles.
# Iron Condor: sell put spread + sell call spread
for entry in monthly_entries:
S = spot_at_entry
K_ps = round(S * 0.95 / 5) * 5 # sell put
K_pb = round(S * 0.90 / 5) * 5 # buy put (wing)
K_cs = round(S * 1.05 / 5) * 5 # sell call
K_cb = round(S * 1.10 / 5) * 5 # buy call (wing)
T = 45 / 365.25
credit = (
black_scholes_put(S, K_ps, T, r, sigma)
- black_scholes_put(S, K_pb, T, r, sigma)
+ black_scholes_call(S, K_cs, T, r, sigma)
- black_scholes_call(S, K_cb, T, r, sigma)
)
S_exp = spot_at_expiry
put_loss = max(0, K_ps - S_exp) - max(0, K_pb - S_exp)
call_loss = max(0, S_exp - K_cs) - max(0, S_exp - K_cb)
pnl = credit - put_loss - call_loss
max_risk = max(K_ps - K_pb, K_cb - K_cs)
pnl_pct = pnl / max_risk * 100| Symbol | Return % | Sharpe | Max DD % | Win % | Avg/trade % | Trades |
|---|---|---|---|---|---|---|
| SPY | -248.7% | -0.40 | +286.3% | +68.4% | -13.1% | 19 |
| QQQ | -396.1% | -0.61 | +418.7% | +52.6% | -20.9% | 19 |
| IWM | -630.6% | -0.88 | +609.7% | +31.6% | -33.2% | 19 |
| DIA | -160.9% | -0.26 | +216.0% | +68.4% | -8.5% | 19 |
| Avg | -359.1% | -0.54 | +382.7% | +55.3% | — | 19 |