{"slug":"eurex-option-codes-odax-odap-oesx","qid":"expiry_ladder","label":"expiry_ladder","post_title":"eurex-option-codes-odax-odap-oesx","post_url":"/blog/eurex-option-codes-odax-odap-oesx#q-expiry_ladder","columns":["expiry_bucket","contracts_traded","share_pct"],"rows":[{"expiry_bucket":"1","contracts_traded":2310803,"share_pct":50.4},{"expiry_bucket":"5","contracts_traded":379342,"share_pct":8.3},{"expiry_bucket":"6","contracts_traded":128420,"share_pct":2.8},{"expiry_bucket":"7","contracts_traded":106366,"share_pct":2.3},{"expiry_bucket":"8 or more","contracts_traded":1658342,"share_pct":36.2}],"shape":"ranking","sql":"WITH spy AS\n(\n    SELECT\n        days_to_expiry,\n        volume\n    FROM global_markets.options_greeks\n    WHERE underlying_symbol = 'SPY'\n      AND date = '2026-06-17'\n      AND volume > 0\n      AND days_to_expiry >= 0\n)\nSELECT\n    if(days_to_expiry >= 8, '8 or more', toString(days_to_expiry)) AS expiry_bucket,\n    sum(volume)                                                    AS contracts_traded,\n    round(100 * sum(volume) / (SELECT sum(volume) FROM spy), 1)    AS share_pct\nFROM spy\nGROUP BY expiry_bucket\nORDER BY min(days_to_expiry)","computed_at":"2026-09-22T14:45:06.593994+00:00","elapsed":0.002649566}