{"slug":"iron-condor-vs-iron-butterfly","qid":"vega_curve","label":"Vega across the SPY ladder, indexed to the at-the-money strike, May 2026","post_title":"Iron Condor vs Iron Butterfly: Break-Evens","post_url":"/blog/iron-condor-vs-iron-butterfly#q-vega_curve","columns":["strike_vs_spot","vol_risk_7_to_14d_pct","vol_risk_25_to_35d_pct"],"rows":[{"strike_vs_spot":"-6%","vol_risk_7_to_14d_pct":24,"vol_risk_25_to_35d_pct":51},{"strike_vs_spot":"-5%","vol_risk_7_to_14d_pct":30,"vol_risk_25_to_35d_pct":59},{"strike_vs_spot":"-4%","vol_risk_7_to_14d_pct":40,"vol_risk_25_to_35d_pct":69},{"strike_vs_spot":"-3%","vol_risk_7_to_14d_pct":53,"vol_risk_25_to_35d_pct":78},{"strike_vs_spot":"-2%","vol_risk_7_to_14d_pct":70,"vol_risk_25_to_35d_pct":88},{"strike_vs_spot":"-1%","vol_risk_7_to_14d_pct":89,"vol_risk_25_to_35d_pct":96},{"strike_vs_spot":"0%","vol_risk_7_to_14d_pct":100,"vol_risk_25_to_35d_pct":100},{"strike_vs_spot":"+1%","vol_risk_7_to_14d_pct":90,"vol_risk_25_to_35d_pct":99},{"strike_vs_spot":"+2%","vol_risk_7_to_14d_pct":63,"vol_risk_25_to_35d_pct":92},{"strike_vs_spot":"+3%","vol_risk_7_to_14d_pct":34,"vol_risk_25_to_35d_pct":78},{"strike_vs_spot":"+4%","vol_risk_7_to_14d_pct":17,"vol_risk_25_to_35d_pct":61},{"strike_vs_spot":"+5%","vol_risk_7_to_14d_pct":9,"vol_risk_25_to_35d_pct":46},{"strike_vs_spot":"+6%","vol_risk_7_to_14d_pct":7,"vol_risk_25_to_35d_pct":33}],"shape":"ranking","sql":"WITH chain AS\n(\n    SELECT\n        toInt32(round((toFloat64(strike_price) / toFloat64(underlying_close) - 1) * 100)) AS off_pct,\n        toFloat64(vega)                                                                   AS leg_vega,\n        if(days_to_expiry <= 14, 'near', 'far')                                           AS dte_bucket\n    FROM global_markets.options_greeks\n    WHERE underlying_symbol = 'SPY'\n      AND date BETWEEN '2026-05-01' AND '2026-05-29'\n      AND volume > 0\n      AND iv_converged = 1\n      AND ((days_to_expiry BETWEEN 7 AND 14) OR (days_to_expiry BETWEEN 25 AND 35))\n)\nSELECT\n    concat(if(off_pct > 0, '+', ''), toString(off_pct), '%') AS strike_vs_spot,\n    round(avgIf(leg_vega, dte_bucket = 'near')\n          / (SELECT avgIf(leg_vega, dte_bucket = 'near') FROM chain WHERE off_pct = 0) * 100) AS vol_risk_7_to_14d_pct,\n    round(avgIf(leg_vega, dte_bucket = 'far')\n          / (SELECT avgIf(leg_vega, dte_bucket = 'far') FROM chain WHERE off_pct = 0) * 100)  AS vol_risk_25_to_35d_pct\nFROM chain\nGROUP BY off_pct\nHAVING off_pct BETWEEN -6 AND 6\n   AND countIf(dte_bucket = 'near') > 0\n   AND countIf(dte_bucket = 'far') > 0\nORDER BY off_pct","computed_at":"2026-08-07T16:19:34.787466+00:00","elapsed":0.003586048}