Daily Iron Condor — QQQ

QQQ · Net-Credit · Non-Directional · Mon–Thu Daily

Neutral Daily · Mon–Thu 40 Contracts / Leg 4-Leg Structure
Total Realized P&L
Loading…
Win Rate
Condor Cycles
Closed round-trips
Profit Factor
Gross win / gross loss
Avg Hold Time
Minutes per leg
Max Drawdown
Cumulative low

📋 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.

Long putBUY TO OPENATM − 15 (e.g. $485 at QQQ=$500)PAY
Short putSELL TO OPENATM − 10 (e.g. $490)COLLECT
Short callSELL TO OPENATM + 10 (e.g. $510)COLLECT
Long callBUY TO OPENATM + 15 (e.g. $515)PAY
Net Credit = (shortPut + shortCall) − (longPut + longCall)

Strike Construction

atm = round(qqq_price)
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
ℹ️ Friday is skipped — no new positions are opened on Fridays. The script holds positions intraday only (open 9:40 ET, close 14:20 ET the same day).

⚙️ Parameters

Ticker
QQQ
Qty / Leg
40
Short Spread
$10
Wing Width
$5
Profit Target
+90%
Stop Loss
−80%

Max profit per trade: net_credit × 100 × 40
Max loss per trade: (5 − net_credit) × 100 × 40

🕐 Schedule

EventWhenDays
Entry open9:40 ETMon–Thu
Entry cutoff12:00 ETMon–Thu
Exit14:20 ETMon–Thu
Auto-exit (profit)Any timeMon–Thu
Auto-exit (stop)Any timeMon–Thu
HeartbeatEvery 5 minAlways

Options expiry is always the next Friday (nearest weekly expiry).

🚦 Auto-Exit Rules

Profit Target

+90% of max profit

Stop Loss

−80% of max profit

Monitor Interval

Every 5 min

🔍 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.

#FilterValueRationale
1MIN_CREDIT_RATIO0.05Net 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
2MIN_CREDIT_ABS$0.25Absolute minimum credit per share — below this level the risk/reward is unfavourable
3MIN_STRADDLE_PCT0.10%Skip if the ATM straddle is < 0.10% of QQQ — IV so low that OTM strikes have near-zero premium
4MAX_STRADDLE_PCT1.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%)
5MAX_GAP_PCT1.0%Skip if the overnight gap exceeds 1% — gap opens place QQQ off-centre relative to the ±$10 profit zone
6MAX_PREV_DAY_MOVE1.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×)
7LOW_IV_HIGH_RVOLstraddle < 0.80% and avg5 > $4.50Skip 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:

DateLossRoot CauseFilter Added / Tightened
2026-03-09−$15,400Straddle 1.72% — QQQ pricing a large move at entryMAX_STRADDLE_PCT → 1.00%
2026-03-23−$3,160Straddle 0.98% — borderline caseMAX_STRADDLE_PCT confirmation
2026-03-30−$2,960Straddle 1.70% — elevated IV at entryMAX_STRADDLE_PCT tightened further
2026-03-31−$3,680Straddle 1.19% — prior-day tariff volatilityMAX_STRADDLE_PCT boundary
2026-04-07−$3,080Straddle 1.03% — post-tariff vol regimeMAX_STRADDLE_PCT boundary
2026-04-14−$3,760Prior day QQQ +$8.49 (1.70× wing) — momentum carryMAX_PREV_DAY_MOVE → 1.50×
2026-04-02−$3,760Straddle 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

AspectIron Condor (QQQ)Iron Butterfly (QQQ)
Short strikesATM ± $10Both at ATM
Profit zoneWider (ATM ± $10 ± credit)Very narrow (ATM ± credit)
Max creditLower (OTM premium)Higher (ATM straddle premium)
Win probabilityHigherLower
MIN_CREDIT_RATIO0.050.20
MAX_STRADDLE_PCT1.00%1.20%
ℹ️ On high-straddle days (>1.00%) where this condor script skips, consider the iron butterfly (daily_iron_butterfly_qqq.py) which can trade up to 1.20%.

⚠️ Risk Profile

Max Profit

net_credit × 100 × 40

Max Loss

(5 − credit) × 100 × 40

Upper Breakeven

ATM + $10 + credit

Lower Breakeven

ATM − $10 − credit

Short Spread

$10

Wing Width

$5

Risk Notes

⚠️ QQQ vs SPY risk: QQQ is structurally more volatile than SPY — the 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.
ℹ️ Max loss bounded by the wing width: (5 − credit) × $4,000 per condor cycle. Intraday-only — no overnight exposure.
LIVE PERFORMANCE — Loading…
Realized P&L
Condor Cycles
Win Rate
Profit Factor
Unrealized P&L

💰 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 SymbolP&LTradesAssessment
Load roundtrips_report_nikkip2_qqq.csv to populate

Performance Breakdown

Winners (—)—%
Losers (—)—%

Profit Factor

Avg Hold

— min

📂 Open QQQ Option Positions

Active QQQ option legs currently held in the Np2 account with unrealized P&L.

OCC SymbolTypeQtyEntry $Capital at RiskUnrealized 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)

MetricValue
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 SymbolTypeClose Type Open DateClose Date QtyEntry $Exit $ Capital at RiskMax Loss P&LHold
Load roundtrips_report_nikkip2_qqq.csv to populate

📁 Project Structure

Core Scripts

FilePurpose
daily_iron_condor_qqq.pyMain trading script — opens/closes QQQ condors daily Mon–Thu
backtests/daily_iron_condor_qqq_backtest.pyHistorical backtest
.envNP2API keys (not committed to git)

Generated Outputs

FilePurpose
condor_qqq_trades_log.csvAppended strategy trade log
roundtrips_report_nikkip2_qqq.csvRound-trip P&L report (from download script)

Running the Script

# Run under screen on the server
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

Account
Np2
Trades Closed
Win Rate
Profit Factor
Unrealized
Deployment
Paper / Alpaca