{"slug":"iron-condor-win-rate-and-expectancy","qid":"structures","label":"Credit, risk and breakeven win rate for nine SPY condor structures","post_title":"Iron Condor Win Rate and Expectancy","post_url":"/blog/iron-condor-win-rate-and-expectancy#q-structures","columns":["label","credit_dollars","risk_dollars","advertised_win_rate_pct","breakeven_win_rate_pct","condor_count"],"rows":[{"label":"$5 wide, 25 delta","credit_dollars":2.05,"risk_dollars":2.95,"advertised_win_rate_pct":50.2,"breakeven_win_rate_pct":59.1,"condor_count":191},{"label":"$5 wide, 16 delta","credit_dollars":1.19,"risk_dollars":3.81,"advertised_win_rate_pct":68.1,"breakeven_win_rate_pct":76.1,"condor_count":189},{"label":"$5 wide, 10 delta","credit_dollars":0.68,"risk_dollars":4.32,"advertised_win_rate_pct":80.1,"breakeven_win_rate_pct":86.4,"condor_count":189},{"label":"$10 wide, 25 delta","credit_dollars":3.6,"risk_dollars":6.4,"advertised_win_rate_pct":50.1,"breakeven_win_rate_pct":64,"condor_count":191},{"label":"$10 wide, 16 delta","credit_dollars":2.05,"risk_dollars":7.95,"advertised_win_rate_pct":68.1,"breakeven_win_rate_pct":79.5,"condor_count":182},{"label":"$10 wide, 10 delta","credit_dollars":1.15,"risk_dollars":8.85,"advertised_win_rate_pct":80.1,"breakeven_win_rate_pct":88.5,"condor_count":188},{"label":"$20 wide, 25 delta","credit_dollars":5.69,"risk_dollars":14.31,"advertised_win_rate_pct":50,"breakeven_win_rate_pct":71.5,"condor_count":190},{"label":"$20 wide, 16 delta","credit_dollars":3.19,"risk_dollars":16.81,"advertised_win_rate_pct":68.1,"breakeven_win_rate_pct":84,"condor_count":176},{"label":"$20 wide, 10 delta","credit_dollars":1.77,"risk_dollars":18.23,"advertised_win_rate_pct":80.1,"breakeven_win_rate_pct":91.2,"condor_count":188}],"shape":"table","sql":"WITH chain AS\n(\n    SELECT\n        date,\n        expiration_date,\n        toFloat64(strike_price) AS strike,\n        toFloat64(option_close) AS premium,\n        delta,\n        multiIf(abs(delta) BETWEEN 0.08 AND 0.12, '10 delta',\n                abs(delta) BETWEEN 0.14 AND 0.18, '16 delta',\n                abs(delta) BETWEEN 0.22 AND 0.28, '25 delta', '') AS short_bucket\n    FROM global_markets.options_greeks\n    WHERE underlying_symbol = 'SPY'\n      AND date >= '2026-07-01'\n      AND date <  '2026-10-01'\n      AND iv_converged = 1\n      AND volume > 0\n      AND option_close > 0\n      AND days_to_expiry BETWEEN 28 AND 45\n),\nwings AS\n(\n    SELECT date, expiration_date, strike, premium, delta, arrayJoin([5, 10, 20]) AS width\n    FROM chain\n),\nput_wing AS\n(\n    SELECT\n        s.date                     AS d,\n        s.expiration_date          AS e,\n        s.short_bucket             AS b,\n        l.width                    AS w,\n        avg(s.premium - l.premium) AS put_credit,\n        avg(abs(s.delta))          AS put_delta\n    FROM chain AS s\n    INNER JOIN\n    (\n        SELECT date, expiration_date, strike + width AS paired_strike, premium, delta, width\n        FROM wings\n    ) AS l\n        ON  s.date            = l.date\n        AND s.expiration_date = l.expiration_date\n        AND s.strike          = l.paired_strike\n    WHERE s.delta < 0\n      AND l.delta < 0\n      AND s.short_bucket != ''\n      AND s.premium > l.premium\n      AND s.premium - l.premium < l.width\n    GROUP BY d, e, b, w\n),\ncall_wing AS\n(\n    SELECT\n        s.date                     AS d,\n        s.expiration_date          AS e,\n        s.short_bucket             AS b,\n        l.width                    AS w,\n        avg(s.premium - l.premium) AS call_credit,\n        avg(abs(s.delta))          AS call_delta\n    FROM chain AS s\n    INNER JOIN\n    (\n        SELECT date, expiration_date, strike - width AS paired_strike, premium, delta, width\n        FROM wings\n    ) AS l\n        ON  s.date            = l.date\n        AND s.expiration_date = l.expiration_date\n        AND s.strike          = l.paired_strike\n    WHERE s.delta > 0\n      AND l.delta > 0\n      AND s.short_bucket != ''\n      AND s.premium > l.premium\n      AND s.premium - l.premium < l.width\n    GROUP BY d, e, b, w\n)\nSELECT\n    concat('$', toString(p.w), ' wide, ', p.b)                       AS label,\n    round(avg(p.put_credit + c.call_credit), 2)                      AS credit_dollars,\n    round(avg(p.w - (p.put_credit + c.call_credit)), 2)              AS risk_dollars,\n    round(100 - 100 * avg(p.put_delta + c.call_delta), 1)            AS advertised_win_rate_pct,\n    round(100 * avg((p.w - (p.put_credit + c.call_credit)) / p.w), 1) AS breakeven_win_rate_pct,\n    count()                                                          AS condor_count\nFROM put_wing AS p\nINNER JOIN call_wing AS c\n    ON p.d = c.d AND p.e = c.e AND p.b = c.b AND p.w = c.w\nGROUP BY p.w, p.b\nORDER BY p.w ASC, advertised_win_rate_pct ASC","computed_at":"2026-10-05T15:06:03.136807+00:00","elapsed":1.496333087}