{"slug":"options-expiration-calendar-2026","qid":"expiry_calendar","label":"Every 2026 monthly options expiration date","post_title":"Options Expiration Calendar 2026: All 12 Dates","post_url":"/blog/options-expiration-calendar-2026#q-expiry_calendar","columns":["expiration_date","expiry_label","weekday","day_of_month","expiry_class","calendar_check"],"rows":[{"expiration_date":"2026-01-16","expiry_label":"Jan 16","weekday":"Fri","day_of_month":16,"expiry_class":"monthly","calendar_check":"already traded"},{"expiration_date":"2026-02-20","expiry_label":"Feb 20","weekday":"Fri","day_of_month":20,"expiry_class":"monthly","calendar_check":"already traded"},{"expiration_date":"2026-03-20","expiry_label":"Mar 20","weekday":"Fri","day_of_month":20,"expiry_class":"quarterly","calendar_check":"already traded"},{"expiration_date":"2026-04-17","expiry_label":"Apr 17","weekday":"Fri","day_of_month":17,"expiry_class":"monthly","calendar_check":"already traded"},{"expiration_date":"2026-05-15","expiry_label":"May 15","weekday":"Fri","day_of_month":15,"expiry_class":"monthly","calendar_check":"already traded"},{"expiration_date":"2026-06-19","expiry_label":"Jun 19","weekday":"Fri","day_of_month":19,"expiry_class":"quarterly","calendar_check":"already traded"},{"expiration_date":"2026-07-17","expiry_label":"Jul 17","weekday":"Fri","day_of_month":17,"expiry_class":"monthly","calendar_check":"already traded"},{"expiration_date":"2026-08-21","expiry_label":"Aug 21","weekday":"Fri","day_of_month":21,"expiry_class":"monthly","calendar_check":"already traded"},{"expiration_date":"2026-09-18","expiry_label":"Sep 18","weekday":"Fri","day_of_month":18,"expiry_class":"quarterly","calendar_check":"no closure scheduled"},{"expiration_date":"2026-10-16","expiry_label":"Oct 16","weekday":"Fri","day_of_month":16,"expiry_class":"monthly","calendar_check":"no closure scheduled"},{"expiration_date":"2026-11-20","expiry_label":"Nov 20","weekday":"Fri","day_of_month":20,"expiry_class":"monthly","calendar_check":"no closure scheduled"},{"expiration_date":"2026-12-18","expiry_label":"Dec 18","weekday":"Fri","day_of_month":18,"expiry_class":"quarterly","calendar_check":"no closure scheduled"}],"shape":"series","sql":"SELECT\n    toString(cal.exp_date)                                                            AS expiration_date,\n    concat(formatDateTime(cal.exp_date, '%b '), toString(toDayOfMonth(cal.exp_date))) AS expiry_label,\n    formatDateTime(cal.exp_date, '%a')                                                AS weekday,\n    toDayOfMonth(cal.exp_date)                                                        AS day_of_month,\n    if(toMonth(cal.exp_date) IN (3, 6, 9, 12), 'quarterly', 'monthly')                AS expiry_class,\n    multiIf(cal.exp_date < today(),   'already traded',\n            hol.holiday != '',        concat('scheduled closure: ', hol.holiday),\n                                      'no closure scheduled')                         AS calendar_check\nFROM\n(\n    SELECT\n        toDate('2026-01-01') + toIntervalMonth(arrayJoin(range(12)))  AS month_start,\n        month_start + ((12 - toDayOfWeek(month_start)) % 7) + 14      AS exp_date\n) AS cal\nLEFT JOIN\n(\n    SELECT\n        date         AS d,\n        any(name)    AS holiday\n    FROM global_markets.stocks_market_holidays\n    GROUP BY date\n) AS hol ON hol.d = cal.exp_date\nORDER BY cal.exp_date","computed_at":"2026-08-22T04:17:52.648728+00:00","elapsed":0.014371833}