Daily Iron Butterfly — QQQ
QQQ · Net-Credit · Non-Directional · Mon–Thu Daily
📋 Strategy Overview
A neutral, high-premium-selling strategy that profits when QQQ 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 QQQ pins exactly at the strike. The long wings at ±$10 cap the maximum loss.
⚙️ 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.
| # | 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 since the profit zone is narrow |
| 2 | MIN_CREDIT_ABS | $1.00 | Absolute minimum credit per share |
| 3 | MIN_STRADDLE_PCT | 0.75% | Skip if the ATM straddle is < 0.75% of QQQ — IV too low, premium won't compensate for the risk |
| 4 | MAX_STRADDLE_PCT | 1.20% | Skip if the ATM straddle is > 1.20% of QQQ — market pricing in a move that will likely breach the $10 wing |
| 5 | MAX_GAP_PCT | 1.0% | Skip if the overnight gap exceeds 1% — gap opens place QQQ off-centre before entry |
| 6 | MAX_PREV_DAY_MOVE | 0.45× wing ($4.50) | Skip if the prior session's intraday range exceeded 45% of the wing — momentum tends to persist |
| 7 | LOW_IV_HIGH_RVOL | straddle < 1.20% and avg5 > $3.50 | Skip days where IV appears calm but realized vol over the past 5 sessions has averaged >$3.50/day intraday — avoids selling low premium into a high-vol regime |
Filter Calibration Note
The LOW_IV_HIGH_RVOL filter is particularly important for QQQ butterflies because QQQ's dollar volatility can compress on a single quiet session even after a week of large moves. Example: Feb 12, 2026 — straddle compressed to ~1.075% but the prior 5-day average move was ~$4.37, a dangerous combination for the short straddle.
🔄 Iron Butterfly vs Iron Condor
| Aspect | Iron Butterfly (QQQ) | Iron Condor (QQQ) |
|---|---|---|
| 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 |
| Best used when | Low IV, low momentum days | Moderate IV, range-bound days |
daily_iron_condor_qqq.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 QQQ option legs since deployment.
Realized P&L by Symbol
| OCC Symbol | P&L | Legs | Assessment |
|---|---|---|---|
| Load butterfly_qqq_trades_log.csv to populate | |||
Performance Breakdown
Profit Factor
Avg Hold
📂 Open QQQ Option Positions
Active QQQ 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_qqq_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 (QQQ options scope)
| Metric | Value |
|---|---|
| Load butterfly_qqq_trades_log.csv to populate | |
📋 Recent QQQ Option Round-Trip Trades
Last 20 completed trades from butterfly_qqq_trades_log.csv.
| Expiry | ATM | QQQ Price | Net Credit | Max Profit | Max Loss | EV | Close P&L | Close Reason | Timestamp |
|---|---|---|---|---|---|---|---|---|---|
| Load butterfly_qqq_trades_log.csv to populate | |||||||||
📁 Project Structure
Core Scripts
| File | Purpose |
|---|---|
daily_iron_butterfly_qqq.py | Main trading script — opens/closes QQQ butterflies daily Mon–Thu |
backtests/daily_iron_butterfly_qqq_backtest.py | Historical backtest |
.envNP2 | API keys (not committed to git) |
Generated Outputs
| File | Purpose |
|---|---|
butterfly_qqq_trades_log.csv | Appended trade log (auto-created by script) |
Running the Script
screen -S daily-iron-butterfly-qqq -d -m bash -c \
'source .venv/bin/activate && python3 daily_iron_butterfly_qqq.py >> logs/daily_iron_butterfly_qqq.log 2>&1'
# Check status
screen -ls | grep daily-iron-butterfly-qqq
tail -f logs/daily_iron_butterfly_qqq.log
📋 Summary
AIV011P · QQQ Daily Iron Butterfly
Realized P&L · QQQ options only · Paper Trading · Updated on demand