# The US equity market's sessions and published closures, as one vendor measured them.
#
# Recorded on 2026-09-26 with two requests to Massive's REST API, made through the vendor's
# own MCP connector rather than through kanso, so no kanso code shaped either answer:
#
#   GET /v2/aggs/ticker/SPY/range/1/day/2003-01-01/2026-09-25?adjusted=false&sort=asc&limit=50000
#   GET /v1/marketstatus/upcoming
#
# SPY trades on every US equity venue, so a weekday with no daily bar for it is a weekday
# on which the consolidated US equity market did not open. The first answer held 5798 daily
# bars. Its first window opens 2003-09-10, the vendor's stock history floor (the one
# `tests/cli/massive_wire.py` records as the plan floor for stocks), and its last 2026-09-25.
# A daily window opens at midnight America/New_York, and its `t` is that instant in
# milliseconds, so a bar's session is the UTC date twelve hours after `t`. The stored
# table was then asked, in SQLite, for every pair of consecutive sessions further apart
# than a Friday and the Monday after it:
#
#   WITH s AS (SELECT DISTINCT date(t/1000 + 43200, 'unixepoch') AS d FROM spy_daily),
#        g AS (SELECT LAG(d) OVER (ORDER BY d) AS prev, d FROM s)
#   SELECT (SELECT count(*) FROM s) AS sessions, (SELECT min(d) FROM s) AS first,
#          (SELECT max(d) FROM s) AS last, group_concat(prev || '>' || d, ' ') AS breaks
#   FROM g WHERE prev IS NOT NULL AND julianday(d) - julianday(prev) > 1
#     AND NOT (julianday(d) - julianday(prev) = 3 AND strftime('%w', prev) = '5')
#
# The weekdays strictly inside those 213 breaks are 215 closures. The 6013 weekdays from
# 2003-09-10 to 2026-09-25 less those 215 are 5798, the number of bars, so no session fell
# on a Saturday or a Sunday either.
#
# The second answer is the vendor's list of the closures and early closes the exchanges
# have published and not yet reached. An early close is a session.
#
# No row below is edited: the first block is the query's answer and the second the
# endpoint's, each exactly as printed.

