Daily Iron Condor — QQQ
QQQ · Net-Credit · Non-Directional · Mon–Thu Daily
📋 Strategy Overview
A neutral, premium-selling strategy with two short OTM spreads — a bull put spread and a bear call spread — bracketing the ATM price. Four option legs are opened each weekday morning (Mon–Thu) and closed at 14:20 ET the same day. The iron condor profits when QQQ stays between the two short strikes at expiry.
The condor's wider profit zone (vs the iron butterfly) comes at the cost of lower premium — but provides a significantly higher probability of profit, especially on range-bound, moderate-IV days.
Strike Construction
lp_str = atm - SHORT_SPREAD - WING_WIDTH # e.g. 485 at QQQ=500
sp_str = atm - SHORT_SPREAD # e.g. 490
sc_str = atm + SHORT_SPREAD # e.g. 510
lc_str = atm + SHORT_SPREAD + WING_WIDTH # e.g. 515
⚙️ Parameters
Max profit per trade: net_credit × 100 × 40
Max loss per trade: (5 − 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. QQQ requires tighter straddle cap (1.0%) than SPY (1.5%) due to higher intraday volatility in dollar terms.
| # | Filter | Value | Rationale |
|---|---|---|---|
| 1 | MIN_CREDIT_RATIO | 0.05 | Net credit must be ≥ 5% of wing width ($0.25 on a $5 wing) — condor short strikes are OTM so premium is lower than the butterfly |
| 2 | MIN_CREDIT_ABS | $0.25 | Absolute minimum credit per share — below this level the risk/reward is unfavourable |
| 3 | MIN_STRADDLE_PCT | 0.10% | Skip if the ATM straddle is < 0.10% of QQQ — IV so low that OTM strikes have near-zero premium |
| 4 | MAX_STRADDLE_PCT | 1.00% | Skip if the ATM straddle is > 1.00% of QQQ — market pricing in a move that may breach the $10 short strikes (tighter than SPY's 1.50%) |
| 5 | MAX_GAP_PCT | 1.0% | Skip if the overnight gap exceeds 1% — gap opens place QQQ off-centre relative to the ±$10 profit zone |
| 6 | MAX_PREV_DAY_MOVE | 1.50× wing (>$7.50) | Skip if the prior session's intraday range exceeded 1.50× the wing width — QQQ can sustain multi-day streaks of large moves (higher threshold than SPY's 0.45×) |
| 7 | LOW_IV_HIGH_RVOL | straddle < 0.80% and avg5 > $4.50 | Skip days where the straddle appears calm but the 5-day average realised move has been >$4.50 — IV-calm days with high realised vol are traps for iron condors |
Filter Calibration History
Historical losses that informed the current filter thresholds:
| Date | Loss | Root Cause | Filter Added / Tightened |
|---|---|---|---|
| 2026-03-09 | −$15,400 | Straddle 1.72% — QQQ pricing a large move at entry | MAX_STRADDLE_PCT → 1.00% |
| 2026-03-23 | −$3,160 | Straddle 0.98% — borderline case | MAX_STRADDLE_PCT confirmation |
| 2026-03-30 | −$2,960 | Straddle 1.70% — elevated IV at entry | MAX_STRADDLE_PCT tightened further |
| 2026-03-31 | −$3,680 | Straddle 1.19% — prior-day tariff volatility | MAX_STRADDLE_PCT boundary |
| 2026-04-07 | −$3,080 | Straddle 1.03% — post-tariff vol regime | MAX_STRADDLE_PCT boundary |
| 2026-04-14 | −$3,760 | Prior day QQQ +$8.49 (1.70× wing) — momentum carry | MAX_PREV_DAY_MOVE → 1.50× |
| 2026-04-02 | −$3,760 | Straddle 0.76% appeared calm; avg5 move = $6.50 (1.30× wing) | LOW_IV_HIGH_RVOL (straddle<0.80% AND avg5>$4.50) |
🔄 Iron Condor vs Iron Butterfly
| Aspect | Iron Condor (QQQ) | Iron Butterfly (QQQ) |
|---|---|---|
| Short strikes | ATM ± $10 | Both at ATM |
| Profit zone | Wider (ATM ± $10 ± credit) | Very narrow (ATM ± credit) |
| Max credit | Lower (OTM premium) | Higher (ATM straddle premium) |
| Win probability | Higher | Lower |
| MIN_CREDIT_RATIO | 0.05 | 0.20 |
| MAX_STRADDLE_PCT | 1.00% | 1.20% |
daily_iron_butterfly_qqq.py) which can trade up to 1.20%.
⚠️ Risk Profile
Max Profit
Max Loss
Upper Breakeven
Lower Breakeven
Short Spread
Wing Width
Risk Notes
MAX_STRADDLE_PCT for QQQ is tighter (1.00% vs 1.50% for SPY) and the MAX_PREV_DAY_MOVE threshold is higher (1.50× wing vs 0.45× for SPY) to account for QQQ's larger dollar swings.
💰 Live P&L by QQQ 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 | Trades | Assessment |
|---|---|---|---|
| Load roundtrips_report_nikkip2_qqq.csv to populate | |||
Performance Breakdown
Profit Factor
Avg Hold
📂 Open QQQ Option Positions
Active QQQ option legs currently held in the Np2 account with unrealized P&L.
| OCC Symbol | Type | Qty | Entry $ | Capital at Risk | Unrealized P&L |
|---|---|---|---|---|---|
| Load roundtrips_report_nikkip2_qqq.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 — Np2)
| Metric | Value |
|---|---|
| Load roundtrips_report_nikkip2_qqq.csv to populate | |
📋 Recent QQQ Round-Trip Trades
Last 20 completed round-trip option legs from roundtrips_report_nikkip2_qqq.csv.
| OCC Symbol | Type | Close Type | Open Date | Close Date | Qty | Entry $ | Exit $ | Capital at Risk | Max Loss | P&L | Hold |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Load roundtrips_report_nikkip2_qqq.csv to populate | |||||||||||
📁 Project Structure
Core Scripts
| File | Purpose |
|---|---|
daily_iron_condor_qqq.py | Main trading script — opens/closes QQQ condors daily Mon–Thu |
backtests/daily_iron_condor_qqq_backtest.py | Historical backtest |
.envNP2 | API keys (not committed to git) |
Generated Outputs
| File | Purpose |
|---|---|
condor_qqq_trades_log.csv | Appended strategy trade log |
roundtrips_report_nikkip2_qqq.csv | Round-trip P&L report (from download script) |
Running the Script
screen -S daily-iron-condor-qqq -d -m bash -c \
'source .venv/bin/activate && python3 daily_iron_condor_qqq.py >> logs/daily_iron_condor_qqq.log 2>&1'
# Check status
screen -ls | grep daily-iron-condor-qqq
tail -f logs/daily_iron_condor_qqq.log
📋 Summary
Np2 · QQQ Daily Iron Condor
Realized P&L · QQQ options only · Paper Trading · Updated on demand