{"slug":"options-expiration-calendar-2026","qid":"fridays_2026","label":"Every Friday of 2026 through July, shortest session first","post_title":"Options Expiration Calendar 2026: All 12 Dates","post_url":"/blog/options-expiration-calendar-2026#q-fridays_2026","columns":["session_date","session_label","friday_type","regular_session_bars"],"rows":[{"session_date":"2026-04-03","session_label":"Apr 3","friday_type":"other Friday","regular_session_bars":0},{"session_date":"2026-06-19","session_label":"Jun 19","friday_type":"third Friday","regular_session_bars":0},{"session_date":"2026-07-03","session_label":"Jul 3","friday_type":"other Friday","regular_session_bars":0},{"session_date":"2026-01-02","session_label":"Jan 2","friday_type":"other Friday","regular_session_bars":390},{"session_date":"2026-01-09","session_label":"Jan 9","friday_type":"other Friday","regular_session_bars":390},{"session_date":"2026-01-16","session_label":"Jan 16","friday_type":"third Friday","regular_session_bars":390},{"session_date":"2026-01-23","session_label":"Jan 23","friday_type":"other Friday","regular_session_bars":390},{"session_date":"2026-01-30","session_label":"Jan 30","friday_type":"other Friday","regular_session_bars":390},{"session_date":"2026-02-06","session_label":"Feb 6","friday_type":"other Friday","regular_session_bars":390},{"session_date":"2026-02-13","session_label":"Feb 13","friday_type":"other Friday","regular_session_bars":390},{"session_date":"2026-02-20","session_label":"Feb 20","friday_type":"third Friday","regular_session_bars":390},{"session_date":"2026-02-27","session_label":"Feb 27","friday_type":"other Friday","regular_session_bars":390},{"session_date":"2026-03-06","session_label":"Mar 6","friday_type":"other Friday","regular_session_bars":390},{"session_date":"2026-03-13","session_label":"Mar 13","friday_type":"other Friday","regular_session_bars":390},{"session_date":"2026-03-20","session_label":"Mar 20","friday_type":"third Friday","regular_session_bars":390},{"session_date":"2026-03-27","session_label":"Mar 27","friday_type":"other Friday","regular_session_bars":390},{"session_date":"2026-04-10","session_label":"Apr 10","friday_type":"other Friday","regular_session_bars":390},{"session_date":"2026-04-17","session_label":"Apr 17","friday_type":"third Friday","regular_session_bars":390},{"session_date":"2026-04-24","session_label":"Apr 24","friday_type":"other Friday","regular_session_bars":390},{"session_date":"2026-05-01","session_label":"May 1","friday_type":"other Friday","regular_session_bars":390},{"session_date":"2026-05-08","session_label":"May 8","friday_type":"other Friday","regular_session_bars":390},{"session_date":"2026-05-15","session_label":"May 15","friday_type":"third Friday","regular_session_bars":390},{"session_date":"2026-05-22","session_label":"May 22","friday_type":"other Friday","regular_session_bars":390},{"session_date":"2026-05-29","session_label":"May 29","friday_type":"other Friday","regular_session_bars":390},{"session_date":"2026-06-05","session_label":"Jun 5","friday_type":"other Friday","regular_session_bars":390},{"session_date":"2026-06-12","session_label":"Jun 12","friday_type":"other Friday","regular_session_bars":390},{"session_date":"2026-06-26","session_label":"Jun 26","friday_type":"other Friday","regular_session_bars":390},{"session_date":"2026-07-10","session_label":"Jul 10","friday_type":"other Friday","regular_session_bars":390},{"session_date":"2026-07-17","session_label":"Jul 17","friday_type":"third Friday","regular_session_bars":390},{"session_date":"2026-07-24","session_label":"Jul 24","friday_type":"other Friday","regular_session_bars":390},{"session_date":"2026-07-31","session_label":"Jul 31","friday_type":"other Friday","regular_session_bars":390}],"shape":"series","sql":"SELECT\n    toString(cal.day)                                                         AS session_date,\n    concat(formatDateTime(cal.day, '%b '), toString(toDayOfMonth(cal.day)))   AS session_label,\n    if(toDayOfMonth(cal.day) BETWEEN 15 AND 21, 'third Friday', 'other Friday') AS friday_type,\n    toUInt32(ifNull(tape.bars, 0))                                            AS regular_session_bars\nFROM\n(\n    SELECT toDate('2026-01-01') + arrayJoin(range(212)) AS day\n) AS cal\nLEFT JOIN\n(\n    SELECT\n        toDate(toTimeZone(window_start, 'America/New_York')) AS d,\n        count()                                              AS bars\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker = 'SPY'\n      AND window_start >= toDateTime('2026-01-01 00:00:00')\n      AND window_start <  toDateTime('2026-08-02 00:00:00')\n      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60\n           + toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570\n      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60\n           + toMinute(toTimeZone(window_start, 'America/New_York'))) < 960\n    GROUP BY d\n) AS tape ON tape.d = cal.day\nWHERE toDayOfWeek(cal.day) = 5\nORDER BY regular_session_bars ASC, cal.day ASC","computed_at":"2026-08-22T04:17:52.885675+00:00","elapsed":0.143027182}