[sessions]
sessions,first,last,breaks
5798,2003-09-10,2026-09-25,2003-11-26>2003-11-28 2003-12-24>2003-12-26 2003-12-31>2004-01-02 2004-01-16>2004-01-20 2004-02-13>2004-02-17 2004-04-08>2004-04-12 2004-05-28>2004-06-01 2004-06-10>2004-06-14 2004-07-02>2004-07-06 2004-09-03>2004-09-07 2004-11-24>2004-11-26 2004-12-23>2004-12-27 2005-01-14>2005-01-18 2005-02-18>2005-02-22 2005-03-24>2005-03-28 2005-05-27>2005-05-31 2005-07-01>2005-07-05 2005-09-02>2005-09-06 2005-11-23>2005-11-25 2005-12-23>2005-12-27 2005-12-30>2006-01-03 2006-01-13>2006-01-17 2006-02-17>2006-02-21 2006-04-13>2006-04-17 2006-05-26>2006-05-30 2006-07-03>2006-07-05 2006-09-01>2006-09-05 2006-11-22>2006-11-24 2006-12-22>2006-12-26 2006-12-29>2007-01-03 2007-01-12>2007-01-16 2007-02-16>2007-02-20 2007-04-05>2007-04-09 2007-05-25>2007-05-29 2007-07-03>2007-07-05 2007-08-31>2007-09-04 2007-11-21>2007-11-23 2007-12-24>2007-12-26 2007-12-31>2008-01-02 2008-01-18>2008-01-22 2008-02-15>2008-02-19 2008-03-20>2008-03-24 2008-05-23>2008-05-27 2008-07-03>2008-07-07 2008-08-29>2008-09-02 2008-11-26>2008-11-28 2008-12-24>2008-12-26 2008-12-31>2009-01-02 2009-01-16>2009-01-20 2009-02-13>2009-02-17 2009-04-09>2009-04-13 2009-05-22>2009-05-26 2009-07-02>2009-07-06 2009-09-04>2009-09-08 2009-11-25>2009-11-27 2009-12-24>2009-12-28 2009-12-31>2010-01-04 2010-01-15>2010-01-19 2010-02-12>2010-02-16 2010-04-01>2010-04-05 2010-05-28>2010-06-01 2010-07-02>2010-07-06 2010-09-03>2010-09-07 2010-11-24>2010-11-26 2010-12-23>2010-12-27 2011-01-14>2011-01-18 2011-02-18>2011-02-22 2011-04-21>2011-04-25 2011-05-27>2011-05-31 2011-07-01>2011-07-05 2011-09-02>2011-09-06 2011-11-23>2011-11-25 2011-12-23>2011-12-27 2011-12-30>2012-01-03 2012-01-13>2012-01-17 2012-02-17>2012-02-21 2012-04-05>2012-04-09 2012-05-25>2012-05-29 2012-07-03>2012-07-05 2012-08-31>2012-09-04 2012-10-26>2012-10-31 2012-11-21>2012-11-23 2012-12-24>2012-12-26 2012-12-31>2013-01-02 2013-01-18>2013-01-22 2013-02-15>2013-02-19 2013-03-28>2013-04-01 2013-05-24>2013-05-28 2013-07-03>2013-07-05 2013-08-30>2013-09-03 2013-11-27>2013-11-29 2013-12-24>2013-12-26 2013-12-31>2014-01-02 2014-01-17>2014-01-21 2014-02-14>2014-02-18 2014-04-17>2014-04-21 2014-05-23>2014-05-27 2014-07-03>2014-07-07 2014-08-29>2014-09-02 2014-11-26>2014-11-28 2014-12-24>2014-12-26 2014-12-31>2015-01-02 2015-01-16>2015-01-20 2015-02-13>2015-02-17 2015-04-02>2015-04-06 2015-05-22>2015-05-26 2015-07-02>2015-07-06 2015-09-04>2015-09-08 2015-11-25>2015-11-27 2015-12-24>2015-12-28 2015-12-31>2016-01-04 2016-01-15>2016-01-19 2016-02-12>2016-02-16 2016-03-24>2016-03-28 2016-05-27>2016-05-31 2016-07-01>2016-07-05 2016-09-02>2016-09-06 2016-11-23>2016-11-25 2016-12-23>2016-12-27 2016-12-30>2017-01-03 2017-01-13>2017-01-17 2017-02-17>2017-02-21 2017-04-13>2017-04-17 2017-05-26>2017-05-30 2017-07-03>2017-07-05 2017-09-01>2017-09-05 2017-11-22>2017-11-24 2017-12-22>2017-12-26 2017-12-29>2018-01-02 2018-01-12>2018-01-16 2018-02-16>2018-02-20 2018-03-29>2018-04-02 2018-05-25>2018-05-29 2018-07-03>2018-07-05 2018-08-31>2018-09-04 2018-11-21>2018-11-23 2018-12-04>2018-12-06 2018-12-24>2018-12-26 2018-12-31>2019-01-02 2019-01-18>2019-01-22 2019-02-15>2019-02-19 2019-04-18>2019-04-22 2019-05-24>2019-05-28 2019-07-03>2019-07-05 2019-08-30>2019-09-03 2019-11-27>2019-11-29 2019-12-24>2019-12-26 2019-12-31>2020-01-02 2020-01-17>2020-01-21 2020-02-14>2020-02-18 2020-04-09>2020-04-13 2020-05-22>2020-05-26 2020-07-02>2020-07-06 2020-09-04>2020-09-08 2020-11-25>2020-11-27 2020-12-24>2020-12-28 2020-12-31>2021-01-04 2021-01-15>2021-01-19 2021-02-12>2021-02-16 2021-04-01>2021-04-05 2021-05-28>2021-06-01 2021-07-02>2021-07-06 2021-09-03>2021-09-07 2021-11-24>2021-11-26 2021-12-23>2021-12-27 2022-01-14>2022-01-18 2022-02-18>2022-02-22 2022-04-14>2022-04-18 2022-05-27>2022-05-31 2022-06-17>2022-06-21 2022-07-01>2022-07-05 2022-09-02>2022-09-06 2022-11-23>2022-11-25 2022-12-23>2022-12-27 2022-12-30>2023-01-03 2023-01-13>2023-01-17 2023-02-17>2023-02-21 2023-04-06>2023-04-10 2023-05-26>2023-05-30 2023-06-16>2023-06-20 2023-07-03>2023-07-05 2023-09-01>2023-09-05 2023-11-22>2023-11-24 2023-12-22>2023-12-26 2023-12-29>2024-01-02 2024-01-12>2024-01-16 2024-02-16>2024-02-20 2024-03-28>2024-04-01 2024-05-24>2024-05-28 2024-06-18>2024-06-20 2024-07-03>2024-07-05 2024-08-30>2024-09-03 2024-11-27>2024-11-29 2024-12-24>2024-12-26 2024-12-31>2025-01-02 2025-01-08>2025-01-10 2025-01-17>2025-01-21 2025-02-14>2025-02-18 2025-04-17>2025-04-21 2025-05-23>2025-05-27 2025-06-18>2025-06-20 2025-07-03>2025-07-07 2025-08-29>2025-09-02 2025-11-26>2025-11-28 2025-12-24>2025-12-26 2025-12-31>2026-01-02 2026-01-16>2026-01-20 2026-02-13>2026-02-17 2026-04-02>2026-04-06 2026-05-22>2026-05-26 2026-06-18>2026-06-22 2026-07-02>2026-07-06 2026-09-04>2026-09-08

