{"slug":"xetra-trading-hours-and-holidays","qid":"ny_overlap_windows","label":"Days when the New York open lands at 14:30 Frankfurt time (three-hour overlap), 2026 and 2027","post_title":"Xetra Trading Hours and Holidays 2026–2027","post_url":"/blog/xetra-trading-hours-and-holidays#q-ny_overlap_windows","columns":["first_day","last_day","weekdays","ny_open_frankfurt","xetra_close_new_york"],"rows":[{"first_day":"8 Mar 2026","last_day":"28 Mar 2026","weekdays":15,"ny_open_frankfurt":"14:30","xetra_close_new_york":"12:30"},{"first_day":"25 Oct 2026","last_day":"31 Oct 2026","weekdays":5,"ny_open_frankfurt":"14:30","xetra_close_new_york":"12:30"},{"first_day":"14 Mar 2027","last_day":"27 Mar 2027","weekdays":10,"ny_open_frankfurt":"14:30","xetra_close_new_york":"12:30"},{"first_day":"31 Oct 2027","last_day":"6 Nov 2027","weekdays":5,"ny_open_frankfurt":"14:30","xetra_close_new_york":"12:30"}],"shape":"series","sql":"SELECT\n    concat(toString(toDayOfMonth(min(day))), ' ', formatDateTime(min(day), '%b %Y')) AS first_day,\n    concat(toString(toDayOfMonth(max(day))), ' ', formatDateTime(max(day), '%b %Y')) AS last_day,\n    countIf(toDayOfWeek(day) <= 5)                                                   AS weekdays,\n    any(ny_open_frankfurt)                                                           AS ny_open_frankfurt,\n    any(xetra_close_new_york)                                                        AS xetra_close_new_york\nFROM\n(\n    SELECT\n        day,\n        toDateTime(concat(toString(day), ' 09:30:00'), 'America/New_York')      AS ny_open,\n        toDateTime(concat(toString(day), ' 17:30:00'), 'Europe/Berlin')         AS xetra_close,\n        formatDateTime(toTimeZone(ny_open, 'Europe/Berlin'), '%H:%i')           AS ny_open_frankfurt,\n        formatDateTime(toTimeZone(xetra_close, 'America/New_York'), '%H:%i')    AS xetra_close_new_york,\n        intDiv(toUnixTimestamp(xetra_close) - toUnixTimestamp(ny_open), 3600)   AS overlap_hours\n    FROM\n    (\n        SELECT toDate('2026-01-01') + arrayJoin(range(730)) AS day\n    )\n)\nWHERE overlap_hours = 3\nGROUP BY toYear(day), toMonth(day) < 7\nORDER BY min(day)","computed_at":"2026-09-16T15:25:01.358183+00:00","elapsed":0.14937158}