{"slug":"option-expiration-cycles-explained","qid":"leaps_board","label":"Monthly expirations beyond 300 days out, by underlyings listing them","post_title":"Option Expiration Cycles Explained","post_url":"/blog/option-expiration-cycles-explained#q-leaps_board","columns":["leaps_series","underlyings_listing"],"rows":[{"leaps_series":"Jan 2028","underlyings_listing":1267},{"leaps_series":"Sep 2027","underlyings_listing":318},{"leaps_series":"Dec 2027","underlyings_listing":304},{"leaps_series":"Dec 2028","underlyings_listing":241},{"leaps_series":"Jun 2028","underlyings_listing":113},{"leaps_series":"Aug 2027","underlyings_listing":42},{"leaps_series":"Nov 2027","underlyings_listing":34},{"leaps_series":"Jul 2027","underlyings_listing":26},{"leaps_series":"Mar 2028","underlyings_listing":15},{"leaps_series":"Sep 2028","underlyings_listing":13},{"leaps_series":"Oct 2027","underlyings_listing":11},{"leaps_series":"Feb 2028","underlyings_listing":2},{"leaps_series":"Apr 2028","underlyings_listing":2},{"leaps_series":"Jul 2028","underlyings_listing":1}],"shape":"ranking","sql":"WITH\n(\n    SELECT max(date)\n    FROM global_markets.options_greeks\n    WHERE date >= today() - 10\n) AS chain_date\nSELECT\n    formatDateTime(toStartOfMonth(expiration_date), '%b %Y') AS leaps_series,\n    countDistinct(underlying_symbol)                         AS underlyings_listing\nFROM global_markets.options_greeks\nWHERE date = chain_date\n  AND days_to_expiry > 300\n  AND toDayOfWeek(expiration_date) = 5\n  AND toDayOfMonth(expiration_date) BETWEEN 15 AND 21\n  AND underlying_symbol NOT IN ('SPCX')\nGROUP BY toStartOfMonth(expiration_date)\nORDER BY underlyings_listing DESC","computed_at":"2026-08-26T04:00:19.772829+00:00","elapsed":0.069577467}