[upcoming]
date,exchange,name,status,close,open
2026-11-26,NASDAQ,Thanksgiving,closed,,
2026-11-26,NYSE,Thanksgiving,closed,,
2026-11-27,NYSE,Thanksgiving,early-close,2026-11-27T18:00:00.000Z,2026-11-27T14:30:00.000Z
2026-11-27,NASDAQ,Thanksgiving,early-close,2026-11-27T18:00:00.000Z,2026-11-27T14:30:00.000Z
2026-12-24,NYSE,Christmas,early-close,2026-12-24T18:00:00.000Z,2026-12-24T14:30:00.000Z
2026-12-24,NASDAQ,Christmas,early-close,2026-12-24T18:00:00.000Z,2026-12-24T14:30:00.000Z
2026-12-25,NYSE,Christmas,closed,,
2026-12-25,NASDAQ,Christmas,closed,,
2027-01-01,NYSE,New Years Day,closed,,
2027-01-01,NASDAQ,New Years Day,closed,,
2027-01-18,NASDAQ,"Martin Luther King, Jr. Day",closed,,
2027-01-18,NYSE,"Martin Luther King, Jr. Day",closed,,
2027-02-15,NASDAQ,Washington's Birthday,closed,,
2027-02-15,NYSE,Washington's Birthday,closed,,
2027-03-26,NYSE,Good Friday,closed,,
2027-03-26,NASDAQ,Good Friday,closed,,
2027-05-31,NASDAQ,Memorial Day,closed,,
2027-05-31,NYSE,Memorial Day,closed,,
2027-06-18,NASDAQ,Juneteenth,closed,,
2027-06-18,NYSE,Juneteenth,closed,,
2027-07-05,NASDAQ,Independence Day,closed,,
2027-07-05,NYSE,Independence Day,closed,,
2027-09-06,NASDAQ,Labor Day,closed,,
2027-09-06,NYSE,Labor Day,closed,,
