⚪ QQQ Daily Iron Condor

Daily Iron Condor on QQQ — Alpaca Paper Account · NikkiP2 · Mon–Thu Intraday


● Paper Trading  |  ⚪ Neutral / Net-Credit  |  📅 Intraday Only

📡 Strategy Overview

A neutral, premium-selling strategy that profits when QQQ closes within a defined range at exit. Four option legs are opened each weekday morning (Mon–Thu) on the nearest-expiry weekly options and closed at 14:20 ET the same day.

QQQ moves more in dollar terms per day than SPY. The tighter MAX_STRADDLE_PCT (1.0% vs 1.5% for SPY) and higher MAX_PREV_DAY_MOVE threshold (1.50× wing vs 0.45× for SPY) reflect QQQ’s larger typical daily range. The LOW_IV_HIGH_RVOL filter ($4.50 avg5 vs $3.00 for SPY) is calibrated for QQQ’s higher dollar volatility per share.

Spread Construction

Leg Side Strike Action
Long Put Buy to open ATM − SHORT_SPREAD − WING_WIDTH PAY (downside hedge)
Short Put Sell to open ATM − SHORT_SPREAD COLLECT (premium)
Short Call Sell to open ATM + SHORT_SPREAD COLLECT (premium)
Long Call Buy to open ATM + SHORT_SPREAD + WING_WIDTH PAY (upside hedge)
Net Credit (short put + short call) − (long put + long call)

With the defaults below, strikes are centred ±$10 from the ATM strike with $5 wings:

← $5 → ← $10 →   ATM   ← $10 → ← $5 →
LP              SP                          SC              LC
(buy)           (sell)                      (sell)        (buy)

⚙️ Parameters

Ticker
QQQ
Qty / Leg
40
Short Spread
$10
Wing Width
$5
ParameterValueDescription
TICKERQQQUnderlying ETF
QTY40Contracts per leg
SHORT_SPREAD10Distance from ATM to short strikes ($)
WING_WIDTH5Width of each spread / max loss per side ($)

Max Profit

net_credit × $4,000

Max Loss

(5 − credit) × $4,000

Expiry

Next Friday

🕐 Schedule

EventTime (ET)Days
Entry open09:40Mon–Thu
Entry cutoff12:00Mon–Thu
Exit14:20Mon–Thu

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

📅

Friday Skipped

No new positions opened on Friday. Intraday-only exposure — no overnight risk.

Auto-Exit Rules

TriggerThresholdAction
PROFIT_TARGET_PCT+90% of max profitClose all legs
STOP_LOSS_PCT−80% of max profitClose all legs

🔍 Trade Filters

All filters are evaluated from live option prices at entry time. Set any filter to None to disable it.

#FilterValueRationale
1MIN_CREDIT_RATIO0.05Net credit must be ≥ 5% of wing width — ensures a meaningful breakeven cushion
2MIN_CREDIT_ABS$0.25Absolute floor on collected premium per share
3MIN_STRADDLE_PCT0.10%Skip if the ATM straddle is < 0.10% of QQQ price — IV collapse, not enough premium to justify risk
4MAX_STRADDLE_PCT1.00%Skip if the ATM straddle is > 1.00% of QQQ price — market pricing in a move large enough to breach the $10 short spread. Tighter than SPY (1.5%) due to QQQ’s higher dollar volatility
5MAX_GAP_PCT1.0%Skip if the overnight gap exceeds 1% — event-driven gap signals directional momentum unfavourable for neutral entry
6MAX_PREV_DAY_MOVE1.50× wing (>$7.50)Skip if the prior session’s intraday range exceeded 150% of the wing width — catches momentum-continuation losses in high-vol regimes
7LOW_IV_HIGH_RVOLstraddle < 0.80% and avg5 > $4.50Skip days where IV appears calm but realized vol over the past 5 sessions has averaged more than $4.50/day — avoids selling cheap premium into a volatile tape

Filter Calibration History

DateLossRoot CauseFilter
2026-03-09−$15,400Straddle 1.72% — market expected a large moveMAX_STRADDLE_PCT = 1.00%
2026-03-23−$3,160Straddle 0.98%, elevated IVMAX_STRADDLE_PCT = 1.00%
2026-03-30−$2,960Straddle 1.70%, tariff-driven volMAX_STRADDLE_PCT = 1.00%
2026-03-31−$3,680Straddle 1.19%MAX_STRADDLE_PCT = 1.00%
2026-04-07−$3,080Straddle 1.03%MAX_STRADDLE_PCT = 1.00%
2026-04-14−$3,760Prior day QQQ +$8.49 (1.70× wing)MAX_PREV_DAY_MOVE = 1.50
2026-04-02−$3,760Low straddle (0.76%) but avg5 = $6.50LOW_IV_HIGH_RVOL

⚠️ Risk Assessment

Max Profit

net_credit × $4,000

Max Loss

(5 − credit) × $4,000

Upper Breakeven

ATM + $10 + credit

Lower Breakeven

ATM − $10 − credit

Overnight Risk

None

Delta at Entry

Neutral
⚠️

Maximum Loss is Bounded

Maximum loss is bounded by the wing width: (WING_WIDTH − net_credit) × 100 × QTY = (5 − credit) × $4,000.

📋

Intraday-Only Exposure

No overnight risk. Positions are always closed by 14:20 ET. Friday is skipped entirely.

💡

QQQ Dollar Volatility

QQQ moves more in dollar terms per day than SPY. The $10 short spread can be threatened by intraday moves during high-vol regimes (tariff events, FOMC, macro surprises). The tighter MAX_STRADDLE_PCT and LOW_IV_HIGH_RVOL filters are calibrated to avoid the worst of these scenarios.

🛠️ Prerequisites & Usage

Install Dependencies

pip install -r requirements.txt

Environment File — .envNP2

apiKeyAIV011P=<paper-trading API key>
apiSecretAIV011P=<paper-trading API secret>
apiDataKey=<data API key>
apiDataSecret=<data API secret>

Run

python3 daily_iron_condor_qqq.py

The script blocks until market close, monitoring the position every 5 minutes and auto-exiting on profit target or stop loss. Trades are appended to condor_qqq_trades_log.csv.

⚠️

Paper Trading Only — Not Financial Advice

This strategy runs on an Alpaca paper trading account. Past performance does not guarantee future results. Do not use real capital without thorough risk review.

⚠️ Options Permission Requirements (Alpaca)

This strategy requires Level 3 (Spreads) options approval on the Alpaca account. Level 3 allows multi-leg defined-risk spreads (iron condors, iron butterflies, verticals, etc.). Accounts must also be margin-enabled.

Apply via: Alpaca Dashboard → Account → Trading → Options Trading → Level 3.