Daily Iron Butterfly — SPY
SPY · Net-Credit · Non-Directional · Mon–Thu Daily
📋 Strategy Overview
A neutral, high-premium-selling strategy that profits when SPY closes very close to the ATM strike at exit. All four legs share the same ATM centre strike, making this a higher-reward but tighter-range trade than the iron condor. Four option legs are opened each weekday morning (Mon–Thu) and closed at 14:20 ET the same day.
The combined short put and call at ATM form an ATM straddle — maximum profit is collected if SPY pins exactly at the strike. The long wings at ±$10 cap the maximum loss. Best conditions are low-volatility days where SPY is expected to drift in a $2–4 range around the open price.
⚙️ Parameters
Max profit per trade: net_credit × 100 × 40
Max loss per trade: (10 − net_credit) × 100 × 40
🕐 Schedule
| Event | When | Days |
|---|---|---|
| Entry open | 9:40 ET | Mon–Thu |
| Entry cutoff | 12:00 ET | Mon–Thu |
| Exit | 14:20 ET | Mon–Thu |
| Auto-exit (profit) | Any time | Mon–Thu |
| Auto-exit (stop) | Any time | Mon–Thu |
| Heartbeat | Every 5 min | Always |
Options expiry is always the next Friday (nearest weekly expiry).
🚦 Auto-Exit Rules
Profit Target
Stop Loss
Monitor Interval
🔍 Trade Filters
All filters are evaluated from live option prices at entry time. The butterfly requires tighter filters than the condor because the profit zone is much narrower — any move more than the credit away from ATM erodes the position significantly.
| # | Filter | Value | Rationale |
|---|---|---|---|
| 1 | MIN_CREDIT_RATIO | 0.20 | Net credit must be ≥ 20% of wing width ($2.00 on a $10 wing) — the butterfly requires substantial premium collection since the profit zone is narrow |
| 2 | MIN_CREDIT_ABS | $1.00 | Absolute minimum credit per share — ensures adequate compensation for the short straddle risk |
| 3 | MIN_STRADDLE_PCT | 0.75% | Skip if the ATM straddle is < 0.75% of SPY — IV too low, premium won't cover the expected move |
| 4 | MAX_STRADDLE_PCT | 1.20% | Skip if the ATM straddle is > 1.20% of SPY — market pricing in a move that will likely break the $10 wing |
| 5 | MAX_GAP_PCT | 1.0% | Skip if the overnight gap exceeds 1% — gap opens place SPY away from the ATM strike before entry, reducing the probability of pinning |
| 6 | MAX_PREV_DAY_MOVE | 0.45× wing ($4.50) | Skip if the prior session's intraday range exceeded 45% of the wing width — directional momentum from the prior session tends to carry over |
Key Calibration Notes
The MIN_CREDIT_RATIO = 0.20 (vs 0.05 for the condor) reflects the higher premium requirement needed to make the narrow-zone payoff worthwhile. The butterfly has a much narrower profit zone than the condor — a $3 move away from ATM by 14:20 can turn a winner into a loser.
🔄 Iron Butterfly vs Iron Condor
| Aspect | Iron Butterfly (SPY) | Iron Condor (SPY) |
|---|---|---|
| Short strikes | Both at ATM | ATM ± $10 |
| Profit zone | Very narrow (ATM ± credit) | Wider (ATM ± $10 ± credit) |
| Max credit collected | Higher (ATM straddle premium) | Lower (OTM strangle premium) |
| Win probability | Lower | Higher |
| Risk/reward ratio | More favourable | Lower max credit per trade |
| MIN_CREDIT_RATIO | 0.20 | 0.05 |
| Best used when | Low IV, low momentum, expected drift <$3 | Moderate IV, range-bound days |
daily_iron_condor_spy.py) on days where this script's filters reject the trade — the condor's wider body provides more room for a moderate move.
⚠️ Risk Profile
Max Profit
Max Loss
Breakeven (up)
Breakeven (down)
Wing Width
Intraday Only
Risk Notes
💰 Live P&L by Option Symbol
Realized P&L breakdown per OCC symbol — all closed round-trip SPY option legs since deployment.
Realized P&L by Symbol
| OCC Symbol | P&L | Legs | Assessment |
|---|---|---|---|
| Load butterfly_spy_trades_log.csv to populate | |||
Performance Breakdown
Profit Factor
Avg Hold
📂 Open SPY Option Positions
Active SPY option legs currently held in the AIV011P account with unrealized P&L.
| OCC Symbol | Qty | Avg Entry | Current Price | Market Value | Unrealized P&L |
|---|---|---|---|---|---|
| Load butterfly_spy_trades_log.csv to populate | |||||
⚠️ Risk Assessment
Max Drawdown
Max Capital at Risk
Max Potential Loss
Max Position Notional
Min Position Notional
Avg Position Notional
Gross Win
Gross Loss
Avg Win
Avg Loss
Account Snapshot (SPY options scope)
| Metric | Value |
|---|---|
| Load butterfly_spy_trades_log.csv to populate | |
📋 Recent SPY Option Round-Trip Trades
Last 20 completed trades from butterfly_spy_trades_log.csv.
| Expiry | ATM | SPY Price | Net Credit | Max Profit | Max Loss | EV | Close P&L | Close Reason | Timestamp |
|---|---|---|---|---|---|---|---|---|---|
| Load butterfly_spy_trades_log.csv to populate | |||||||||
📁 Project Structure
Core Scripts
| File | Purpose |
|---|---|
daily_iron_butterfly_spy.py | Main trading script — opens/closes SPY butterflies daily Mon–Thu |
backtests/daily_iron_butterfly_spy_backtest.py | Historical backtest |
.envNP2 | API keys (not committed to git) |
Generated Outputs
| File | Purpose |
|---|---|
butterfly_spy_trades_log.csv | Appended trade log (auto-created by script) |
Running the Script
screen -S daily-iron-butterfly-spy -d -m bash -c \
'source .venv/bin/activate && python3 daily_iron_butterfly_spy.py >> logs/daily_iron_butterfly_spy.log 2>&1'
# Check status
screen -ls | grep daily-iron-butterfly-spy
tail -f logs/daily_iron_butterfly_spy.log
📋 Summary
AIV011P · SPY Daily Iron Butterfly
Realized P&L · SPY options only · Paper Trading · Updated on demand