pandas-market-calendars 4.4.2__py3-none-any.whl → 4.5.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. pandas_market_calendars/__init__.py +38 -38
  2. pandas_market_calendars/calendar_registry.py +57 -57
  3. pandas_market_calendars/calendar_utils.py +262 -262
  4. pandas_market_calendars/calendars/asx.py +66 -66
  5. pandas_market_calendars/calendars/bmf.py +223 -223
  6. pandas_market_calendars/calendars/bse.py +421 -421
  7. pandas_market_calendars/calendars/cboe.py +145 -145
  8. pandas_market_calendars/calendars/cme.py +405 -405
  9. pandas_market_calendars/calendars/cme_globex_agriculture.py +172 -172
  10. pandas_market_calendars/calendars/cme_globex_base.py +119 -119
  11. pandas_market_calendars/calendars/cme_globex_crypto.py +160 -160
  12. pandas_market_calendars/calendars/cme_globex_energy_and_metals.py +216 -216
  13. pandas_market_calendars/calendars/cme_globex_equities.py +123 -123
  14. pandas_market_calendars/calendars/cme_globex_fixed_income.py +136 -136
  15. pandas_market_calendars/calendars/cme_globex_fx.py +101 -101
  16. pandas_market_calendars/calendars/eurex.py +131 -131
  17. pandas_market_calendars/calendars/eurex_fixed_income.py +98 -98
  18. pandas_market_calendars/calendars/hkex.py +429 -429
  19. pandas_market_calendars/calendars/ice.py +81 -81
  20. pandas_market_calendars/calendars/iex.py +112 -112
  21. pandas_market_calendars/calendars/jpx.py +113 -113
  22. pandas_market_calendars/calendars/lse.py +114 -114
  23. pandas_market_calendars/calendars/mirror.py +149 -149
  24. pandas_market_calendars/calendars/nyse.py +1327 -1324
  25. pandas_market_calendars/calendars/ose.py +116 -116
  26. pandas_market_calendars/calendars/sifma.py +354 -354
  27. pandas_market_calendars/calendars/six.py +132 -132
  28. pandas_market_calendars/calendars/sse.py +311 -311
  29. pandas_market_calendars/calendars/tase.py +197 -197
  30. pandas_market_calendars/calendars/tsx.py +181 -181
  31. pandas_market_calendars/holidays/cme.py +385 -385
  32. pandas_market_calendars/holidays/cme_globex.py +214 -214
  33. pandas_market_calendars/holidays/cn.py +1456 -1456
  34. pandas_market_calendars/holidays/jp.py +401 -401
  35. pandas_market_calendars/holidays/jpx_equinox.py +506 -506
  36. pandas_market_calendars/holidays/nyse.py +1536 -1531
  37. pandas_market_calendars/holidays/oz.py +63 -63
  38. pandas_market_calendars/holidays/sifma.py +350 -350
  39. pandas_market_calendars/holidays/us.py +376 -376
  40. pandas_market_calendars/market_calendar.py +941 -922
  41. {pandas_market_calendars-4.4.2.dist-info → pandas_market_calendars-4.5.0.dist-info}/METADATA +1 -1
  42. pandas_market_calendars-4.5.0.dist-info/RECORD +50 -0
  43. {pandas_market_calendars-4.4.2.dist-info → pandas_market_calendars-4.5.0.dist-info}/WHEEL +1 -1
  44. pandas_market_calendars-4.4.2.dist-info/RECORD +0 -50
  45. {pandas_market_calendars-4.4.2.dist-info → pandas_market_calendars-4.5.0.dist-info}/LICENSE +0 -0
  46. {pandas_market_calendars-4.4.2.dist-info → pandas_market_calendars-4.5.0.dist-info}/NOTICE +0 -0
  47. {pandas_market_calendars-4.4.2.dist-info → pandas_market_calendars-4.5.0.dist-info}/top_level.txt +0 -0
@@ -1,1324 +1,1327 @@
1
- #
2
- # Copyright 2016 Quantopian, Inc.
3
- #
4
- # Licensed under the Apache License, Version 2.0 (the "License");
5
- # you may not use this file except in compliance with the License.
6
- # You may obtain a copy of the License at
7
- #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS,
12
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- # See the License for the specific language governing permissions and
14
- # limitations under the License.
15
-
16
- from datetime import time
17
- from itertools import chain
18
-
19
- import pandas as pd
20
- from pandas.tseries.holiday import AbstractHolidayCalendar
21
- from pytz import timezone
22
-
23
- from pandas_market_calendars.holidays.nyse import (
24
- # Always Celebrated Holidays
25
- USNewYearsDayNYSEpost1952,
26
- USNewYearsDayNYSEpre1952,
27
- SatBeforeNewYearsAdhoc,
28
- USPresidentsDay,
29
- USWashingtonsBirthDay1964to1970,
30
- USWashingtonsBirthDayBefore1952,
31
- USWashingtonsBirthDay1952to1963,
32
- USLincolnsBirthDayBefore1954,
33
- LincolnsBirthDayAdhoc,
34
- SatBeforeWashingtonsBirthdayAdhoc,
35
- SatAfterWashingtonsBirthdayAdhoc,
36
- SatBeforeAfterLincolnsBirthdayAdhoc,
37
- GrantsBirthDayAdhoc,
38
- USMartinLutherKingJrAfter1998,
39
- GoodFriday,
40
- GoodFridayPre1898,
41
- GoodFriday1899to1905,
42
- SatAfterGoodFridayAdhoc,
43
- USMemorialDay,
44
- USMemorialDayBefore1952,
45
- USMemorialDay1952to1964,
46
- USMemorialDay1964to1969,
47
- SatBeforeDecorationAdhoc,
48
- SatAfterDecorationAdhoc,
49
- DayBeforeDecorationAdhoc,
50
- USJuneteenthAfter2022,
51
- USIndependenceDay,
52
- USIndependenceDayPre1952,
53
- USIndependenceDay1952to1954,
54
- SatBeforeIndependenceDayAdhoc,
55
- SatAfterIndependenceDayAdhoc,
56
- MonTuesThursBeforeIndependenceDay,
57
- FridayAfterIndependenceDayNYSEpre2013,
58
- WednesdayBeforeIndependenceDayPost2013,
59
- MonBeforeIndependenceDayAdhoc,
60
- DaysAfterIndependenceDayAdhoc,
61
- # DaysBeforeIndependenceDay1pmEarlyCloseAdhoc,
62
- USColumbusDayBefore1954,
63
- USElectionDay1848to1967,
64
- USLaborDayStarting1887,
65
- SatBeforeLaborDayAdhoc,
66
- USThanksgivingDay,
67
- USThanksgivingDay1939to1941,
68
- USThanksgivingDayBefore1939,
69
- DayAfterThanksgiving2pmEarlyCloseBefore1993,
70
- DayAfterThanksgiving1pmEarlyCloseInOrAfter1993,
71
- FridayAfterThanksgivingAdHoc,
72
- USElectionDay1968to1980Adhoc,
73
- ChristmasNYSE,
74
- Christmas54to98NYSE,
75
- ChristmasBefore1954,
76
- ChristmasEvesAdhoc,
77
- DayAfterChristmasAdhoc,
78
- DayAfterChristmas1pmEarlyCloseAdhoc,
79
- ChristmasEvePost1999Early1pmClose,
80
- ChristmasEve1pmEarlyCloseAdhoc,
81
- ChristmasEve2pmEarlyCloseAdhoc,
82
- SatBeforeChristmasAdhoc,
83
- SatAfterChristmasAdhoc,
84
- # Retired Holidays
85
- USVetransDayAdHoc,
86
- SatAfterColumbusDayAdHoc,
87
- USVeteransDay1934to1953,
88
- # Adhoc Holidays
89
- # 1885
90
- UlyssesGrantFuneral1885,
91
- # 1892
92
- ColumbianCelebration1892,
93
- # 1888
94
- GreatBlizzardOf1888,
95
- # 1889
96
- WashingtonInaugurationCentennialCelebration1889,
97
- # 1898
98
- CharterDay1898,
99
- WelcomeNavalCommander1898,
100
- # 1899
101
- AdmiralDeweyCelebration1899,
102
- GarretHobartFuneral1899,
103
- # 1901
104
- McKinleyDeathAndFuneral1901,
105
- QueenVictoriaFuneral1901,
106
- MovedToProduceExchange1901,
107
- EnlargedProduceExchange1901,
108
- # 1902
109
- KingEdwardVIIcoronation1902,
110
- # 1903
111
- NYSEnewBuildingOpen1903,
112
- # 1908
113
- GroverClevelandFuneral1pmClose1908,
114
- # 1909
115
- HudsonFultonCelebration1909,
116
- # 1910
117
- KingEdwardDeath11amyClose1910,
118
- KingEdwardFuneral12pmOpen1910,
119
- # 1912
120
- JamesShermanFuneral1912,
121
- # 1913
122
- JPMorganFuneral12pmOpen1913,
123
- WilliamGaynorFuneral12pmOpen1913,
124
- # 1914
125
- OnsetOfWWI1914,
126
- # 1917
127
- WeatherHeatClosing1917,
128
- ParadeOfNationalGuardEarlyClose1917,
129
- LibertyDay12pmEarlyClose1917,
130
- DraftRegistrationDay1917,
131
- # 1918
132
- WeatherNoHeatClosing1918,
133
- DraftRegistrationDay1918,
134
- LibertyDay12pmEarlyClose1918,
135
- FalseArmisticeReport1430EarlyClose1918,
136
- ArmisticeSigned1918,
137
- # 1919
138
- RooseveltFuneral1230EarlyClose1919,
139
- Homecoming27Division1919,
140
- ParadeOf77thDivision1919,
141
- BacklogRelief1919,
142
- GeneralPershingReturn1919,
143
- TrafficBlockLateOpen1919,
144
- # 1920
145
- TrafficBlockLateOpen1920,
146
- OfficeLocationChange1920,
147
- WallStreetExplosionEarlyClose1920,
148
- # 1921
149
- AnnunciatorBoardFire1pmLateOpen1921,
150
- # 1923
151
- HardingDeath1923,
152
- HardingFuneral1923,
153
- # 1924
154
- WoodrowWilsonFuneral1230EarlyClose1924,
155
- # 1925
156
- EclipseOfSunLateOpen1925,
157
- CromwellFuneral1430EarlyClose1925,
158
- # 1927
159
- LindberghParade1927,
160
- # 1928
161
- BacklogRelief1928,
162
- BacklogRelief2pmEarlyClose1928,
163
- # 1929
164
- BacklogRelief1929,
165
- BacklogRelief1pmEarlyClose1929,
166
- BacklogRelief12pmLateOpen1929,
167
- # 1930
168
- TaftFuneral1230EarlyClose1930,
169
- # 1933
170
- CoolidgeFuneral1933,
171
- BankHolidays1933,
172
- GasFumesOnTradingFloor1230EarlyClose1933,
173
- HeavyVolume1933,
174
- HeavyVolume12pmLateOpen1933,
175
- HeavyVolume11amLateOpen1933,
176
- HeavyVolume2pmEarlyClose1933,
177
- NRAdemonstration12pmEarlyClose1933,
178
- # 1924
179
- Snow11amLateOpen1934,
180
- # 1936
181
- KingGeorgeVFuneral11amLateOpen1936,
182
- # 1944
183
- SatClosings1944,
184
- # 1945
185
- RooseveltDayOfMourning1945,
186
- SatClosings1945,
187
- VJday1945,
188
- NavyDay1945,
189
- # 1946
190
- RailroadStrike1946,
191
- SatClosings1946,
192
- # 1947
193
- SatClosings1947,
194
- # 1948
195
- SatClosings1948,
196
- SevereWeather1948,
197
- # 1949
198
- SatClosings1949,
199
- # 1950
200
- SatClosings1950,
201
- # 1951
202
- SatClosings1951,
203
- # 1952
204
- SatClosings1952,
205
- # 1960
206
- Snow11amLateOpening1960,
207
- # 1963
208
- KennedyAssassination1407EarlyClose,
209
- KennedyFuneral1963,
210
- # 1964
211
- HooverFuneral1400EarlyClose1964,
212
- # 1965
213
- PowerFail1105LateOpen,
214
- # 1966
215
- TransitStrike2pmEarlyClose1966,
216
- # 1967
217
- Snow1015LateOpen1967,
218
- Snow2pmEarlyClose1967,
219
- Backlog2pmEarlyCloses1967,
220
- # 1968
221
- Backlog2pmEarlyCloses1968,
222
- MLKdayOfMourning1968,
223
- PaperworkCrisis1968,
224
- # 1969 - 1970
225
- PaperworkCrisis2pmEarlyCloses1969,
226
- SnowClosing1969,
227
- Snow11amLateOpen1969,
228
- EisenhowerFuneral1969,
229
- Storm1045LateOpen1969,
230
- PaperworkCrisis230pmEarlyCloses1969,
231
- FirstLunarLandingClosing1969,
232
- PaperworkCrisis3pmEarlyCloses1969to1970,
233
- # 1972
234
- TrumanFuneral1972,
235
- # 1973
236
- JohnsonFuneral1973,
237
- Ice11amLateOpen1973,
238
- # 1974
239
- MerrillLynchComputer1015LateOpen1974,
240
- FireDrill1015LateOpen1974,
241
- # 1975
242
- Snow230EarlyClose1975,
243
- # 1976
244
- Storm1115LateOpen1976,
245
- FireDrill1015LateOpen1976,
246
- HurricaneWatch3pmEarlyClose1976,
247
- # 1977
248
- NewYorkCityBlackout77,
249
- # 1978
250
- Snow12pmLateOpen1978,
251
- Snow2pmEarlyClose1978,
252
- Snow11amLateOpen1978,
253
- # 1981
254
- ReaganAssassAttempt317pmEarlyClose1981,
255
- ConEdPowerFail328pmEarlyClose1981,
256
- # 1985
257
- HurricaneGloriaClosings1985,
258
- # 1987
259
- Backlog2pmEarlyCloses1987,
260
- Backlog230pmEarlyCloses1987,
261
- Backlog3pmEarlyCloses1987,
262
- Backlog330pmEarlyCloses1987,
263
- # 1989
264
- Fire11amLateOpen1989,
265
- # 1990
266
- ConEdXformer931amLateOpen1990,
267
- # 1991
268
- TroopsInGulf931LateOpens1991,
269
- # 1994
270
- Snow230pmEarlyClose1994,
271
- NixonFuneral1994,
272
- # 1995
273
- Computer1030LateOpen1995,
274
- # 1996
275
- Snow11amLateOpen1996,
276
- Snow2pmEarlyClose1996,
277
- # 1997
278
- CircuitBreakerTriggered330pmEarlyClose1997,
279
- # 2001
280
- September11Closings2001,
281
- Sept11MomentSilence933amLateOpen2001,
282
- EnduringFreedomMomentSilence931amLateOpen2001,
283
- # 2002
284
- Sept11Anniversary12pmLateOpen2002,
285
- # 2003
286
- IraqiFreedom932amLateOpen2003,
287
- # 2004
288
- ReaganMomentSilence932amLateOpen2004,
289
- ReaganMourning2004,
290
- # 2005
291
- SystemProb356pmEarlyClose2005,
292
- # 2006
293
- FordMomentSilence932amLateOpen2006,
294
- # 2007
295
- FordMourning2007,
296
- # 2012
297
- HurricaneSandyClosings2012,
298
- # 2018
299
- GeorgeHWBushDeath2018,
300
- )
301
- from pandas_market_calendars.market_calendar import MarketCalendar
302
-
303
- # Useful resources for making changes to this file:
304
- # http://www.nyse.com/pdfs/closings.pdf
305
- # http://www.stevemorse.org/jcal/whendid.html
306
-
307
- # Overwrite the default holiday calendar start_date of 1/1/70
308
- AbstractHolidayCalendar.start_date = "1885-01-01"
309
-
310
-
311
- class NYSEExchangeCalendar(MarketCalendar):
312
- """
313
- Exchange calendar for NYSE from 1885-01-01
314
- - Note: DJIA was first recorded 1885-02-16
315
-
316
- REFERENCES:
317
- - https://web.archive.org/web/20141224054812/http://www.nyse.com/about/history/timeline_trading.html
318
- - https://www.marketwatch.com/story/a-brief-history-of-trading-hours-on-wall-street-2015-05-29
319
- - http://www.ltadvisors.net/Info/research/closings.pdf
320
- - https://github.com/rsheftel/pandas_market_calendars/files/6827110/Stocks.NYSE-Closings.pdf
321
-
322
- NYSE OVERVIEW:
323
- - 1792: 5 securities traded
324
- - 1871: Continuous trading begins
325
- - 1885 to 1887: trading hours Mon-Sat 10am to variable 2pm thru 4pm (coded as 3pm)
326
- - 1887: trading hours Mon-Fri 10am-3pm Sat 10am-noon
327
- - 1952-09-29: trading hours Mon-Fri 10am-3:30pm,
328
- - Sat trading removed after Sept 27
329
- - Last effective Saturday traded was May 24, 1952
330
- - 1974: trading hours Mon-Fri 10am-4pm
331
- - 1985: trading hours Mon-Fri 9:30am-4pm
332
-
333
- #######################################
334
- Regularly-Observed Holidays as of 2021:
335
- #######################################
336
- - New Years Day (observed on monday when Jan 1 is a Sunday)
337
- - Martin Luther King Jr. Day (3rd Monday in January, only after 1998)
338
- - Lincoln's Birthday (February 12th, only before 1954 starting in 1896)
339
- - Washington's Birthday (February 22nd, before 1971 with rule change in 1964)
340
- - Washington's Birthday (aka President's Day, 3rd Monday in February, after 1970)
341
- - Good Friday (two days before Easter Sunday)
342
- - Memorial Day (May 30th, before 1970, with rule change in 1964)
343
- - Memorial Day (last Monday in May, after 1970)
344
- - Independence Day (July 4th Sunday to Monday, before 1954)
345
- - Independence Day (observed on the nearest weekday to July 4th, after 1953)
346
- - Election Day (First Tuesday starting on November 2nd, between 1848 and 1967)
347
- - Election Day (Every four years, first Tuesday starting on November 2nd, between 1968 and 1980)
348
- - Veterans Day (November 11th, between 1934 and 1953)
349
- - Columbus Day (October 12th, before 1954)
350
- - Labor Day (first Monday in September)
351
- - Thanksgiving (last Thursday in November, before 1939)
352
- - Thanksgiving (second to last Thursday in November, between 1939 and 1941)
353
- - Thanksgiving (fourth Thursday in November, after 1941)
354
- - Christmas (December 25th, Sunday to Monday, before 1954)
355
- - Christmas (observed on nearest weekday to December 25, after 1953)
356
-
357
- ################################
358
- Regularly-Observed Early Closes:
359
- ################################
360
- - July 3rd (Mondays, Tuesdays, and Thursdays, 1995 onward)
361
- - July 5th (Fridays, 1995 onward, except 2013)
362
- - Christmas Eve (except on Fridays, when the exchange is closed entirely)
363
- - Day After Thanksgiving (aka Black Friday, observed from 1992 onward)
364
-
365
- NOTE: Until 1993, the standard early close time for the NYSE was 2:00 PM.
366
- From 1993 onward, it has been 1:00 PM.
367
-
368
- ####################################
369
- Retired Regularly-Observed Holidays:
370
- ####################################
371
- - Columbus Day (after 1953)
372
- - Armistice/Veterans Day (after 1953)
373
-
374
- #################################
375
- Irregularities Openings/Closings:
376
- #################################
377
- begin reference: https://github.com/rsheftel/pandas_market_calendars/files/6827110/Stocks.NYSE-Closings.pdf
378
- - Closed on Aug 8, 1885 (Sat): President Ulysses S. Grant funeral
379
- - Closed on Jul 2, 1887 (Sat): Saturday before Independence Day
380
- - Closed on Dec 24, 1887 (Sat): Christmas Eve
381
- - Closed on Mar 12-13, 1888 (Mon-Tue): Blizzard of 1888
382
- - Closed on Sep 1, 1888 (Sat): Saturday before Labor Day
383
- - Closed on Nov 30, 1888 (Fri): Friday after Thanksgiving
384
- - Closed on Apr 29 - May 1, 1889 (Mon-Wed): Centennial celbration of Washington's inauguration
385
- - Closed on Jul 5, 1890 (Sat): Saturday after Independence Day
386
- - Closed on Dec 26, 1891 (Sat): Saturday after Christmas
387
- - Closed on Jul 2, 1892 (Sat): Saturday before Independence Day
388
- - Closed on Oct 12, 1892 (Wed) Columbian Celebration (Columbus discovery of America)
389
- - Closed on Oct 21-22, 1892 (Fri-Sat): Columbian Celebration
390
- - Closed on Apr 27, 1893 (Thu): Columbian Celebration
391
- - Closed on Dec 26, 1896 (Sat): Saturday after Christmas
392
- - Closed on Apr 27, 1897 (Tue): Grant's birthday
393
- - Closed on May 4, 1898 (Wed): NYC Charter Day
394
- - Closed on Jul 2, 1898 (Sat): Saturday before Independence Day
395
- - Closed on Aug 20, 1898 (Sat): Welcome of naval commanders
396
- - Closed on Sep 3, 1898 (Sat): Saturday before Labor Day
397
- - Closed on Dec 24, 1898 (Sat): Saturday before Christmas
398
- - Closed on Feb 11, 1899 (Sat): Saturday before Lincoln's birthday
399
- - Closed on May 29, 1899 (Mon): Monday before Decoration Day
400
- - Closed on Jul 3, 1899 (Mon): Monday before Independence Day
401
- - Closed on Sep 29-30, 1899 (Fri-Sat): Admiral Dewey Celebration
402
- - Closed on Nov 25, 1899 (Sat): Funeral of Vice-President Garret A. Hobart
403
- - Closed on Apr 14, 1900 (Sat): Saturday after Good Friday
404
- - Closed on Sep 1, 1900 (Sat): Saturday before Labor Day
405
- - Closed on Dec 24, 1900 (Mon): Christmas Eve
406
- - Closed on Feb 2, 1901 (Sat): Funderal of Queen Victoria of England
407
- - Closed on Feb 23, 1901 (Sat): Saturday after Washington's birthday
408
- - Closed on Apr 6, 1901 (Sat): Saturday after Good Friday
409
- - Closed on Apr 27, 1901 (Sat): Moved to temporary quarters in Produce Exchange
410
- - Closed on May 11, 1901 (Sat): Enlarged temporary quarters in Produce Exchange
411
- - Closed on Jul 5-6, 1901 (Fri-Sat): Days after Independence Day
412
- - Closed on Aug 31, 1901 (Sat): Saturday before Labor Day
413
- - Closed on Sep 14, 1901 (Sat): Death of President William McKinley
414
- - Closed on Sep 19, 1901 (Thu): Funeral of President William McKinley
415
- - Closed on Mar 29, 1902 (Sat): Saturday after Good Friday
416
- - Closed on May 31, 1902 (Sat): Saturday after Decoration Day
417
- - Closed on Jul 5, 1902 (Sat): Saturday after Independence Day
418
- - Closed on Aug 9, 1902 (Sat): Coronation of King Edward VII of England
419
- - Closed on Aug 30, 1902 (Sat): Saturday before Labor Day
420
- - Closed on Feb 21, 1903 (Sat): Saturday before Washington's birthday
421
- - Closed on Apr 11, 1903 (Sat): Saturday after Good Friday
422
- - Closed on Apr 22, 1903 (Wed): Opening of the new NYSE building
423
- - Closed on Sep 5, 1903 (Sat): Saturday before Labor Day
424
- - Closed on Dec 26, 1903 (Sat): Saturday after Christmas
425
- - Closed on May 28, 1904 (Sat): Saturday before Decoration Day
426
- - Closed on Jul 2, 1904 (Sat): Saturday before Independence Day
427
- - Closed on Sep 3, 1904 (Sat): Saturday before Labor Day
428
- - Closed on Dec 24, 1904 (Sat): Saturday before Christmas
429
- - Closed on Apr 22, 1905 (Sat): Saturday after Good Friday
430
- - Closed on Feb 23, 1907 (Sat): Saturday after Washington's birthday
431
- - Closed on Mar 30, 1907 (Sat): Saturday after Good Friday
432
- - Closed on Aug 31, 1907 (Sat): Saturday before Labor Day
433
- - Closed on Apr 18, 1908 (Sat): Saturday after Good Friday
434
- - Early Close 1pm on Jun 25, 1908 (Fri): Former President Grover Cleveland funeral
435
- - Closed on Sep 5, 1908 (Sat): Saturday before Labor Day
436
- - Closed on Dec 26, 1908 (Sat): Saturday after Christmas
437
- - Closed on Feb 13, 1909 (Sat): Saturday after Lincoln's birthday
438
- - Closed on Apr 10, 1909 (Sat): Saturday after Good Friday
439
- - Closed on May 29, 1909 (Sat): Saturday before Decoration Day
440
- - Closed on Jul 3, 1909 (Sat): Saturday before Independence Day
441
- - Closed on Sep 4, 1909 (Sat) Saturday before Labor Day
442
- - Closed on Sep 25, 1909 (Sat): Reception Day of the Hudson-Fulton Celebration
443
- - Closed on Mar 26, 1910 (Sat): Saturday after Good Friday
444
- - Early Close 11am on May 7, 1910 (Sat): King Edward VII of England Death
445
- - Late Open 12pm on May 20, 1910 (Fri): King Edward VII of England Funeral
446
- - Closed on May 28, 1910 (Sat): Saturday before Decoration Day
447
- - Closed on Jul 2, 1910 (Sat): Saturday before Independence Day
448
- - Closed on Sep 3, 1910 (Sat): Saturday before Labor Day
449
- - Closed on Dec 24, 1910 (Sat): Saturday before Christmas
450
- - Closed on Apr 15, 1911 (Sat): Saturday after Good Friday
451
- - Closed on Sep 2, 1911 (Sat): Saturday before Labor Day
452
- - Closed on Dec 23, 1911 (Sat): Saturday before Christmas
453
- - Closed on Aug 31, 1912 (Sat): Saturday before Labor Day
454
- - Closed on Nov 2, 1912 (Sat): Vice-President James S. Sherman funeral
455
- - Closed on Mar 22, 1913 (Sat): Saturday after Good Friday
456
- - Late Open 12pm on Apr 14, 1913 (Mon): JP Morgan funeral
457
- - Closed on May 31, 1913 (Sat): Saturday after Decoration Day
458
- - Closed on Jul 5, 1913 (Sat): Saturday after Independence Day
459
- - Closed on Aug 30, 1913 (Sat): Saturday before Labor Day
460
- - Late Open 12pm on Sep 22, 1913 (Mon): Mayor William J. Gaynor funeral
461
- - Closed on Jul 31-Dec 11, 1914: Pending outbreak of World War I.
462
- - Bonds reopn Nov 28, 1914 for limited trading with restrictions
463
- - Stocks (limited in number) reopen Dec 12, 1914 with restrictions
464
- - Stocks (all stocks) reopen Dec 14, 1914 with restrictions
465
- - Restrictions removed on Apr 1, 1915
466
- - Closed on Dec 30, 1916 (Sat): Saturday before New Year's Day
467
- - Closed on Jun 5, 1917 (Tue): Draft Registraion Day
468
- - Closed on Aug 4, 1917 (Sat): Heat
469
- - Early Close 12pm on Aug 29, 1917 (Wed): Parade of National Guard
470
- - Closed on Sep 1, 1917 (Sat): Saturday before Labor Day
471
- - Closed on Oct 13, 1917 (Sat): Saturday after Columbus Day
472
- - Early Close 12pm on Oct 24, 1917 (Wed): Liberty Day
473
- - Closed on Jan 28, 1918 (Mon): Heatless day
474
- - Closed on Feb 4, 1918 (Mon): Heatless day
475
- - Closed on Feb 11, 1918 (Mon): Heatless day
476
- - Early Close 12pm on Apr 26, 1918 (Fri): Liberty Day
477
- - NOT IMPLEMENTED: Break from 11am to 12pm on Jul 11, 1918 (Thu): Former Mayor John Purroy Mitchell funeral
478
- - Closed on Sep 12, 1918 (Thu): Draft registration day
479
- - Early Close 2:30pm on Nov 7, 1918 (Thu): False armistice report
480
- - Closed on Nov 11, 1918 (Mon): Armistice signed
481
- - Early Close 12:30pm on Jan 7, 1919 (Tue): Former President Theodore Roosevelt funeral
482
- - Closed on Mar 25, 1919 (Tue): Homecoming of 27th Division
483
- - Closed on May 6, 1919 (Tue): Parade of 77th Division
484
- - Closed on May 31, 1919 (Sat): Saturday after Decoratin Day
485
- - Closed on Jul 5, 1919 (Sat): Saturday after Independence Day
486
- - Closed on Jul 19, 1919 (Sat): Heat and backlog catch up
487
- - Closed on Aug 2, 1919 (Sat): Backlog catch up
488
- - Closed on Aug 16, 1919 (Sat): Backlog catch up
489
- - Closed on Aug 30, 1919 (Sat): Saturday before Labor Day
490
- - Closed on Sep 10, 1919 (Wed): Return of General John J. Pershing
491
- - Late Open 10:30am on Dec 30, 1919 (Tue): Traffic block
492
- - Late Open 10:30am on Feb 6, 1920 (Fri): Traffic block
493
- - Closed on Apr 3, 1920 (Sat): Saturday after Good Friday
494
- - Closed on May 1, 1920 (Sat): Many firms changed office locations
495
- - Closed on Jul 3, 1920 (Sat): Saturday before Independence Day
496
- - Closed on Sep 4, 1920 (Sat): Saturday before Labor Day
497
- - Early Close 12pm on Sep 16, 1920 (Thu): Wall Street explosion
498
- - Closed on May 28, 1921 (Sat): Saturday before Decoration Day
499
- - Closed on Jul 2, 1921 (Sat): Saturday before Independence Day
500
- - Late Open 1pm on Aug 2, 1921 (Tue): Fire in annunciator board
501
- - Closed on Sep 3, 1921 (Sat): Saturday before Labor Day
502
- - Closed on Dec 23, 1922 (Sat): Saturday before Christmas
503
- - Closed on Aug 3, 1923 (Fri): President Warren G. Harding death
504
- - NOT IMPLEMENTED: Break 11am to 12:30pm on Aug 8, 1923 (Wed): President Warren G. Harding funeral
505
- - Closed on Aug 10, 1923 (Fri): President Warren G. Harding funeral
506
- - Early Close 12:30pm on Feb 6, 1924 (Wed): Former President Woodrow Wilson funderal
507
- - Closed on May 31, 1924 (Sat): Saturday after Decoration Day
508
- - Late Open 10:45am on Jan 24, 1925 (Sat): Eclipse of sun
509
- - Early Close 2:30pm on Sep 18, 1925 (Fri): Seymour L. Cromwell funeral (former NYSE president)
510
- - Closed on Dec 26, 1925 (Sat): Saturday after Christmas
511
- - Closed on May 29, 1926 (Sat): Saturday before Decoration Day
512
- - Closed on Jul 3, 1926 (Sat): Saturday before Independence Day
513
- - Closed on Sep 4, 1926 (Sat): Saturday before Labor Day
514
- - Closed on Jun 13, 1927 (Mon): Colonel Charles A. Lindberg parade
515
- - Closed on Apr 7, 1928 (Sat): Backlog catch up
516
- - Closed on Apr 21, 1928 (Sat): Backlog catch up
517
- - Closed on May 5, 1928 (Sat): Backlog catch up
518
- - Closed on May 12, 1928 (Sat): Backlog catch up
519
- - Closed on May 19, 1928 (Sat): Backlog catch up
520
- - Early Closes May 21-25, 1928 (Mon-Fri): Backlog catch up
521
- - Closed on May 26, 1928 (Sat): Backlog catch up
522
- - Closed on Nov 24, 1928 (Sat): Backlog catch up
523
- - Closed on Feb 9, 1929 (Sat): Backlog catch up
524
- - Closed on Feb 23, 1929 (Sat): Saturday after Washington's birthday
525
- - Closed on Mar 30, 1929 (Sat): Saturday after Good Friday
526
- - Closed on Aug 31, 1929 (Sat): Saturday before Labor Day
527
- - Late Open 12pm on Oct 31, 1929 (Thu): Backlog catch up and relieve personnel
528
- - Closed on Nov 1-2, 1929 (Fri-Sat): Backlog catch up and relieve personnel
529
- - Early Closes 1pm on Nov 6-8, 1929 (Wed-Fri): Backlog catch up and relieve personnel
530
- - Closed on Nov 9, 1929 (Sat): Backlog catch up and relieve personnel
531
- - Early Closes 1pm on Nov 11-15, 1929 (Mon-Fri): Backlog catch up and relieve personnel
532
- - Closed on Nov 16, 1929 (Sat): Backlog catch up and relieve personnel
533
- - Closed on Nov 18-22, 1929 (Mon-Fri): Backlog catch up and relieve personnel
534
- - Closed on Nov 23, 1929 (Sat): Backlog catch up and relieve personnel
535
- - Closed on Nov 29-30, 1929 (Fri-Sat): Backlog catch up and relieve personnel
536
- - Early Close 12:30pm on Mar 11, 1930 (Tue): Former President William Howard Taft funeral
537
- - Closed on Apr 19, 1930 (Sat): Saturday after Good Friday
538
- - Closed on May 31, 1930 (Sat): Saturday after Decoration Dday
539
- - Closed on Jul 5, 1930 (Sat): Saturday after Independence Day
540
- - Closed on Aug 30, 1930 (Sat): Saturday before Labor Day
541
- - Closed on Sep 5, 1931 (Sat): Saturday before Labor Day
542
- - Closed on Dec 26, 1931 (Sat): Saturday after Christmas
543
- - Closed on Jul 2, 1932 (Sat): Saturday before Independence Day
544
- - Closed on Jan 7, 1933 (Sat): Former President Calvin Coolidge funeral
545
- - Closed on Mar 4, 1933 (Sat): State banking holiday
546
- - Closed on Mar 6-14, 1933 (Mon-Tue): National banking holiday
547
- - Late Open 12pm on Jul 24-25, 1933 (Mon-Tue): Volume activity
548
- - Late Opens AND Early Closes on Jul 26-28, 1933 (Wed-Fri): Volume activity
549
- - Closed on July 29, 1933 (Sat): Volume activity
550
- - Early Close 12:30pm on Aug 4, 1933 (Fri): Gas fumes on trading floor
551
- - Closed on Aug 5, 1933 (Sat): Volume activity
552
- - Closed on Aug 12, 1933 (Sat): Volume activity
553
- - Closed on Aug 19, 1933 (Sat): Volume activity
554
- - Closed on Aug 26, 1933 (Sat): Volume activity
555
- - Closed on Sep 2, 1933 (Sat): Volume activity
556
- - Early Close 12pm on Sep 13, 1933 (Wed): NRA demonstration
557
- - Late Open 11am on Feb 20, 1934 (Tue): severe snowstorm
558
- - Late Open 11am on Jan 28, 1936 (Tue): King George V of England funeral
559
- - Closed on Dec 26, 1936 (Sat): Saturday after Christmas
560
- - Closed on May 29, 1937 (Sat): Saturday before Decoration Day
561
- - Closed on Jul 3, 1937 (Sat): Saturday before Independence Day
562
- - NOT IMPLEMENTED Break from 12-13:00 on May 18, 1942 (Mon): NYSE 150th anniversary
563
- - NOT IMPLEMENTED Break from 14:32-14:58 on Oct 22, 1942 (Thu): Civil Defense drill
564
- - NOT IMPLEMENTED Break from 14:38-14:59 on Oct 26, 1943 (Tue): Civil Defense drill
565
- - Reopened from 15:20-15:40 under special rule of the Board
566
- - Closed on Aug 19, 1944 (Sat)
567
- - Closed on Aug 26, 1944 (Sat)
568
- - Closed on Sep 2, 1944 (Sat)
569
- - Closed on Apr 14, 1945 (Sat): President Franklin D. Roosevelt National Day of mourning
570
- - NOT IMPLEMENTED Break 11:00-13:00 on Jun 19, 1945 (Tue): Parade for General Eisenhower
571
- - Closed on Saturdays Jul 7-Sep 1, 1945
572
- - Closed on Aug 15-16, 1945 (Wed-Thu): VJ Day. End of World War II
573
- - Closed on Oct 13, 1945 (Sat): Saturday after Columbus Day
574
- - Closed on Oct 27, 1945 (Sat): Navy Day
575
- - Closed on Dec 24, 1945 (Mon): Christmas Eve
576
- - Closed on Feb 23, 1946 (Sat): Saturday after Washington's birthday
577
- - Closed on May 25, 1946 (Sat): Railroad strike
578
- - Closed on Saturdays Jun 1-Sep 28, 1946 (Sat-Sat)
579
- - Closed on Saturdays May 31-Sep 27, 1947 (Sat-Sat)
580
- - Closed on Jan 3, 1948 (Sat): severe weather
581
- - Closed on Saturdays May 29-Sep 25, 1948 (Sat-Sat)
582
- - Closed on Saturdays May 28-Sep 4, 1948 (Sat-Sat)
583
- - Cosed on Dec 24, 1949 (Sat): Christmas Eve
584
- - Closed on Saturdays Jun 3-Sep 30, 1950 (Sat-Sat)
585
- - Closed on Dec 12, 1950 (Sat): Saturday before Christmas Eve
586
- - NOT IMPLEMENTED Break from 11:00-13:00 on Apr 20, 1951 (Fri): Parade for General MacArthur
587
- - Closed on Saturdays Jun 2-Sep 29, 1951 (Sat-Sat)
588
- - NOT IMPLEMENTED Break from 10:33-11:05 (Wed): Civil Defense Drill
589
- - Early Close 1pm on Dec 24, 1951 (Mon): Christmas Eve
590
- - Closed on Saturdays May 31-Sep 27, 1952 (Sat-Sat)
591
- - As of Sep 29, 1952 Saturdays were retired as trading days
592
- - As of Sep 29, 1952, M-F trading closes at 3:30pm (30 minutes longer)
593
- - NOT IMPLEMENTED Break 10:02-10:32 on Jun 14, 1954 (Mon): Civil Defense drill
594
- - Closed on Dec 24, 1954 (Fri): Christmas Eve
595
- - NOT IMPLEMENTED Break 14:05-14:35 on Jun 15, 1955 (Wed): Civil Defense drill
596
- - Closed on Dec 24, 1956 (Mon): Christmas Eve
597
- - NOT IMPLEMENTED Break 13:45-14:15 on Jul 12, 1957 (Fri): Civil Defense drill
598
- - NOT IMPLEMENTED Break 10:30-10:50 on May 6, 1958 (Tue): Civil Defense drill
599
- - Closed on Dec 26, 1958 (Fri): Day after Christmas
600
- - NOT IMPLEMENTED Break 13:30-13:50 on Apr 17, 1959 (Fri): Civil Defense drill
601
- - NOT IMPLEMENTED Break 14:16-14:40 on May 3, 1960 (Tue): Civil Defense drill
602
- - Late Open 11:00 on Dec 12, 1960 (Mon): severe snowstorm
603
- - Closed on May 29, 1961 (Mon): Day before Decoration Day
604
- - Early Close 14:07 on Nov 22, 1963 (Fri): President John F. Kennedy assassintion
605
- - Closed on Nov 25, 1963 (Mon): President John F. Kennedy funeral
606
- - Early Close 14:00 on Oct 23, 1964 (Fri): Former President Herbert C. Hoover funeral
607
- - NOT IMPLEMENTED Break 11:00-11:02 on Jan 25, 1965 (Mon): Sir Winston Churchill 2 minutes of silence
608
- - Late Open 11:05 on Nov 10, 1965 (Wed): Power failure in NY grid supply
609
- - Closed on Dec 24, 1965 (Fri): Christmas Eve
610
- - Early Closes 14:00 on Jan 6-14, 1966 (Thu-Fri): Transit strike
611
- - NOT IMPLEMENTED Break 13:00-13:01 on Feb 3, 1967 (Fri): Apollo I disaster moment of silence
612
- - Late Open 10:15 AND Early Close 14:00 on Feb 7, 1967 (Tue): snowstorm
613
- - NOT IMPLEMENTED Break 12:58-13:13 on May 17, 1967 (Wed): Vice President Humphrey spoke in honor of NYSE's 175th anniversary
614
- - Early Closes 14:00 on Aug 8-18, 1967 (Tue-Fri): Backlog catch up
615
- - Early Closes 14:00 on Jan 22-Mar 1, 1968 (Mon-Fri): Backlog catch up
616
- - Closed on Feb 12, 1968 (Mon): Lincoln's birthday (offices open, trading closed)
617
- - NOT IMPLEMENTED Break 11:00-11:01 on Apr 5, 1968 (Fri): Dr. Martin Luther King, Jr. moment of silence
618
- - Closed on Apr 9, 1968 (Tue): Martin Luther King, Jr. day or mourning
619
- - NOT IMPLEMENTED Break 11:00-11:02 on Jun 6, 1968 (Fri): Senator Robert F. Kennedy moment of silence
620
- - 4 day workweek Closed on a Wednesday OR Holiday from Jun 12-Dec 31, 1968: Paperwork crisis
621
- - Closed on July 5, 1968 (Fri): Day after Independence Day
622
- - Early Closes 14:00 on Jan 2-Jul 3, 1969: Paperwork Crisis
623
- - Closed on Feb 10, 1969 (Mon): heavy snow
624
- - Late open 11am on Feb 11, 1969 (Tue): heavy snow
625
- - NOT IMPLEMENTED Break 13:30-13:32 on Mar 28, 1969 (Fri): Former President Dwight D. Eisenhower moment of silence
626
- - Closed on Mar 31, 1969 (Mon): Former President Dwight D. Eisenhower funeral
627
- - Late Open 10:45 on Jun 2, 1969 (Mon): storm
628
- - Early Closes 14:30 on Jul 7-Sep 26,1969 (Mon-Fri): Paperwork Crisis
629
- - Closed on Jul 21, 1969 (Mon): National Day of Participation for lunar exploration
630
- - NOT IMPLEMENTED Break 12:35-13:05 on Sep 3, 1969 (Wed): power failure
631
- - Early Closes 15:00 on Sep 29, 1969 to May 1, 1970: Paperwork Crisis
632
- - Closed on Dec 28, 1972 (Thu): Former President Harry S. Truman funeral
633
- - Closed on Jan 25, 1973 (Thu): Former President Lyndon B. Johnson funeral
634
- - Late Open 11am on Dec 17, 1973 (Mon): ice storm
635
- - Late Open 10:15 on Jan 16, 1974 (Wed): Merrill Lynch computer trouble
636
- - NOT IMPLEMENTED Break 11:09-11:35 on Apr 10, 1974 (Wed): computer malfunction
637
- - NOT IMPLEMENTED Break 11:46-12:22 on Oct 15, 1974 (Wed): Ticker down at 11:37 to 12:22
638
- - Late Open 10:15 on Nov 22, 1974 (Fri): Fire drill
639
- - Early Close 14:00 on Dec 24, 1974 (Tue): Christmas Eve
640
- - NOT IMPLEMENTED Break 10:07-10:50 on Jan 7, 1975 (Tue): Computer stopped
641
- - NOT IMPLEMENTED Break 13:24-13:45 on Jan 15, 1975 (Wed): Computer stopped
642
- - NOT IMPLEMENTED Break 10:24-11:00 on Feb 7, 1975 (Fri): Computer failure
643
- - Early Close 14:30 on Feb 12, 1975 (Wed): snowstorm
644
- - NOT IMPLEMENTED Break 10:09-10:35 on Apr 9, 1975 (Wed): Computer stopped
645
- - Early Close 14:00 on Dec 24, 1975 (Wed): Christmas Eve
646
- - Late Open 11:15 on Feb 2, 1976 (Mon): storm
647
- - Late Open UNKNOWN (coded as 10:15) on Jun 8, 1976 (Tue): fire drill
648
- - Early Close 15:00 on Aug 9, 1976 (Mon): hurricane watch
649
- - NOT IMPLEMENTED Break 1 minute time UNKNOWN on Nov 4, 1976 (Thu): Former NYSE Chair Gustave L. Levy moment of silence
650
- - NOT IMPLEMENTED Break 11:00-11:01 on Feb 24, 1977 (Thu): Former NYSE Chair John A. Coleman moment of silence
651
- - NOT IMPLEMENTED Break 10:24-11:45 on Mar 1, 1977 (Tue): Fire on moving ramp between trading floor and Blue Room
652
- - Closed on July 14, 1977 (Thu): Power failure in NYC
653
- - Late Open 12pm on Jan 20, 1978 (Fri): snowstorm
654
- - Early Close 2pm on Feb 6, 1978 (Mon): snowstorm
655
- - Late Open 11am on Feb 7, 1978 (Tue): snowstorm
656
- - NOT IMPLEMENTED Break 1 minute time UNKNOWN on Dec 13, 1979 (Thu): Former NYSE Chair Robert L. Stott minute of silence
657
- - NOT IMPLEMENTED Break 11:11-12:04 on Oct 13, 1980 (Mon): Computer malfunction
658
- - NOT IMPLEMENTED Break 1 minute time UNKNOWN on Dec 30, 1980 (Tue): Former NYSE Chair James Crane Kellogg III moment of silence
659
- - Early Close 3:17pm on Mar 30, 1981 (Mon): President Reagan assassination attempt
660
- - Early Close 3:28pm on Sep 9, 1981 (Wed): Con Edison power failure
661
- - NOT IMPLEMENTED Break 12:26-12:45pm on Sep 16, 1981 (Wed): Fire alarm malfunction
662
- - NOT IMPLEMENTED Break 10:25-11:00am on Dec 28, 1982 (Tue): small fire
663
- - NOT IMPLEMENTED Break 13:51-15:30 on Oct 13, 1983 (Thu): low speed ticker malfunction
664
- - Closed on Sep 27, 1985 (Fri): Hurricane Gloria
665
- - NOT IMPLEMENTED Break 11:00-11:01 on Jan 29, 1986 (Wed): Challenger space crew moment of silence
666
- - Early Closes 2pm on Oct 23-30, 1987 (Fri-Fri): October 19th break volume
667
- - Early Closes 2:30pm on Nov 2-4, 1987 (Mon-Wed): reason not given volume assumed
668
- - Early Closes 3pm on Nov 5-6, 1987 (Thu-Fri): reason not given volume assumed
669
- - Early Closes 3:30pm on Nov 9-11, 1987 (Mon-Wed): Trading floor and clerical staff strike
670
- - Late Open 11am on Nov 10, 1989 (Fri): Electrical fire
671
- - NOT IMPLEMENTED Break 9:41-11:15 on Nov 23, 1990 (Fri): Internal power failure
672
- - Early Close 2pm on Dec 24, 1990 (Mon): Christmas Eve
673
- - Late Open 11am on Dec 27, 1990 (Thu): explosion of Con Edison transformer
674
- - Late Open 9:31am on Jan 17, 1991 (Thu): American troops in Persian Gulf moment of silence
675
- - Late Open 9:31am on Feb 25, 1991 (Thu): American troops in Persian Gulf moment of silence
676
- - NOT IMPLEMENTED Break 10:21-10:45am on Oct 22, 1991 (Tue): power dip
677
- - Early Close 2pm on Dec 24, 1991 (Tue): Christmas Eve
678
- - NOT IMPLEMENTED Break 1 minute time UNKNOWN on Mar 19, 1992 (Thu): Former NYSE Chair Bernard J. Lasker moment of silence
679
- - NOT IMPLEMENTED Break 1 minute time UNKNOWN on May 15, 1992 (Fri): Former NYSE President G. Keith Funston moment of silence
680
- - NOT IMPELMENTED Break 1 minute time UNKNOWN on Jun 15, 1992 (Mon): Former NYSE President Robert W. Haack moment of silence
681
- - Early Close 2pm on Nov 27, 1992 (Fri): Day after Thanksgiving
682
- - Early Close 2pm on Dec 24, 1992 (Thu): Christmas Eve
683
- - Early Close 1pm on Nov 26, 1993 (Fri): Day after Thanksgiving
684
- - Early Close 14:30 on Feb 11, 1994 (Fri): snowstorm
685
- - NOT IMPLEMENTED Break 12:00-12:02 on Apr 25, 1994 (Mon): Former President Richard M. Nixon moment of silence
686
- - Closed on Apr 27, 1994 (Wed): Former President Richard M. Nixon funderal
687
- - Early Close 1pm on Nov 25, 1994 (Fri): Day after Thanksgiving
688
- - NOT IMPLEMENTED Break 10:02-10:03 on Apr 26, 1995 (Wed): Oklahoma City bombing victims moment of silence
689
- - Early Close 1pm on Jul 3, 1995 (Mon): Day before Independence Day
690
- - Early Close 1pm on Nov 24, 1995 (Fri): Day after Thanksgiving
691
- - Late Open 10:30am on Dec 18, 1995 (Mon): Computer system troubles
692
- - Late Open 11am AND Early Close 2pm on Jan 8, 1996 (Mon): snowstorm
693
- - NOT IMPLEMENTED Break time UNKNOWN on Apr 4, 1996 (Thu): Commerce Secretary Ron Brown and others killed in Balkans plane crash
694
- - Early Close 1pm on July 5, 1996 (Fri): Day after Independence Day
695
- - Early Close 1pm on Nov 29, 1996 (Fri): Day after Thanksgiving
696
- - Early Close 1pm on Dec 24, 1996 (Tue): Christmas Eve
697
- - Early Close 1pm on Jul 3, 1997 (Thu): Day before Independence Day
698
- - NOT IMPLEMENTED Break 14:35-15:05 on Oct 27, 1997 (Mon): Circuit breaker triggered
699
- - Early Close 3:30pm on Oct 27, 1997 (Mon): Circuit breaker triggered
700
- - Early Close 1pm on Nov 28, 1997 (Fri): Day after Thanksgiving
701
- - Early Close 1pm on Dec 24, 1997 (Wed): Christmas Eve
702
- - Early Close 1pm on Dec 26, 1997 (Fri): Friday after Christmas
703
- - NOT IMPLEMENTED Break time UNKNOWN on Jul 29, 1998 (Wed): Former NYSE President William McChesney Marting, Jr. moment of silence
704
- - NOT IMPLEMENTED Break 13:16-14:15 on Oct 26, 1998 (Mon): Computer switch malfunction
705
- - Early Close 1pm on Nov 27, 1998 (Fri): Day after Thanksgiving
706
- - Early Close 1pm on Dec 24, 1998 (Thu): Christmas Eve
707
- - NOT IMPLEMENTED Break 10:00-10:02 on Mar 25, 1999 (Thu): NATO troops in Kosovo minute of silence
708
- - NOT IMPLEMENTED Break 12:00-12:02 on Apr 26, 1999 (Mon): Columbine High School killings moment of silence
709
- - Early Close 1pm on Nov 26, 1999 (Fri): Day after Thanksgiving
710
- - Early Close 1pm on Dec 24, 1999 (Fri): Christmas Eve
711
- - NOT IMPLEMENTED Break 12:00-12:01 on Feb 16, 2000 (Wed): Former NYSE Chair Walter N. Frank moment of silence
712
- - NOT IMPLEMENTED Break 12:00-12:01 on May 4, 2000 (Thu): Archbishop of NY Cardinal John O'Connor moment of silence
713
- - Early Close 1pm on Jul 3, 2000 (Mon): Day before Independence Day
714
- - Early Close 1pm on Nov 24, 2000 (Fri): Day after Thanksgiving
715
- - NOT IMPLEMENTED Break 10:10-11:35 on Jun 8, 2001 (Fri): computer systems connectivity problem
716
- - Early Close 1pm on Jul 3, 2001 (Tue): Day before Independence Day
717
- - Closed on Sep 11-14, 2001 (Tue-Fri): Terrorist attack on World Trade Center
718
- - Late Open 9:33am on Sep 17, 2001 (Mon): 2 minutes silence in honor of lives lost on 9/11
719
- - Late Open 9:31am on Oct 8, 2001 (Mon): 1 minute silence for troops engaged in Operation Enduring Freedom
720
- - Early Close 1pm on Nov 23, 2001 (Fri): Day after Thanksgiving
721
- - Early Close 1pm on Dec 24, 2001 (Mon): Christmas Eve
722
- - NOT IMPLEMENTED Break 10:29-10:31 on May 30, 2002 (Thu): Commemorate end of recovery work at Ground Zero
723
- - Early Close 1pm on Jul 5, 2002 (Fri): Day after Independence Day
724
- - Late Opening 12:00pm on Sep 11, 2002 (Wed): 1 year anniversary of 9/11 attack
725
- - Early Close 1pm on Nov 29, 2002 (Fri): Day after Thanksgiving
726
- - Early Close 1pm on Dec 24, 2002 (Tue): Christmas Eve
727
- - NOT IMPLEMENTED Break 11:00-11:02 on Feb 3, 2002 (Mon): Columbia Space Shuttle lives lost moment of silence
728
- - Late Opening 9:32am on Mar 20, 2003 (Thu): Operation Iraqi Freedom Troops moment of silence
729
- - Early Close 1pm on Jul 3, 2003 (Thu): Day before Independence Day
730
- - NOT IMPLEMENTED multiple 1-minute Breaks 9:59 and 10:29 on Sep 11, 2003 (Thu): 9/11 Commemoration
731
- - Early Close 1pm on Nov 28, 2003 (Fri): Day after Thanksgiving
732
- - Early Close 1pm on Dec 24, 2003 (Wed): Christmas Eve
733
- - Early Close 1pm on Dec 26, 2003 (Fri): Friday after Christmas
734
- - Late Open 9:32am on Jun 7, 2004 (Mon): Former President Ronald Reagan death moment of silence
735
- - Closed on Jun 11, 2004 (Fri): Former President Ronald Reagan National Day of Mourning
736
- - Early Close 1pm on Nov 26, 2004 (Fri): Day after Thanksgiving
737
- - Early Close 3:56pm on Jun 1, 2005 (Wed): Systems communication problem
738
- - Early Close 1pm on Nov 25, 2005 (Fri): Day after Thanksgiving
739
- - Early Close 1pm on Jul 3, 2006 (Mon): Day before Independence Day
740
- - Early Close 1pm on Nov 24, 2006 (Fri): Day after Thanksgiving
741
- - Late Open 9:32am on Dec 27, 2006 (Wed): Former President Gerald Ford moment of silence
742
- - Closed on Jan 2, 2007 (Tue): Former President Gerald Ford National Day of Mourning
743
- - Early Close 1pm on Jul 3, 2007 (Tue): Day before Independence Day
744
- - Early Close 1pm on Nov 23, 2007 (Fri): Day after Thanksgiving
745
- - Early Close 1pm on Dec 24, 2007 (Mon): Christmas Eve
746
- - Early Close 1pm on Jul 4, 2008 (Thu): Day before Independence Day
747
- - Early Close 1pm on Nov 28, 2008 (Fri): Day after Thanksgiving
748
- - Early Close 1pm on Dec 24, 2008 (Wed): Christmas Eve
749
- - NOT IMPLEMENTED Extended Close 4:15pm on Jul 2, 2009 (Thu): Execute customer orders impacted by system irregularities
750
- - Early Close 1pm on Nov 27, 2009 (Fri): Day after Thanksgiving
751
- - Early Close 1pm on Dec 24, 2009 (Thu): Christmas Eve
752
- - Early Close 1pm on Nov 26, 2010 (Fri): Day after Thanksgiving
753
- - NOT IMPLEMENTED Break 11:00-11:01 on Jan 10, 2011 (Mon): Arizona shooting victims moment of silence
754
-
755
- end of reference: https://github.com/rsheftel/pandas_market_calendars/files/6827110/Stocks.NYSE-Closings.pdf
756
- *******************************************************************
757
-
758
- https://www.streetinsider.com/Insiders+Blog/NYSE+Releases+2010+and+2011+Holiday+Calendar/4915576.html
759
- - Early Close 1pm on Nov 25, 2011 (Fri): Day after Thanksgiving
760
-
761
- https://holidaystracker.com/stock-market/new-york-stock-exchange-holidays-2012/
762
- - Early Close 1pm on Jul 4, 2012 (Tue): Day before Independence Day
763
- - Closed on 10/29/2012 and 10/30/2012 due to Hurricane Sandy.
764
- - Early Close 1pm on Nov 23, 2012 (Fri): Day after Thanksgiving
765
- - Early Close 1pm on Dec 24, 2012 (Mon): Christmas Eve
766
-
767
- https://holidaystracker.com/stock-market/new-york-stock-exchange-nyse-holidays-2013/
768
- - Early Close 1pm on Jul 3, 2013 (Wed): Day before Independence Day
769
- - Early Close 1pm on Nov 29, 2013 (Fri): Day after Thanksgiving
770
- - Early Close 1pm on Dec 24, 2013 (Tue): Christmas Eve
771
-
772
- https://www.streetinsider.com/Insiders+Blog/NYSE+2014+and+2015+Holiday+Hours/8999575.html - Early Close 1pm on Jul 3, 2014 (Thu): Day before Independence Day
773
- - Early Close 1pm on Jul 3, 2014 (Thu): Day before Independence Day
774
- - Early Close 1pm on Nov 28, 2014 (Fri): Day after Thanksgiving
775
- - Early Close 1pm on Dec 24, 2014 (Wed): Christmas Eve
776
-
777
- https://www.businesswire.com/news/home/20141208006349/en/NYSE-Group-2016-Holiday-Calendar-and-Early-Closings
778
- - Early Close 1pm on Nov 27, 2015 (Fri): Day after Thanksgiving
779
- - Early Close 1pm on Dec 24, 2015 (Thu): Christmas Eve
780
- - Early Close 1pm on Nov 25, 2016 (Fri): Day after Thanksgiving
781
-
782
- https://www.stockinvestor.com/30380/stock-market-holidays-2017/
783
- - Early Close 1pm on Jul 3, 2017 (Mon): Day before Independence Day
784
- - Early Close 1pm on Nov 24, 2017 (Fri): Day after Thanksgiving
785
- - Early Close 1pm on Jul 3, 2018 (Tue): Day before Independence Day
786
- - Early Close 1pm on Nov 23, 2018 (Fri): Day after Thanksgiving
787
- - Closed on 12/5/2018 due to George H.W. Bush's death.
788
- - Early Close 1pm on Dec 24, 2018 (Tue): Christmas Eve
789
- - Early Close 1pm on Jul 3, 2019 (Wed): Day before Independence Day
790
- - Early Close 1pm on Nov 29, 2019 (Fri): Day after Thanksgiving
791
- - Early Close 1pm on Dec 24, 2019 (Wed): Christmas Eve
792
-
793
- https://holidaystracker.com/stock-market/new-york-stock-exchange-nyse-holidays-2020/
794
- - Early Close 1pm on Nov 27, 2020 (Fri): Day after Thanksgiving
795
- - Early Close 1pm on Dec 24, 2020 (Thu): Christmas Eve
796
-
797
-
798
- NOTE: The exchange was **not** closed early on Friday December 26, 2008,
799
- nor was it closed on Friday December 26, 2014. The next Thursday Christmas
800
- will be in 2025. If someone is still maintaining this code in 2025, then
801
- we've done alright...and we should check if it's a half day.
802
-
803
- """
804
-
805
- aliases = ["NYSE", "stock", "NASDAQ", "BATS", "DJIA", "DOW"]
806
-
807
- regular_market_times = {
808
- "pre": ((None, time(4)),),
809
- "market_open": ((None, time(10)), ("1985-01-01", time(9, 30))),
810
- "market_close": (
811
- (None, time(15)),
812
- ("1952-09-29", time(15, 30)),
813
- ("1974-01-01", time(16)),
814
- ),
815
- "post": ((None, time(20)),),
816
- }
817
-
818
- _saturday_close = time(12)
819
- _saturday_end = pd.Timestamp("1952-09-29", tz="UTC")
820
-
821
- @property
822
- def name(self):
823
- return "NYSE"
824
-
825
- @property
826
- def tz(self):
827
- return timezone("America/New_York")
828
-
829
- @property
830
- def weekmask(self):
831
- return "Mon Tue Wed Thu Fri Sat" # Market open on Saturdays thru 5/24/1952
832
-
833
- @property
834
- def regular_holidays(self):
835
- return AbstractHolidayCalendar(
836
- rules=[
837
- USNewYearsDayNYSEpost1952,
838
- USNewYearsDayNYSEpre1952,
839
- USMartinLutherKingJrAfter1998,
840
- USPresidentsDay,
841
- USWashingtonsBirthDayBefore1952,
842
- USWashingtonsBirthDay1952to1963,
843
- USWashingtonsBirthDay1964to1970,
844
- USLincolnsBirthDayBefore1954,
845
- GoodFriday,
846
- GoodFridayPre1898,
847
- GoodFriday1899to1905,
848
- USMemorialDay,
849
- USMemorialDayBefore1952,
850
- USMemorialDay1952to1964,
851
- USMemorialDay1964to1969,
852
- USIndependenceDay,
853
- USIndependenceDayPre1952,
854
- USIndependenceDay1952to1954,
855
- USLaborDayStarting1887,
856
- USColumbusDayBefore1954,
857
- USElectionDay1848to1967,
858
- USVeteransDay1934to1953,
859
- USThanksgivingDay,
860
- USThanksgivingDayBefore1939,
861
- USThanksgivingDay1939to1941,
862
- ChristmasNYSE,
863
- Christmas54to98NYSE,
864
- ChristmasBefore1954,
865
- USJuneteenthAfter2022,
866
- ]
867
- )
868
-
869
- @property
870
- def adhoc_holidays(self):
871
- return list(
872
- chain(
873
- # Recurring Holidays
874
- SatAfterGoodFridayAdhoc,
875
- MonBeforeIndependenceDayAdhoc,
876
- SatBeforeIndependenceDayAdhoc,
877
- SatAfterIndependenceDayAdhoc,
878
- DaysAfterIndependenceDayAdhoc,
879
- SatBeforeLaborDayAdhoc,
880
- USElectionDay1968to1980Adhoc,
881
- FridayAfterThanksgivingAdHoc,
882
- SatBeforeChristmasAdhoc,
883
- SatAfterChristmasAdhoc,
884
- ChristmasEvesAdhoc,
885
- DayAfterChristmasAdhoc,
886
- # Retired
887
- USVetransDayAdHoc,
888
- SatAfterColumbusDayAdHoc,
889
- LincolnsBirthDayAdhoc,
890
- GrantsBirthDayAdhoc,
891
- SatBeforeNewYearsAdhoc,
892
- SatBeforeWashingtonsBirthdayAdhoc,
893
- SatAfterWashingtonsBirthdayAdhoc,
894
- SatBeforeAfterLincolnsBirthdayAdhoc,
895
- SatBeforeDecorationAdhoc,
896
- SatAfterDecorationAdhoc,
897
- DayBeforeDecorationAdhoc,
898
- # Irregularities
899
- UlyssesGrantFuneral1885,
900
- ColumbianCelebration1892,
901
- GreatBlizzardOf1888,
902
- WashingtonInaugurationCentennialCelebration1889,
903
- CharterDay1898,
904
- WelcomeNavalCommander1898,
905
- AdmiralDeweyCelebration1899,
906
- GarretHobartFuneral1899,
907
- QueenVictoriaFuneral1901,
908
- MovedToProduceExchange1901,
909
- EnlargedProduceExchange1901,
910
- McKinleyDeathAndFuneral1901,
911
- KingEdwardVIIcoronation1902,
912
- NYSEnewBuildingOpen1903,
913
- HudsonFultonCelebration1909,
914
- JamesShermanFuneral1912,
915
- OnsetOfWWI1914,
916
- WeatherHeatClosing1917,
917
- DraftRegistrationDay1917,
918
- WeatherNoHeatClosing1918,
919
- DraftRegistrationDay1918,
920
- ArmisticeSigned1918,
921
- Homecoming27Division1919,
922
- ParadeOf77thDivision1919,
923
- BacklogRelief1919,
924
- GeneralPershingReturn1919,
925
- OfficeLocationChange1920,
926
- HardingDeath1923,
927
- HardingFuneral1923,
928
- LindberghParade1927,
929
- BacklogRelief1928,
930
- BacklogRelief1929,
931
- CoolidgeFuneral1933,
932
- BankHolidays1933,
933
- HeavyVolume1933,
934
- SatClosings1944,
935
- RooseveltDayOfMourning1945,
936
- SatClosings1945,
937
- VJday1945,
938
- NavyDay1945,
939
- RailroadStrike1946,
940
- SatClosings1946,
941
- SatClosings1947,
942
- SatClosings1948,
943
- SevereWeather1948,
944
- SatClosings1949,
945
- SatClosings1950,
946
- SatClosings1951,
947
- SatClosings1952,
948
- KennedyFuneral1963,
949
- MLKdayOfMourning1968,
950
- PaperworkCrisis1968,
951
- SnowClosing1969,
952
- EisenhowerFuneral1969,
953
- FirstLunarLandingClosing1969,
954
- TrumanFuneral1972,
955
- JohnsonFuneral1973,
956
- NewYorkCityBlackout77,
957
- HurricaneGloriaClosings1985,
958
- NixonFuneral1994,
959
- ReaganMourning2004,
960
- FordMourning2007,
961
- September11Closings2001,
962
- HurricaneSandyClosings2012,
963
- GeorgeHWBushDeath2018,
964
- )
965
- )
966
-
967
- #
968
- @property
969
- def special_closes(self):
970
- return [
971
- (
972
- time(11, tzinfo=timezone("America/New_York")),
973
- AbstractHolidayCalendar(
974
- rules=[
975
- KingEdwardDeath11amyClose1910,
976
- ]
977
- ),
978
- ),
979
- (
980
- time(12, tzinfo=timezone("America/New_York")),
981
- AbstractHolidayCalendar(
982
- rules=[
983
- ParadeOfNationalGuardEarlyClose1917,
984
- LibertyDay12pmEarlyClose1917,
985
- LibertyDay12pmEarlyClose1918,
986
- WallStreetExplosionEarlyClose1920,
987
- NRAdemonstration12pmEarlyClose1933,
988
- ]
989
- ),
990
- ),
991
- (
992
- time(hour=12, minute=30, tzinfo=timezone("America/New_York")),
993
- AbstractHolidayCalendar(
994
- rules=[
995
- RooseveltFuneral1230EarlyClose1919,
996
- WoodrowWilsonFuneral1230EarlyClose1924,
997
- TaftFuneral1230EarlyClose1930,
998
- GasFumesOnTradingFloor1230EarlyClose1933,
999
- ]
1000
- ),
1001
- ),
1002
- (
1003
- time(13, tzinfo=timezone("America/New_York")),
1004
- AbstractHolidayCalendar(
1005
- rules=[
1006
- FridayAfterIndependenceDayNYSEpre2013,
1007
- MonTuesThursBeforeIndependenceDay,
1008
- WednesdayBeforeIndependenceDayPost2013,
1009
- DayAfterThanksgiving1pmEarlyCloseInOrAfter1993,
1010
- ChristmasEvePost1999Early1pmClose,
1011
- GroverClevelandFuneral1pmClose1908,
1012
- ]
1013
- ),
1014
- ),
1015
- (
1016
- time(14, tzinfo=timezone("America/New_York")),
1017
- AbstractHolidayCalendar(
1018
- rules=[
1019
- DayAfterThanksgiving2pmEarlyCloseBefore1993,
1020
- HooverFuneral1400EarlyClose1964,
1021
- Snow2pmEarlyClose1967,
1022
- Snow2pmEarlyClose1978,
1023
- Snow2pmEarlyClose1996,
1024
- ]
1025
- ),
1026
- ),
1027
- (
1028
- time(14, 7, tzinfo=timezone("America/New_York")),
1029
- AbstractHolidayCalendar(
1030
- rules=[
1031
- KennedyAssassination1407EarlyClose,
1032
- ]
1033
- ),
1034
- ),
1035
- (
1036
- time(hour=14, minute=30, tzinfo=timezone("America/New_York")),
1037
- AbstractHolidayCalendar(
1038
- rules=[
1039
- FalseArmisticeReport1430EarlyClose1918,
1040
- CromwellFuneral1430EarlyClose1925,
1041
- Snow230EarlyClose1975,
1042
- Snow230pmEarlyClose1994,
1043
- ]
1044
- ),
1045
- ),
1046
- (
1047
- time(15, tzinfo=timezone("America/New_York")),
1048
- AbstractHolidayCalendar(
1049
- rules=[
1050
- HurricaneWatch3pmEarlyClose1976,
1051
- ]
1052
- ),
1053
- ),
1054
- (
1055
- time(15, 17, tzinfo=timezone("America/New_York")),
1056
- AbstractHolidayCalendar(
1057
- rules=[
1058
- ReaganAssassAttempt317pmEarlyClose1981,
1059
- ]
1060
- ),
1061
- ),
1062
- (
1063
- time(15, 28, tzinfo=timezone("America/New_York")),
1064
- AbstractHolidayCalendar(
1065
- rules=[
1066
- ConEdPowerFail328pmEarlyClose1981,
1067
- ]
1068
- ),
1069
- ),
1070
- (
1071
- time(15, 30, tzinfo=timezone("America/New_York")),
1072
- AbstractHolidayCalendar(
1073
- rules=[
1074
- CircuitBreakerTriggered330pmEarlyClose1997,
1075
- ]
1076
- ),
1077
- ),
1078
- (
1079
- time(15, 56, tzinfo=timezone("America/New_York")),
1080
- AbstractHolidayCalendar(
1081
- rules=[
1082
- SystemProb356pmEarlyClose2005,
1083
- ]
1084
- ),
1085
- ),
1086
- ]
1087
-
1088
- #
1089
- @property
1090
- def special_closes_adhoc(self):
1091
- def _union_many(indexes):
1092
- # Merges a list of pd.DatetimeIndex objects, returns merged DatetimeIndex
1093
- union_index = pd.DatetimeIndex([], tz="UTC")
1094
- for index in indexes:
1095
- union_index = union_index.union(index)
1096
- return union_index
1097
-
1098
- return [
1099
- (
1100
- time(13, tzinfo=timezone("America/New_York")),
1101
- # DaysBeforeIndependenceDay1pmEarlyCloseAdhoc # list
1102
- ChristmasEve1pmEarlyCloseAdhoc
1103
- + DayAfterChristmas1pmEarlyCloseAdhoc
1104
- + BacklogRelief1pmEarlyClose1929,
1105
- ),
1106
- (
1107
- time(14, tzinfo=timezone("America/New_York")),
1108
- _union_many(
1109
- [
1110
- pd.DatetimeIndex(
1111
- ChristmasEve2pmEarlyCloseAdhoc
1112
- + HeavyVolume2pmEarlyClose1933
1113
- )
1114
- ]
1115
- + [
1116
- BacklogRelief2pmEarlyClose1928,
1117
- TransitStrike2pmEarlyClose1966, # index
1118
- Backlog2pmEarlyCloses1967, # index
1119
- Backlog2pmEarlyCloses1968, # index
1120
- PaperworkCrisis2pmEarlyCloses1969, # index
1121
- Backlog2pmEarlyCloses1987,
1122
- ]
1123
- ), # index
1124
- ),
1125
- (
1126
- time(14, 30, tzinfo=timezone("America/New_York")),
1127
- _union_many(
1128
- [PaperworkCrisis230pmEarlyCloses1969, Backlog230pmEarlyCloses1987]
1129
- ), # index
1130
- ),
1131
- (
1132
- time(15, tzinfo=timezone("America/New_York")),
1133
- _union_many(
1134
- [PaperworkCrisis3pmEarlyCloses1969to1970, Backlog3pmEarlyCloses1987]
1135
- ), # index
1136
- ),
1137
- (
1138
- time(15, 30, tzinfo=timezone("America/New_York")),
1139
- Backlog330pmEarlyCloses1987, # index
1140
- ),
1141
- ]
1142
-
1143
- #
1144
- @property
1145
- def special_opens(self):
1146
- return [
1147
- (
1148
- time(hour=9, minute=31, tzinfo=timezone("America/New_York")),
1149
- AbstractHolidayCalendar(
1150
- rules=[
1151
- ConEdXformer931amLateOpen1990,
1152
- EnduringFreedomMomentSilence931amLateOpen2001,
1153
- ]
1154
- ),
1155
- ),
1156
- (
1157
- time(hour=9, minute=32, tzinfo=timezone("America/New_York")),
1158
- AbstractHolidayCalendar(
1159
- rules=[
1160
- IraqiFreedom932amLateOpen2003,
1161
- ReaganMomentSilence932amLateOpen2004,
1162
- FordMomentSilence932amLateOpen2006,
1163
- ]
1164
- ),
1165
- ),
1166
- (
1167
- time(hour=9, minute=33, tzinfo=timezone("America/New_York")),
1168
- AbstractHolidayCalendar(
1169
- rules=[
1170
- Sept11MomentSilence933amLateOpen2001,
1171
- ]
1172
- ),
1173
- ),
1174
- (
1175
- time(hour=10, minute=15, tzinfo=timezone("America/New_York")),
1176
- AbstractHolidayCalendar(
1177
- rules=[
1178
- Snow1015LateOpen1967,
1179
- MerrillLynchComputer1015LateOpen1974,
1180
- FireDrill1015LateOpen1974,
1181
- FireDrill1015LateOpen1976,
1182
- ]
1183
- ),
1184
- ),
1185
- (
1186
- time(hour=10, minute=30, tzinfo=timezone("America/New_York")),
1187
- AbstractHolidayCalendar(
1188
- rules=[
1189
- TrafficBlockLateOpen1919,
1190
- TrafficBlockLateOpen1920,
1191
- Computer1030LateOpen1995,
1192
- ]
1193
- ),
1194
- ),
1195
- (
1196
- time(hour=10, minute=45, tzinfo=timezone("America/New_York")),
1197
- AbstractHolidayCalendar(
1198
- rules=[
1199
- EclipseOfSunLateOpen1925,
1200
- Storm1045LateOpen1969,
1201
- ]
1202
- ),
1203
- ),
1204
- (
1205
- time(11, tzinfo=timezone("America/New_York")),
1206
- AbstractHolidayCalendar(
1207
- rules=[
1208
- Snow11amLateOpen1934,
1209
- KingGeorgeVFuneral11amLateOpen1936,
1210
- Snow11amLateOpening1960,
1211
- Snow11amLateOpen1969,
1212
- Ice11amLateOpen1973,
1213
- Snow11amLateOpen1978,
1214
- Fire11amLateOpen1989,
1215
- Snow11amLateOpen1996,
1216
- ]
1217
- ),
1218
- ),
1219
- (
1220
- time(11, 5, tzinfo=timezone("America/New_York")),
1221
- AbstractHolidayCalendar(
1222
- rules=[
1223
- PowerFail1105LateOpen,
1224
- ]
1225
- ),
1226
- ),
1227
- (
1228
- time(11, 15, tzinfo=timezone("America/New_York")),
1229
- AbstractHolidayCalendar(
1230
- rules=[
1231
- Storm1115LateOpen1976,
1232
- ]
1233
- ),
1234
- ),
1235
- (
1236
- time(12, tzinfo=timezone("America/New_York")),
1237
- AbstractHolidayCalendar(
1238
- rules=[
1239
- KingEdwardFuneral12pmOpen1910,
1240
- JPMorganFuneral12pmOpen1913,
1241
- WilliamGaynorFuneral12pmOpen1913,
1242
- Snow12pmLateOpen1978,
1243
- Sept11Anniversary12pmLateOpen2002,
1244
- ]
1245
- ),
1246
- ),
1247
- (
1248
- time(13, tzinfo=timezone("America/New_York")),
1249
- AbstractHolidayCalendar(
1250
- rules=[
1251
- AnnunciatorBoardFire1pmLateOpen1921,
1252
- ]
1253
- ),
1254
- ),
1255
- ]
1256
-
1257
- #
1258
- @property
1259
- def special_opens_adhoc(self):
1260
- return [
1261
- (
1262
- time(9, 31, tzinfo=timezone("America/New_York")),
1263
- TroopsInGulf931LateOpens1991,
1264
- ),
1265
- (
1266
- time(11, tzinfo=timezone("America/New_York")),
1267
- HeavyVolume11amLateOpen1933,
1268
- ),
1269
- (
1270
- time(12, tzinfo=timezone("America/New_York")),
1271
- BacklogRelief12pmLateOpen1929 + HeavyVolume12pmLateOpen1933,
1272
- ),
1273
- ]
1274
-
1275
- # Override market_calendar.py
1276
- def valid_days(self, start_date, end_date, tz="UTC"):
1277
- """
1278
- Get a DatetimeIndex of valid open business days.
1279
-
1280
- :param start_date: start date
1281
- :param end_date: end date
1282
- :param tz: time zone in either string or pytz.timezone
1283
- :return: DatetimeIndex of valid business days
1284
- """
1285
- trading_days = super().valid_days(start_date, end_date, tz=tz)
1286
-
1287
- # Starting Monday Sept. 29, 1952, no more saturday trading days
1288
- if tz is None:
1289
- saturday_end = self._saturday_end.tz_localize(None)
1290
- else:
1291
- saturday_end = self._saturday_end
1292
-
1293
- above_cut_off = trading_days >= saturday_end
1294
- if above_cut_off.any():
1295
- above_and_saturday = (trading_days.weekday == 5) & above_cut_off
1296
- trading_days = trading_days[~above_and_saturday]
1297
-
1298
- return trading_days
1299
-
1300
- def days_at_time(self, days, market_time, day_offset=0):
1301
- days = super().days_at_time(days, market_time, day_offset=day_offset)
1302
-
1303
- if market_time == "market_close" and not self.is_custom(market_time):
1304
- days = days.dt.tz_convert(self.tz)
1305
- days = days.where(
1306
- days.dt.weekday != 5,
1307
- days.dt.normalize() + self._tdelta(self._saturday_close),
1308
- )
1309
- days = days.dt.tz_convert("UTC")
1310
- return days
1311
-
1312
- def early_closes(self, schedule):
1313
- """
1314
- Get a DataFrame of the dates that are an early close.
1315
-
1316
- :param schedule: schedule DataFrame
1317
- :return: schedule DataFrame with rows that are early closes
1318
- """
1319
- early = super().early_closes(schedule)
1320
-
1321
- # make sure saturdays are not considered early closes if they are >= 12pm
1322
- mc = early.market_close.dt.tz_convert(self.tz)
1323
- after_noon = (mc - mc.dt.normalize()).ge(self._tdelta(self._saturday_close))
1324
- return early[~(mc.dt.weekday.eq(5) & after_noon)]
1
+ #
2
+ # Copyright 2016 Quantopian, Inc.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ from datetime import time
17
+ from itertools import chain
18
+
19
+ import pandas as pd
20
+ from pandas.tseries.holiday import AbstractHolidayCalendar
21
+ from pytz import timezone
22
+
23
+ from pandas_market_calendars.holidays.nyse import (
24
+ # Always Celebrated Holidays
25
+ USNewYearsDayNYSEpost1952,
26
+ USNewYearsDayNYSEpre1952,
27
+ SatBeforeNewYearsAdhoc,
28
+ USPresidentsDay,
29
+ USWashingtonsBirthDay1964to1970,
30
+ USWashingtonsBirthDayBefore1952,
31
+ USWashingtonsBirthDay1952to1963,
32
+ USLincolnsBirthDayBefore1954,
33
+ LincolnsBirthDayAdhoc,
34
+ SatBeforeWashingtonsBirthdayAdhoc,
35
+ SatAfterWashingtonsBirthdayAdhoc,
36
+ SatBeforeAfterLincolnsBirthdayAdhoc,
37
+ GrantsBirthDayAdhoc,
38
+ USMartinLutherKingJrAfter1998,
39
+ GoodFriday,
40
+ GoodFridayPre1898,
41
+ GoodFriday1899to1905,
42
+ SatAfterGoodFridayAdhoc,
43
+ USMemorialDay,
44
+ USMemorialDayBefore1952,
45
+ USMemorialDay1952to1964,
46
+ USMemorialDay1964to1969,
47
+ SatBeforeDecorationAdhoc,
48
+ SatAfterDecorationAdhoc,
49
+ DayBeforeDecorationAdhoc,
50
+ USJuneteenthAfter2022,
51
+ USIndependenceDay,
52
+ USIndependenceDayPre1952,
53
+ USIndependenceDay1952to1954,
54
+ SatBeforeIndependenceDayAdhoc,
55
+ SatAfterIndependenceDayAdhoc,
56
+ MonTuesThursBeforeIndependenceDay,
57
+ FridayAfterIndependenceDayNYSEpre2013,
58
+ WednesdayBeforeIndependenceDayPost2013,
59
+ MonBeforeIndependenceDayAdhoc,
60
+ DaysAfterIndependenceDayAdhoc,
61
+ # DaysBeforeIndependenceDay1pmEarlyCloseAdhoc,
62
+ USColumbusDayBefore1954,
63
+ USElectionDay1848to1967,
64
+ USLaborDayStarting1887,
65
+ SatBeforeLaborDayAdhoc,
66
+ USThanksgivingDay,
67
+ USThanksgivingDay1939to1941,
68
+ USThanksgivingDayBefore1939,
69
+ DayAfterThanksgiving2pmEarlyCloseBefore1993,
70
+ DayAfterThanksgiving1pmEarlyCloseInOrAfter1993,
71
+ FridayAfterThanksgivingAdHoc,
72
+ USElectionDay1968to1980Adhoc,
73
+ ChristmasNYSE,
74
+ Christmas54to98NYSE,
75
+ ChristmasBefore1954,
76
+ ChristmasEvesAdhoc,
77
+ DayAfterChristmasAdhoc,
78
+ DayAfterChristmas1pmEarlyCloseAdhoc,
79
+ ChristmasEvePost1999Early1pmClose,
80
+ ChristmasEve1pmEarlyCloseAdhoc,
81
+ ChristmasEve2pmEarlyCloseAdhoc,
82
+ SatBeforeChristmasAdhoc,
83
+ SatAfterChristmasAdhoc,
84
+ # Retired Holidays
85
+ USVetransDayAdHoc,
86
+ SatAfterColumbusDayAdHoc,
87
+ USVeteransDay1934to1953,
88
+ # Adhoc Holidays
89
+ # 1885
90
+ UlyssesGrantFuneral1885,
91
+ # 1892
92
+ ColumbianCelebration1892,
93
+ # 1888
94
+ GreatBlizzardOf1888,
95
+ # 1889
96
+ WashingtonInaugurationCentennialCelebration1889,
97
+ # 1898
98
+ CharterDay1898,
99
+ WelcomeNavalCommander1898,
100
+ # 1899
101
+ AdmiralDeweyCelebration1899,
102
+ GarretHobartFuneral1899,
103
+ # 1901
104
+ McKinleyDeathAndFuneral1901,
105
+ QueenVictoriaFuneral1901,
106
+ MovedToProduceExchange1901,
107
+ EnlargedProduceExchange1901,
108
+ # 1902
109
+ KingEdwardVIIcoronation1902,
110
+ # 1903
111
+ NYSEnewBuildingOpen1903,
112
+ # 1908
113
+ GroverClevelandFuneral1pmClose1908,
114
+ # 1909
115
+ HudsonFultonCelebration1909,
116
+ # 1910
117
+ KingEdwardDeath11amyClose1910,
118
+ KingEdwardFuneral12pmOpen1910,
119
+ # 1912
120
+ JamesShermanFuneral1912,
121
+ # 1913
122
+ JPMorganFuneral12pmOpen1913,
123
+ WilliamGaynorFuneral12pmOpen1913,
124
+ # 1914
125
+ OnsetOfWWI1914,
126
+ # 1917
127
+ WeatherHeatClosing1917,
128
+ ParadeOfNationalGuardEarlyClose1917,
129
+ LibertyDay12pmEarlyClose1917,
130
+ DraftRegistrationDay1917,
131
+ # 1918
132
+ WeatherNoHeatClosing1918,
133
+ DraftRegistrationDay1918,
134
+ LibertyDay12pmEarlyClose1918,
135
+ FalseArmisticeReport1430EarlyClose1918,
136
+ ArmisticeSigned1918,
137
+ # 1919
138
+ RooseveltFuneral1230EarlyClose1919,
139
+ Homecoming27Division1919,
140
+ ParadeOf77thDivision1919,
141
+ BacklogRelief1919,
142
+ GeneralPershingReturn1919,
143
+ TrafficBlockLateOpen1919,
144
+ # 1920
145
+ TrafficBlockLateOpen1920,
146
+ OfficeLocationChange1920,
147
+ WallStreetExplosionEarlyClose1920,
148
+ # 1921
149
+ AnnunciatorBoardFire1pmLateOpen1921,
150
+ # 1923
151
+ HardingDeath1923,
152
+ HardingFuneral1923,
153
+ # 1924
154
+ WoodrowWilsonFuneral1230EarlyClose1924,
155
+ # 1925
156
+ EclipseOfSunLateOpen1925,
157
+ CromwellFuneral1430EarlyClose1925,
158
+ # 1927
159
+ LindberghParade1927,
160
+ # 1928
161
+ BacklogRelief1928,
162
+ BacklogRelief2pmEarlyClose1928,
163
+ # 1929
164
+ BacklogRelief1929,
165
+ BacklogRelief1pmEarlyClose1929,
166
+ BacklogRelief12pmLateOpen1929,
167
+ # 1930
168
+ TaftFuneral1230EarlyClose1930,
169
+ # 1933
170
+ CoolidgeFuneral1933,
171
+ BankHolidays1933,
172
+ GasFumesOnTradingFloor1230EarlyClose1933,
173
+ HeavyVolume1933,
174
+ HeavyVolume12pmLateOpen1933,
175
+ HeavyVolume11amLateOpen1933,
176
+ HeavyVolume2pmEarlyClose1933,
177
+ NRAdemonstration12pmEarlyClose1933,
178
+ # 1924
179
+ Snow11amLateOpen1934,
180
+ # 1936
181
+ KingGeorgeVFuneral11amLateOpen1936,
182
+ # 1944
183
+ SatClosings1944,
184
+ # 1945
185
+ RooseveltDayOfMourning1945,
186
+ SatClosings1945,
187
+ VJday1945,
188
+ NavyDay1945,
189
+ # 1946
190
+ RailroadStrike1946,
191
+ SatClosings1946,
192
+ # 1947
193
+ SatClosings1947,
194
+ # 1948
195
+ SatClosings1948,
196
+ SevereWeather1948,
197
+ # 1949
198
+ SatClosings1949,
199
+ # 1950
200
+ SatClosings1950,
201
+ # 1951
202
+ SatClosings1951,
203
+ # 1952
204
+ SatClosings1952,
205
+ # 1960
206
+ Snow11amLateOpening1960,
207
+ # 1963
208
+ KennedyAssassination1407EarlyClose,
209
+ KennedyFuneral1963,
210
+ # 1964
211
+ HooverFuneral1400EarlyClose1964,
212
+ # 1965
213
+ PowerFail1105LateOpen,
214
+ # 1966
215
+ TransitStrike2pmEarlyClose1966,
216
+ # 1967
217
+ Snow1015LateOpen1967,
218
+ Snow2pmEarlyClose1967,
219
+ Backlog2pmEarlyCloses1967,
220
+ # 1968
221
+ Backlog2pmEarlyCloses1968,
222
+ MLKdayOfMourning1968,
223
+ PaperworkCrisis1968,
224
+ # 1969 - 1970
225
+ PaperworkCrisis2pmEarlyCloses1969,
226
+ SnowClosing1969,
227
+ Snow11amLateOpen1969,
228
+ EisenhowerFuneral1969,
229
+ Storm1045LateOpen1969,
230
+ PaperworkCrisis230pmEarlyCloses1969,
231
+ FirstLunarLandingClosing1969,
232
+ PaperworkCrisis3pmEarlyCloses1969to1970,
233
+ # 1972
234
+ TrumanFuneral1972,
235
+ # 1973
236
+ JohnsonFuneral1973,
237
+ Ice11amLateOpen1973,
238
+ # 1974
239
+ MerrillLynchComputer1015LateOpen1974,
240
+ FireDrill1015LateOpen1974,
241
+ # 1975
242
+ Snow230EarlyClose1975,
243
+ # 1976
244
+ Storm1115LateOpen1976,
245
+ FireDrill1015LateOpen1976,
246
+ HurricaneWatch3pmEarlyClose1976,
247
+ # 1977
248
+ NewYorkCityBlackout77,
249
+ # 1978
250
+ Snow12pmLateOpen1978,
251
+ Snow2pmEarlyClose1978,
252
+ Snow11amLateOpen1978,
253
+ # 1981
254
+ ReaganAssassAttempt317pmEarlyClose1981,
255
+ ConEdPowerFail328pmEarlyClose1981,
256
+ # 1985
257
+ HurricaneGloriaClosings1985,
258
+ # 1987
259
+ Backlog2pmEarlyCloses1987,
260
+ Backlog230pmEarlyCloses1987,
261
+ Backlog3pmEarlyCloses1987,
262
+ Backlog330pmEarlyCloses1987,
263
+ # 1989
264
+ Fire11amLateOpen1989,
265
+ # 1990
266
+ ConEdXformer931amLateOpen1990,
267
+ # 1991
268
+ TroopsInGulf931LateOpens1991,
269
+ # 1994
270
+ Snow230pmEarlyClose1994,
271
+ NixonFuneral1994,
272
+ # 1995
273
+ Computer1030LateOpen1995,
274
+ # 1996
275
+ Snow11amLateOpen1996,
276
+ Snow2pmEarlyClose1996,
277
+ # 1997
278
+ CircuitBreakerTriggered330pmEarlyClose1997,
279
+ # 2001
280
+ September11Closings2001,
281
+ Sept11MomentSilence933amLateOpen2001,
282
+ EnduringFreedomMomentSilence931amLateOpen2001,
283
+ # 2002
284
+ Sept11Anniversary12pmLateOpen2002,
285
+ # 2003
286
+ IraqiFreedom932amLateOpen2003,
287
+ # 2004
288
+ ReaganMomentSilence932amLateOpen2004,
289
+ ReaganMourning2004,
290
+ # 2005
291
+ SystemProb356pmEarlyClose2005,
292
+ # 2006
293
+ FordMomentSilence932amLateOpen2006,
294
+ # 2007
295
+ FordMourning2007,
296
+ # 2012
297
+ HurricaneSandyClosings2012,
298
+ # 2018
299
+ GeorgeHWBushDeath2018,
300
+ # 2025
301
+ JimmyCarterDeath2025,
302
+ )
303
+ from pandas_market_calendars.market_calendar import MarketCalendar
304
+
305
+ # Useful resources for making changes to this file:
306
+ # http://www.nyse.com/pdfs/closings.pdf
307
+ # http://www.stevemorse.org/jcal/whendid.html
308
+
309
+ # Overwrite the default holiday calendar start_date of 1/1/70
310
+ AbstractHolidayCalendar.start_date = "1885-01-01"
311
+
312
+
313
+ class NYSEExchangeCalendar(MarketCalendar):
314
+ """
315
+ Exchange calendar for NYSE from 1885-01-01
316
+ - Note: DJIA was first recorded 1885-02-16
317
+
318
+ REFERENCES:
319
+ - https://web.archive.org/web/20141224054812/http://www.nyse.com/about/history/timeline_trading.html
320
+ - https://www.marketwatch.com/story/a-brief-history-of-trading-hours-on-wall-street-2015-05-29
321
+ - http://www.ltadvisors.net/Info/research/closings.pdf
322
+ - https://github.com/rsheftel/pandas_market_calendars/files/6827110/Stocks.NYSE-Closings.pdf
323
+
324
+ NYSE OVERVIEW:
325
+ - 1792: 5 securities traded
326
+ - 1871: Continuous trading begins
327
+ - 1885 to 1887: trading hours Mon-Sat 10am to variable 2pm thru 4pm (coded as 3pm)
328
+ - 1887: trading hours Mon-Fri 10am-3pm Sat 10am-noon
329
+ - 1952-09-29: trading hours Mon-Fri 10am-3:30pm,
330
+ - Sat trading removed after Sept 27
331
+ - Last effective Saturday traded was May 24, 1952
332
+ - 1974: trading hours Mon-Fri 10am-4pm
333
+ - 1985: trading hours Mon-Fri 9:30am-4pm
334
+
335
+ #######################################
336
+ Regularly-Observed Holidays as of 2021:
337
+ #######################################
338
+ - New Years Day (observed on monday when Jan 1 is a Sunday)
339
+ - Martin Luther King Jr. Day (3rd Monday in January, only after 1998)
340
+ - Lincoln's Birthday (February 12th, only before 1954 starting in 1896)
341
+ - Washington's Birthday (February 22nd, before 1971 with rule change in 1964)
342
+ - Washington's Birthday (aka President's Day, 3rd Monday in February, after 1970)
343
+ - Good Friday (two days before Easter Sunday)
344
+ - Memorial Day (May 30th, before 1970, with rule change in 1964)
345
+ - Memorial Day (last Monday in May, after 1970)
346
+ - Independence Day (July 4th Sunday to Monday, before 1954)
347
+ - Independence Day (observed on the nearest weekday to July 4th, after 1953)
348
+ - Election Day (First Tuesday starting on November 2nd, between 1848 and 1967)
349
+ - Election Day (Every four years, first Tuesday starting on November 2nd, between 1968 and 1980)
350
+ - Veterans Day (November 11th, between 1934 and 1953)
351
+ - Columbus Day (October 12th, before 1954)
352
+ - Labor Day (first Monday in September)
353
+ - Thanksgiving (last Thursday in November, before 1939)
354
+ - Thanksgiving (second to last Thursday in November, between 1939 and 1941)
355
+ - Thanksgiving (fourth Thursday in November, after 1941)
356
+ - Christmas (December 25th, Sunday to Monday, before 1954)
357
+ - Christmas (observed on nearest weekday to December 25, after 1953)
358
+
359
+ ################################
360
+ Regularly-Observed Early Closes:
361
+ ################################
362
+ - July 3rd (Mondays, Tuesdays, and Thursdays, 1995 onward)
363
+ - July 5th (Fridays, 1995 onward, except 2013)
364
+ - Christmas Eve (except on Fridays, when the exchange is closed entirely)
365
+ - Day After Thanksgiving (aka Black Friday, observed from 1992 onward)
366
+
367
+ NOTE: Until 1993, the standard early close time for the NYSE was 2:00 PM.
368
+ From 1993 onward, it has been 1:00 PM.
369
+
370
+ ####################################
371
+ Retired Regularly-Observed Holidays:
372
+ ####################################
373
+ - Columbus Day (after 1953)
374
+ - Armistice/Veterans Day (after 1953)
375
+
376
+ #################################
377
+ Irregularities Openings/Closings:
378
+ #################################
379
+ begin reference: https://github.com/rsheftel/pandas_market_calendars/files/6827110/Stocks.NYSE-Closings.pdf
380
+ - Closed on Aug 8, 1885 (Sat): President Ulysses S. Grant funeral
381
+ - Closed on Jul 2, 1887 (Sat): Saturday before Independence Day
382
+ - Closed on Dec 24, 1887 (Sat): Christmas Eve
383
+ - Closed on Mar 12-13, 1888 (Mon-Tue): Blizzard of 1888
384
+ - Closed on Sep 1, 1888 (Sat): Saturday before Labor Day
385
+ - Closed on Nov 30, 1888 (Fri): Friday after Thanksgiving
386
+ - Closed on Apr 29 - May 1, 1889 (Mon-Wed): Centennial celbration of Washington's inauguration
387
+ - Closed on Jul 5, 1890 (Sat): Saturday after Independence Day
388
+ - Closed on Dec 26, 1891 (Sat): Saturday after Christmas
389
+ - Closed on Jul 2, 1892 (Sat): Saturday before Independence Day
390
+ - Closed on Oct 12, 1892 (Wed) Columbian Celebration (Columbus discovery of America)
391
+ - Closed on Oct 21-22, 1892 (Fri-Sat): Columbian Celebration
392
+ - Closed on Apr 27, 1893 (Thu): Columbian Celebration
393
+ - Closed on Dec 26, 1896 (Sat): Saturday after Christmas
394
+ - Closed on Apr 27, 1897 (Tue): Grant's birthday
395
+ - Closed on May 4, 1898 (Wed): NYC Charter Day
396
+ - Closed on Jul 2, 1898 (Sat): Saturday before Independence Day
397
+ - Closed on Aug 20, 1898 (Sat): Welcome of naval commanders
398
+ - Closed on Sep 3, 1898 (Sat): Saturday before Labor Day
399
+ - Closed on Dec 24, 1898 (Sat): Saturday before Christmas
400
+ - Closed on Feb 11, 1899 (Sat): Saturday before Lincoln's birthday
401
+ - Closed on May 29, 1899 (Mon): Monday before Decoration Day
402
+ - Closed on Jul 3, 1899 (Mon): Monday before Independence Day
403
+ - Closed on Sep 29-30, 1899 (Fri-Sat): Admiral Dewey Celebration
404
+ - Closed on Nov 25, 1899 (Sat): Funeral of Vice-President Garret A. Hobart
405
+ - Closed on Apr 14, 1900 (Sat): Saturday after Good Friday
406
+ - Closed on Sep 1, 1900 (Sat): Saturday before Labor Day
407
+ - Closed on Dec 24, 1900 (Mon): Christmas Eve
408
+ - Closed on Feb 2, 1901 (Sat): Funderal of Queen Victoria of England
409
+ - Closed on Feb 23, 1901 (Sat): Saturday after Washington's birthday
410
+ - Closed on Apr 6, 1901 (Sat): Saturday after Good Friday
411
+ - Closed on Apr 27, 1901 (Sat): Moved to temporary quarters in Produce Exchange
412
+ - Closed on May 11, 1901 (Sat): Enlarged temporary quarters in Produce Exchange
413
+ - Closed on Jul 5-6, 1901 (Fri-Sat): Days after Independence Day
414
+ - Closed on Aug 31, 1901 (Sat): Saturday before Labor Day
415
+ - Closed on Sep 14, 1901 (Sat): Death of President William McKinley
416
+ - Closed on Sep 19, 1901 (Thu): Funeral of President William McKinley
417
+ - Closed on Mar 29, 1902 (Sat): Saturday after Good Friday
418
+ - Closed on May 31, 1902 (Sat): Saturday after Decoration Day
419
+ - Closed on Jul 5, 1902 (Sat): Saturday after Independence Day
420
+ - Closed on Aug 9, 1902 (Sat): Coronation of King Edward VII of England
421
+ - Closed on Aug 30, 1902 (Sat): Saturday before Labor Day
422
+ - Closed on Feb 21, 1903 (Sat): Saturday before Washington's birthday
423
+ - Closed on Apr 11, 1903 (Sat): Saturday after Good Friday
424
+ - Closed on Apr 22, 1903 (Wed): Opening of the new NYSE building
425
+ - Closed on Sep 5, 1903 (Sat): Saturday before Labor Day
426
+ - Closed on Dec 26, 1903 (Sat): Saturday after Christmas
427
+ - Closed on May 28, 1904 (Sat): Saturday before Decoration Day
428
+ - Closed on Jul 2, 1904 (Sat): Saturday before Independence Day
429
+ - Closed on Sep 3, 1904 (Sat): Saturday before Labor Day
430
+ - Closed on Dec 24, 1904 (Sat): Saturday before Christmas
431
+ - Closed on Apr 22, 1905 (Sat): Saturday after Good Friday
432
+ - Closed on Feb 23, 1907 (Sat): Saturday after Washington's birthday
433
+ - Closed on Mar 30, 1907 (Sat): Saturday after Good Friday
434
+ - Closed on Aug 31, 1907 (Sat): Saturday before Labor Day
435
+ - Closed on Apr 18, 1908 (Sat): Saturday after Good Friday
436
+ - Early Close 1pm on Jun 25, 1908 (Fri): Former President Grover Cleveland funeral
437
+ - Closed on Sep 5, 1908 (Sat): Saturday before Labor Day
438
+ - Closed on Dec 26, 1908 (Sat): Saturday after Christmas
439
+ - Closed on Feb 13, 1909 (Sat): Saturday after Lincoln's birthday
440
+ - Closed on Apr 10, 1909 (Sat): Saturday after Good Friday
441
+ - Closed on May 29, 1909 (Sat): Saturday before Decoration Day
442
+ - Closed on Jul 3, 1909 (Sat): Saturday before Independence Day
443
+ - Closed on Sep 4, 1909 (Sat) Saturday before Labor Day
444
+ - Closed on Sep 25, 1909 (Sat): Reception Day of the Hudson-Fulton Celebration
445
+ - Closed on Mar 26, 1910 (Sat): Saturday after Good Friday
446
+ - Early Close 11am on May 7, 1910 (Sat): King Edward VII of England Death
447
+ - Late Open 12pm on May 20, 1910 (Fri): King Edward VII of England Funeral
448
+ - Closed on May 28, 1910 (Sat): Saturday before Decoration Day
449
+ - Closed on Jul 2, 1910 (Sat): Saturday before Independence Day
450
+ - Closed on Sep 3, 1910 (Sat): Saturday before Labor Day
451
+ - Closed on Dec 24, 1910 (Sat): Saturday before Christmas
452
+ - Closed on Apr 15, 1911 (Sat): Saturday after Good Friday
453
+ - Closed on Sep 2, 1911 (Sat): Saturday before Labor Day
454
+ - Closed on Dec 23, 1911 (Sat): Saturday before Christmas
455
+ - Closed on Aug 31, 1912 (Sat): Saturday before Labor Day
456
+ - Closed on Nov 2, 1912 (Sat): Vice-President James S. Sherman funeral
457
+ - Closed on Mar 22, 1913 (Sat): Saturday after Good Friday
458
+ - Late Open 12pm on Apr 14, 1913 (Mon): JP Morgan funeral
459
+ - Closed on May 31, 1913 (Sat): Saturday after Decoration Day
460
+ - Closed on Jul 5, 1913 (Sat): Saturday after Independence Day
461
+ - Closed on Aug 30, 1913 (Sat): Saturday before Labor Day
462
+ - Late Open 12pm on Sep 22, 1913 (Mon): Mayor William J. Gaynor funeral
463
+ - Closed on Jul 31-Dec 11, 1914: Pending outbreak of World War I.
464
+ - Bonds reopn Nov 28, 1914 for limited trading with restrictions
465
+ - Stocks (limited in number) reopen Dec 12, 1914 with restrictions
466
+ - Stocks (all stocks) reopen Dec 14, 1914 with restrictions
467
+ - Restrictions removed on Apr 1, 1915
468
+ - Closed on Dec 30, 1916 (Sat): Saturday before New Year's Day
469
+ - Closed on Jun 5, 1917 (Tue): Draft Registraion Day
470
+ - Closed on Aug 4, 1917 (Sat): Heat
471
+ - Early Close 12pm on Aug 29, 1917 (Wed): Parade of National Guard
472
+ - Closed on Sep 1, 1917 (Sat): Saturday before Labor Day
473
+ - Closed on Oct 13, 1917 (Sat): Saturday after Columbus Day
474
+ - Early Close 12pm on Oct 24, 1917 (Wed): Liberty Day
475
+ - Closed on Jan 28, 1918 (Mon): Heatless day
476
+ - Closed on Feb 4, 1918 (Mon): Heatless day
477
+ - Closed on Feb 11, 1918 (Mon): Heatless day
478
+ - Early Close 12pm on Apr 26, 1918 (Fri): Liberty Day
479
+ - NOT IMPLEMENTED: Break from 11am to 12pm on Jul 11, 1918 (Thu): Former Mayor John Purroy Mitchell funeral
480
+ - Closed on Sep 12, 1918 (Thu): Draft registration day
481
+ - Early Close 2:30pm on Nov 7, 1918 (Thu): False armistice report
482
+ - Closed on Nov 11, 1918 (Mon): Armistice signed
483
+ - Early Close 12:30pm on Jan 7, 1919 (Tue): Former President Theodore Roosevelt funeral
484
+ - Closed on Mar 25, 1919 (Tue): Homecoming of 27th Division
485
+ - Closed on May 6, 1919 (Tue): Parade of 77th Division
486
+ - Closed on May 31, 1919 (Sat): Saturday after Decoratin Day
487
+ - Closed on Jul 5, 1919 (Sat): Saturday after Independence Day
488
+ - Closed on Jul 19, 1919 (Sat): Heat and backlog catch up
489
+ - Closed on Aug 2, 1919 (Sat): Backlog catch up
490
+ - Closed on Aug 16, 1919 (Sat): Backlog catch up
491
+ - Closed on Aug 30, 1919 (Sat): Saturday before Labor Day
492
+ - Closed on Sep 10, 1919 (Wed): Return of General John J. Pershing
493
+ - Late Open 10:30am on Dec 30, 1919 (Tue): Traffic block
494
+ - Late Open 10:30am on Feb 6, 1920 (Fri): Traffic block
495
+ - Closed on Apr 3, 1920 (Sat): Saturday after Good Friday
496
+ - Closed on May 1, 1920 (Sat): Many firms changed office locations
497
+ - Closed on Jul 3, 1920 (Sat): Saturday before Independence Day
498
+ - Closed on Sep 4, 1920 (Sat): Saturday before Labor Day
499
+ - Early Close 12pm on Sep 16, 1920 (Thu): Wall Street explosion
500
+ - Closed on May 28, 1921 (Sat): Saturday before Decoration Day
501
+ - Closed on Jul 2, 1921 (Sat): Saturday before Independence Day
502
+ - Late Open 1pm on Aug 2, 1921 (Tue): Fire in annunciator board
503
+ - Closed on Sep 3, 1921 (Sat): Saturday before Labor Day
504
+ - Closed on Dec 23, 1922 (Sat): Saturday before Christmas
505
+ - Closed on Aug 3, 1923 (Fri): President Warren G. Harding death
506
+ - NOT IMPLEMENTED: Break 11am to 12:30pm on Aug 8, 1923 (Wed): President Warren G. Harding funeral
507
+ - Closed on Aug 10, 1923 (Fri): President Warren G. Harding funeral
508
+ - Early Close 12:30pm on Feb 6, 1924 (Wed): Former President Woodrow Wilson funderal
509
+ - Closed on May 31, 1924 (Sat): Saturday after Decoration Day
510
+ - Late Open 10:45am on Jan 24, 1925 (Sat): Eclipse of sun
511
+ - Early Close 2:30pm on Sep 18, 1925 (Fri): Seymour L. Cromwell funeral (former NYSE president)
512
+ - Closed on Dec 26, 1925 (Sat): Saturday after Christmas
513
+ - Closed on May 29, 1926 (Sat): Saturday before Decoration Day
514
+ - Closed on Jul 3, 1926 (Sat): Saturday before Independence Day
515
+ - Closed on Sep 4, 1926 (Sat): Saturday before Labor Day
516
+ - Closed on Jun 13, 1927 (Mon): Colonel Charles A. Lindberg parade
517
+ - Closed on Apr 7, 1928 (Sat): Backlog catch up
518
+ - Closed on Apr 21, 1928 (Sat): Backlog catch up
519
+ - Closed on May 5, 1928 (Sat): Backlog catch up
520
+ - Closed on May 12, 1928 (Sat): Backlog catch up
521
+ - Closed on May 19, 1928 (Sat): Backlog catch up
522
+ - Early Closes May 21-25, 1928 (Mon-Fri): Backlog catch up
523
+ - Closed on May 26, 1928 (Sat): Backlog catch up
524
+ - Closed on Nov 24, 1928 (Sat): Backlog catch up
525
+ - Closed on Feb 9, 1929 (Sat): Backlog catch up
526
+ - Closed on Feb 23, 1929 (Sat): Saturday after Washington's birthday
527
+ - Closed on Mar 30, 1929 (Sat): Saturday after Good Friday
528
+ - Closed on Aug 31, 1929 (Sat): Saturday before Labor Day
529
+ - Late Open 12pm on Oct 31, 1929 (Thu): Backlog catch up and relieve personnel
530
+ - Closed on Nov 1-2, 1929 (Fri-Sat): Backlog catch up and relieve personnel
531
+ - Early Closes 1pm on Nov 6-8, 1929 (Wed-Fri): Backlog catch up and relieve personnel
532
+ - Closed on Nov 9, 1929 (Sat): Backlog catch up and relieve personnel
533
+ - Early Closes 1pm on Nov 11-15, 1929 (Mon-Fri): Backlog catch up and relieve personnel
534
+ - Closed on Nov 16, 1929 (Sat): Backlog catch up and relieve personnel
535
+ - Closed on Nov 18-22, 1929 (Mon-Fri): Backlog catch up and relieve personnel
536
+ - Closed on Nov 23, 1929 (Sat): Backlog catch up and relieve personnel
537
+ - Closed on Nov 29-30, 1929 (Fri-Sat): Backlog catch up and relieve personnel
538
+ - Early Close 12:30pm on Mar 11, 1930 (Tue): Former President William Howard Taft funeral
539
+ - Closed on Apr 19, 1930 (Sat): Saturday after Good Friday
540
+ - Closed on May 31, 1930 (Sat): Saturday after Decoration Dday
541
+ - Closed on Jul 5, 1930 (Sat): Saturday after Independence Day
542
+ - Closed on Aug 30, 1930 (Sat): Saturday before Labor Day
543
+ - Closed on Sep 5, 1931 (Sat): Saturday before Labor Day
544
+ - Closed on Dec 26, 1931 (Sat): Saturday after Christmas
545
+ - Closed on Jul 2, 1932 (Sat): Saturday before Independence Day
546
+ - Closed on Jan 7, 1933 (Sat): Former President Calvin Coolidge funeral
547
+ - Closed on Mar 4, 1933 (Sat): State banking holiday
548
+ - Closed on Mar 6-14, 1933 (Mon-Tue): National banking holiday
549
+ - Late Open 12pm on Jul 24-25, 1933 (Mon-Tue): Volume activity
550
+ - Late Opens AND Early Closes on Jul 26-28, 1933 (Wed-Fri): Volume activity
551
+ - Closed on July 29, 1933 (Sat): Volume activity
552
+ - Early Close 12:30pm on Aug 4, 1933 (Fri): Gas fumes on trading floor
553
+ - Closed on Aug 5, 1933 (Sat): Volume activity
554
+ - Closed on Aug 12, 1933 (Sat): Volume activity
555
+ - Closed on Aug 19, 1933 (Sat): Volume activity
556
+ - Closed on Aug 26, 1933 (Sat): Volume activity
557
+ - Closed on Sep 2, 1933 (Sat): Volume activity
558
+ - Early Close 12pm on Sep 13, 1933 (Wed): NRA demonstration
559
+ - Late Open 11am on Feb 20, 1934 (Tue): severe snowstorm
560
+ - Late Open 11am on Jan 28, 1936 (Tue): King George V of England funeral
561
+ - Closed on Dec 26, 1936 (Sat): Saturday after Christmas
562
+ - Closed on May 29, 1937 (Sat): Saturday before Decoration Day
563
+ - Closed on Jul 3, 1937 (Sat): Saturday before Independence Day
564
+ - NOT IMPLEMENTED Break from 12-13:00 on May 18, 1942 (Mon): NYSE 150th anniversary
565
+ - NOT IMPLEMENTED Break from 14:32-14:58 on Oct 22, 1942 (Thu): Civil Defense drill
566
+ - NOT IMPLEMENTED Break from 14:38-14:59 on Oct 26, 1943 (Tue): Civil Defense drill
567
+ - Reopened from 15:20-15:40 under special rule of the Board
568
+ - Closed on Aug 19, 1944 (Sat)
569
+ - Closed on Aug 26, 1944 (Sat)
570
+ - Closed on Sep 2, 1944 (Sat)
571
+ - Closed on Apr 14, 1945 (Sat): President Franklin D. Roosevelt National Day of mourning
572
+ - NOT IMPLEMENTED Break 11:00-13:00 on Jun 19, 1945 (Tue): Parade for General Eisenhower
573
+ - Closed on Saturdays Jul 7-Sep 1, 1945
574
+ - Closed on Aug 15-16, 1945 (Wed-Thu): VJ Day. End of World War II
575
+ - Closed on Oct 13, 1945 (Sat): Saturday after Columbus Day
576
+ - Closed on Oct 27, 1945 (Sat): Navy Day
577
+ - Closed on Dec 24, 1945 (Mon): Christmas Eve
578
+ - Closed on Feb 23, 1946 (Sat): Saturday after Washington's birthday
579
+ - Closed on May 25, 1946 (Sat): Railroad strike
580
+ - Closed on Saturdays Jun 1-Sep 28, 1946 (Sat-Sat)
581
+ - Closed on Saturdays May 31-Sep 27, 1947 (Sat-Sat)
582
+ - Closed on Jan 3, 1948 (Sat): severe weather
583
+ - Closed on Saturdays May 29-Sep 25, 1948 (Sat-Sat)
584
+ - Closed on Saturdays May 28-Sep 4, 1948 (Sat-Sat)
585
+ - Cosed on Dec 24, 1949 (Sat): Christmas Eve
586
+ - Closed on Saturdays Jun 3-Sep 30, 1950 (Sat-Sat)
587
+ - Closed on Dec 12, 1950 (Sat): Saturday before Christmas Eve
588
+ - NOT IMPLEMENTED Break from 11:00-13:00 on Apr 20, 1951 (Fri): Parade for General MacArthur
589
+ - Closed on Saturdays Jun 2-Sep 29, 1951 (Sat-Sat)
590
+ - NOT IMPLEMENTED Break from 10:33-11:05 (Wed): Civil Defense Drill
591
+ - Early Close 1pm on Dec 24, 1951 (Mon): Christmas Eve
592
+ - Closed on Saturdays May 31-Sep 27, 1952 (Sat-Sat)
593
+ - As of Sep 29, 1952 Saturdays were retired as trading days
594
+ - As of Sep 29, 1952, M-F trading closes at 3:30pm (30 minutes longer)
595
+ - NOT IMPLEMENTED Break 10:02-10:32 on Jun 14, 1954 (Mon): Civil Defense drill
596
+ - Closed on Dec 24, 1954 (Fri): Christmas Eve
597
+ - NOT IMPLEMENTED Break 14:05-14:35 on Jun 15, 1955 (Wed): Civil Defense drill
598
+ - Closed on Dec 24, 1956 (Mon): Christmas Eve
599
+ - NOT IMPLEMENTED Break 13:45-14:15 on Jul 12, 1957 (Fri): Civil Defense drill
600
+ - NOT IMPLEMENTED Break 10:30-10:50 on May 6, 1958 (Tue): Civil Defense drill
601
+ - Closed on Dec 26, 1958 (Fri): Day after Christmas
602
+ - NOT IMPLEMENTED Break 13:30-13:50 on Apr 17, 1959 (Fri): Civil Defense drill
603
+ - NOT IMPLEMENTED Break 14:16-14:40 on May 3, 1960 (Tue): Civil Defense drill
604
+ - Late Open 11:00 on Dec 12, 1960 (Mon): severe snowstorm
605
+ - Closed on May 29, 1961 (Mon): Day before Decoration Day
606
+ - Early Close 14:07 on Nov 22, 1963 (Fri): President John F. Kennedy assassintion
607
+ - Closed on Nov 25, 1963 (Mon): President John F. Kennedy funeral
608
+ - Early Close 14:00 on Oct 23, 1964 (Fri): Former President Herbert C. Hoover funeral
609
+ - NOT IMPLEMENTED Break 11:00-11:02 on Jan 25, 1965 (Mon): Sir Winston Churchill 2 minutes of silence
610
+ - Late Open 11:05 on Nov 10, 1965 (Wed): Power failure in NY grid supply
611
+ - Closed on Dec 24, 1965 (Fri): Christmas Eve
612
+ - Early Closes 14:00 on Jan 6-14, 1966 (Thu-Fri): Transit strike
613
+ - NOT IMPLEMENTED Break 13:00-13:01 on Feb 3, 1967 (Fri): Apollo I disaster moment of silence
614
+ - Late Open 10:15 AND Early Close 14:00 on Feb 7, 1967 (Tue): snowstorm
615
+ - NOT IMPLEMENTED Break 12:58-13:13 on May 17, 1967 (Wed): Vice President Humphrey spoke in honor of NYSE's 175th anniversary
616
+ - Early Closes 14:00 on Aug 8-18, 1967 (Tue-Fri): Backlog catch up
617
+ - Early Closes 14:00 on Jan 22-Mar 1, 1968 (Mon-Fri): Backlog catch up
618
+ - Closed on Feb 12, 1968 (Mon): Lincoln's birthday (offices open, trading closed)
619
+ - NOT IMPLEMENTED Break 11:00-11:01 on Apr 5, 1968 (Fri): Dr. Martin Luther King, Jr. moment of silence
620
+ - Closed on Apr 9, 1968 (Tue): Martin Luther King, Jr. day or mourning
621
+ - NOT IMPLEMENTED Break 11:00-11:02 on Jun 6, 1968 (Fri): Senator Robert F. Kennedy moment of silence
622
+ - 4 day workweek Closed on a Wednesday OR Holiday from Jun 12-Dec 31, 1968: Paperwork crisis
623
+ - Closed on July 5, 1968 (Fri): Day after Independence Day
624
+ - Early Closes 14:00 on Jan 2-Jul 3, 1969: Paperwork Crisis
625
+ - Closed on Feb 10, 1969 (Mon): heavy snow
626
+ - Late open 11am on Feb 11, 1969 (Tue): heavy snow
627
+ - NOT IMPLEMENTED Break 13:30-13:32 on Mar 28, 1969 (Fri): Former President Dwight D. Eisenhower moment of silence
628
+ - Closed on Mar 31, 1969 (Mon): Former President Dwight D. Eisenhower funeral
629
+ - Late Open 10:45 on Jun 2, 1969 (Mon): storm
630
+ - Early Closes 14:30 on Jul 7-Sep 26,1969 (Mon-Fri): Paperwork Crisis
631
+ - Closed on Jul 21, 1969 (Mon): National Day of Participation for lunar exploration
632
+ - NOT IMPLEMENTED Break 12:35-13:05 on Sep 3, 1969 (Wed): power failure
633
+ - Early Closes 15:00 on Sep 29, 1969 to May 1, 1970: Paperwork Crisis
634
+ - Closed on Dec 28, 1972 (Thu): Former President Harry S. Truman funeral
635
+ - Closed on Jan 25, 1973 (Thu): Former President Lyndon B. Johnson funeral
636
+ - Late Open 11am on Dec 17, 1973 (Mon): ice storm
637
+ - Late Open 10:15 on Jan 16, 1974 (Wed): Merrill Lynch computer trouble
638
+ - NOT IMPLEMENTED Break 11:09-11:35 on Apr 10, 1974 (Wed): computer malfunction
639
+ - NOT IMPLEMENTED Break 11:46-12:22 on Oct 15, 1974 (Wed): Ticker down at 11:37 to 12:22
640
+ - Late Open 10:15 on Nov 22, 1974 (Fri): Fire drill
641
+ - Early Close 14:00 on Dec 24, 1974 (Tue): Christmas Eve
642
+ - NOT IMPLEMENTED Break 10:07-10:50 on Jan 7, 1975 (Tue): Computer stopped
643
+ - NOT IMPLEMENTED Break 13:24-13:45 on Jan 15, 1975 (Wed): Computer stopped
644
+ - NOT IMPLEMENTED Break 10:24-11:00 on Feb 7, 1975 (Fri): Computer failure
645
+ - Early Close 14:30 on Feb 12, 1975 (Wed): snowstorm
646
+ - NOT IMPLEMENTED Break 10:09-10:35 on Apr 9, 1975 (Wed): Computer stopped
647
+ - Early Close 14:00 on Dec 24, 1975 (Wed): Christmas Eve
648
+ - Late Open 11:15 on Feb 2, 1976 (Mon): storm
649
+ - Late Open UNKNOWN (coded as 10:15) on Jun 8, 1976 (Tue): fire drill
650
+ - Early Close 15:00 on Aug 9, 1976 (Mon): hurricane watch
651
+ - NOT IMPLEMENTED Break 1 minute time UNKNOWN on Nov 4, 1976 (Thu): Former NYSE Chair Gustave L. Levy moment of silence
652
+ - NOT IMPLEMENTED Break 11:00-11:01 on Feb 24, 1977 (Thu): Former NYSE Chair John A. Coleman moment of silence
653
+ - NOT IMPLEMENTED Break 10:24-11:45 on Mar 1, 1977 (Tue): Fire on moving ramp between trading floor and Blue Room
654
+ - Closed on July 14, 1977 (Thu): Power failure in NYC
655
+ - Late Open 12pm on Jan 20, 1978 (Fri): snowstorm
656
+ - Early Close 2pm on Feb 6, 1978 (Mon): snowstorm
657
+ - Late Open 11am on Feb 7, 1978 (Tue): snowstorm
658
+ - NOT IMPLEMENTED Break 1 minute time UNKNOWN on Dec 13, 1979 (Thu): Former NYSE Chair Robert L. Stott minute of silence
659
+ - NOT IMPLEMENTED Break 11:11-12:04 on Oct 13, 1980 (Mon): Computer malfunction
660
+ - NOT IMPLEMENTED Break 1 minute time UNKNOWN on Dec 30, 1980 (Tue): Former NYSE Chair James Crane Kellogg III moment of silence
661
+ - Early Close 3:17pm on Mar 30, 1981 (Mon): President Reagan assassination attempt
662
+ - Early Close 3:28pm on Sep 9, 1981 (Wed): Con Edison power failure
663
+ - NOT IMPLEMENTED Break 12:26-12:45pm on Sep 16, 1981 (Wed): Fire alarm malfunction
664
+ - NOT IMPLEMENTED Break 10:25-11:00am on Dec 28, 1982 (Tue): small fire
665
+ - NOT IMPLEMENTED Break 13:51-15:30 on Oct 13, 1983 (Thu): low speed ticker malfunction
666
+ - Closed on Sep 27, 1985 (Fri): Hurricane Gloria
667
+ - NOT IMPLEMENTED Break 11:00-11:01 on Jan 29, 1986 (Wed): Challenger space crew moment of silence
668
+ - Early Closes 2pm on Oct 23-30, 1987 (Fri-Fri): October 19th break volume
669
+ - Early Closes 2:30pm on Nov 2-4, 1987 (Mon-Wed): reason not given volume assumed
670
+ - Early Closes 3pm on Nov 5-6, 1987 (Thu-Fri): reason not given volume assumed
671
+ - Early Closes 3:30pm on Nov 9-11, 1987 (Mon-Wed): Trading floor and clerical staff strike
672
+ - Late Open 11am on Nov 10, 1989 (Fri): Electrical fire
673
+ - NOT IMPLEMENTED Break 9:41-11:15 on Nov 23, 1990 (Fri): Internal power failure
674
+ - Early Close 2pm on Dec 24, 1990 (Mon): Christmas Eve
675
+ - Late Open 11am on Dec 27, 1990 (Thu): explosion of Con Edison transformer
676
+ - Late Open 9:31am on Jan 17, 1991 (Thu): American troops in Persian Gulf moment of silence
677
+ - Late Open 9:31am on Feb 25, 1991 (Thu): American troops in Persian Gulf moment of silence
678
+ - NOT IMPLEMENTED Break 10:21-10:45am on Oct 22, 1991 (Tue): power dip
679
+ - Early Close 2pm on Dec 24, 1991 (Tue): Christmas Eve
680
+ - NOT IMPLEMENTED Break 1 minute time UNKNOWN on Mar 19, 1992 (Thu): Former NYSE Chair Bernard J. Lasker moment of silence
681
+ - NOT IMPLEMENTED Break 1 minute time UNKNOWN on May 15, 1992 (Fri): Former NYSE President G. Keith Funston moment of silence
682
+ - NOT IMPELMENTED Break 1 minute time UNKNOWN on Jun 15, 1992 (Mon): Former NYSE President Robert W. Haack moment of silence
683
+ - Early Close 2pm on Nov 27, 1992 (Fri): Day after Thanksgiving
684
+ - Early Close 2pm on Dec 24, 1992 (Thu): Christmas Eve
685
+ - Early Close 1pm on Nov 26, 1993 (Fri): Day after Thanksgiving
686
+ - Early Close 14:30 on Feb 11, 1994 (Fri): snowstorm
687
+ - NOT IMPLEMENTED Break 12:00-12:02 on Apr 25, 1994 (Mon): Former President Richard M. Nixon moment of silence
688
+ - Closed on Apr 27, 1994 (Wed): Former President Richard M. Nixon funderal
689
+ - Early Close 1pm on Nov 25, 1994 (Fri): Day after Thanksgiving
690
+ - NOT IMPLEMENTED Break 10:02-10:03 on Apr 26, 1995 (Wed): Oklahoma City bombing victims moment of silence
691
+ - Early Close 1pm on Jul 3, 1995 (Mon): Day before Independence Day
692
+ - Early Close 1pm on Nov 24, 1995 (Fri): Day after Thanksgiving
693
+ - Late Open 10:30am on Dec 18, 1995 (Mon): Computer system troubles
694
+ - Late Open 11am AND Early Close 2pm on Jan 8, 1996 (Mon): snowstorm
695
+ - NOT IMPLEMENTED Break time UNKNOWN on Apr 4, 1996 (Thu): Commerce Secretary Ron Brown and others killed in Balkans plane crash
696
+ - Early Close 1pm on July 5, 1996 (Fri): Day after Independence Day
697
+ - Early Close 1pm on Nov 29, 1996 (Fri): Day after Thanksgiving
698
+ - Early Close 1pm on Dec 24, 1996 (Tue): Christmas Eve
699
+ - Early Close 1pm on Jul 3, 1997 (Thu): Day before Independence Day
700
+ - NOT IMPLEMENTED Break 14:35-15:05 on Oct 27, 1997 (Mon): Circuit breaker triggered
701
+ - Early Close 3:30pm on Oct 27, 1997 (Mon): Circuit breaker triggered
702
+ - Early Close 1pm on Nov 28, 1997 (Fri): Day after Thanksgiving
703
+ - Early Close 1pm on Dec 24, 1997 (Wed): Christmas Eve
704
+ - Early Close 1pm on Dec 26, 1997 (Fri): Friday after Christmas
705
+ - NOT IMPLEMENTED Break time UNKNOWN on Jul 29, 1998 (Wed): Former NYSE President William McChesney Marting, Jr. moment of silence
706
+ - NOT IMPLEMENTED Break 13:16-14:15 on Oct 26, 1998 (Mon): Computer switch malfunction
707
+ - Early Close 1pm on Nov 27, 1998 (Fri): Day after Thanksgiving
708
+ - Early Close 1pm on Dec 24, 1998 (Thu): Christmas Eve
709
+ - NOT IMPLEMENTED Break 10:00-10:02 on Mar 25, 1999 (Thu): NATO troops in Kosovo minute of silence
710
+ - NOT IMPLEMENTED Break 12:00-12:02 on Apr 26, 1999 (Mon): Columbine High School killings moment of silence
711
+ - Early Close 1pm on Nov 26, 1999 (Fri): Day after Thanksgiving
712
+ - Early Close 1pm on Dec 24, 1999 (Fri): Christmas Eve
713
+ - NOT IMPLEMENTED Break 12:00-12:01 on Feb 16, 2000 (Wed): Former NYSE Chair Walter N. Frank moment of silence
714
+ - NOT IMPLEMENTED Break 12:00-12:01 on May 4, 2000 (Thu): Archbishop of NY Cardinal John O'Connor moment of silence
715
+ - Early Close 1pm on Jul 3, 2000 (Mon): Day before Independence Day
716
+ - Early Close 1pm on Nov 24, 2000 (Fri): Day after Thanksgiving
717
+ - NOT IMPLEMENTED Break 10:10-11:35 on Jun 8, 2001 (Fri): computer systems connectivity problem
718
+ - Early Close 1pm on Jul 3, 2001 (Tue): Day before Independence Day
719
+ - Closed on Sep 11-14, 2001 (Tue-Fri): Terrorist attack on World Trade Center
720
+ - Late Open 9:33am on Sep 17, 2001 (Mon): 2 minutes silence in honor of lives lost on 9/11
721
+ - Late Open 9:31am on Oct 8, 2001 (Mon): 1 minute silence for troops engaged in Operation Enduring Freedom
722
+ - Early Close 1pm on Nov 23, 2001 (Fri): Day after Thanksgiving
723
+ - Early Close 1pm on Dec 24, 2001 (Mon): Christmas Eve
724
+ - NOT IMPLEMENTED Break 10:29-10:31 on May 30, 2002 (Thu): Commemorate end of recovery work at Ground Zero
725
+ - Early Close 1pm on Jul 5, 2002 (Fri): Day after Independence Day
726
+ - Late Opening 12:00pm on Sep 11, 2002 (Wed): 1 year anniversary of 9/11 attack
727
+ - Early Close 1pm on Nov 29, 2002 (Fri): Day after Thanksgiving
728
+ - Early Close 1pm on Dec 24, 2002 (Tue): Christmas Eve
729
+ - NOT IMPLEMENTED Break 11:00-11:02 on Feb 3, 2002 (Mon): Columbia Space Shuttle lives lost moment of silence
730
+ - Late Opening 9:32am on Mar 20, 2003 (Thu): Operation Iraqi Freedom Troops moment of silence
731
+ - Early Close 1pm on Jul 3, 2003 (Thu): Day before Independence Day
732
+ - NOT IMPLEMENTED multiple 1-minute Breaks 9:59 and 10:29 on Sep 11, 2003 (Thu): 9/11 Commemoration
733
+ - Early Close 1pm on Nov 28, 2003 (Fri): Day after Thanksgiving
734
+ - Early Close 1pm on Dec 24, 2003 (Wed): Christmas Eve
735
+ - Early Close 1pm on Dec 26, 2003 (Fri): Friday after Christmas
736
+ - Late Open 9:32am on Jun 7, 2004 (Mon): Former President Ronald Reagan death moment of silence
737
+ - Closed on Jun 11, 2004 (Fri): Former President Ronald Reagan National Day of Mourning
738
+ - Early Close 1pm on Nov 26, 2004 (Fri): Day after Thanksgiving
739
+ - Early Close 3:56pm on Jun 1, 2005 (Wed): Systems communication problem
740
+ - Early Close 1pm on Nov 25, 2005 (Fri): Day after Thanksgiving
741
+ - Early Close 1pm on Jul 3, 2006 (Mon): Day before Independence Day
742
+ - Early Close 1pm on Nov 24, 2006 (Fri): Day after Thanksgiving
743
+ - Late Open 9:32am on Dec 27, 2006 (Wed): Former President Gerald Ford moment of silence
744
+ - Closed on Jan 2, 2007 (Tue): Former President Gerald Ford National Day of Mourning
745
+ - Early Close 1pm on Jul 3, 2007 (Tue): Day before Independence Day
746
+ - Early Close 1pm on Nov 23, 2007 (Fri): Day after Thanksgiving
747
+ - Early Close 1pm on Dec 24, 2007 (Mon): Christmas Eve
748
+ - Early Close 1pm on Jul 4, 2008 (Thu): Day before Independence Day
749
+ - Early Close 1pm on Nov 28, 2008 (Fri): Day after Thanksgiving
750
+ - Early Close 1pm on Dec 24, 2008 (Wed): Christmas Eve
751
+ - NOT IMPLEMENTED Extended Close 4:15pm on Jul 2, 2009 (Thu): Execute customer orders impacted by system irregularities
752
+ - Early Close 1pm on Nov 27, 2009 (Fri): Day after Thanksgiving
753
+ - Early Close 1pm on Dec 24, 2009 (Thu): Christmas Eve
754
+ - Early Close 1pm on Nov 26, 2010 (Fri): Day after Thanksgiving
755
+ - NOT IMPLEMENTED Break 11:00-11:01 on Jan 10, 2011 (Mon): Arizona shooting victims moment of silence
756
+
757
+ end of reference: https://github.com/rsheftel/pandas_market_calendars/files/6827110/Stocks.NYSE-Closings.pdf
758
+ *******************************************************************
759
+
760
+ https://www.streetinsider.com/Insiders+Blog/NYSE+Releases+2010+and+2011+Holiday+Calendar/4915576.html
761
+ - Early Close 1pm on Nov 25, 2011 (Fri): Day after Thanksgiving
762
+
763
+ https://holidaystracker.com/stock-market/new-york-stock-exchange-holidays-2012/
764
+ - Early Close 1pm on Jul 4, 2012 (Tue): Day before Independence Day
765
+ - Closed on 10/29/2012 and 10/30/2012 due to Hurricane Sandy.
766
+ - Early Close 1pm on Nov 23, 2012 (Fri): Day after Thanksgiving
767
+ - Early Close 1pm on Dec 24, 2012 (Mon): Christmas Eve
768
+
769
+ https://holidaystracker.com/stock-market/new-york-stock-exchange-nyse-holidays-2013/
770
+ - Early Close 1pm on Jul 3, 2013 (Wed): Day before Independence Day
771
+ - Early Close 1pm on Nov 29, 2013 (Fri): Day after Thanksgiving
772
+ - Early Close 1pm on Dec 24, 2013 (Tue): Christmas Eve
773
+
774
+ https://www.streetinsider.com/Insiders+Blog/NYSE+2014+and+2015+Holiday+Hours/8999575.html - Early Close 1pm on Jul 3, 2014 (Thu): Day before Independence Day
775
+ - Early Close 1pm on Jul 3, 2014 (Thu): Day before Independence Day
776
+ - Early Close 1pm on Nov 28, 2014 (Fri): Day after Thanksgiving
777
+ - Early Close 1pm on Dec 24, 2014 (Wed): Christmas Eve
778
+
779
+ https://www.businesswire.com/news/home/20141208006349/en/NYSE-Group-2016-Holiday-Calendar-and-Early-Closings
780
+ - Early Close 1pm on Nov 27, 2015 (Fri): Day after Thanksgiving
781
+ - Early Close 1pm on Dec 24, 2015 (Thu): Christmas Eve
782
+ - Early Close 1pm on Nov 25, 2016 (Fri): Day after Thanksgiving
783
+
784
+ https://www.stockinvestor.com/30380/stock-market-holidays-2017/
785
+ - Early Close 1pm on Jul 3, 2017 (Mon): Day before Independence Day
786
+ - Early Close 1pm on Nov 24, 2017 (Fri): Day after Thanksgiving
787
+ - Early Close 1pm on Jul 3, 2018 (Tue): Day before Independence Day
788
+ - Early Close 1pm on Nov 23, 2018 (Fri): Day after Thanksgiving
789
+ - Closed on 12/5/2018 due to George H.W. Bush's death.
790
+ - Early Close 1pm on Dec 24, 2018 (Tue): Christmas Eve
791
+ - Early Close 1pm on Jul 3, 2019 (Wed): Day before Independence Day
792
+ - Early Close 1pm on Nov 29, 2019 (Fri): Day after Thanksgiving
793
+ - Early Close 1pm on Dec 24, 2019 (Wed): Christmas Eve
794
+
795
+ https://holidaystracker.com/stock-market/new-york-stock-exchange-nyse-holidays-2020/
796
+ - Early Close 1pm on Nov 27, 2020 (Fri): Day after Thanksgiving
797
+ - Early Close 1pm on Dec 24, 2020 (Thu): Christmas Eve
798
+
799
+
800
+ NOTE: The exchange was **not** closed early on Friday December 26, 2008,
801
+ nor was it closed on Friday December 26, 2014. The next Thursday Christmas
802
+ will be in 2025. If someone is still maintaining this code in 2025, then
803
+ we've done alright...and we should check if it's a half day.
804
+
805
+ """
806
+
807
+ aliases = ["NYSE", "stock", "NASDAQ", "BATS", "DJIA", "DOW"]
808
+
809
+ regular_market_times = {
810
+ "pre": ((None, time(4)),),
811
+ "market_open": ((None, time(10)), ("1985-01-01", time(9, 30))),
812
+ "market_close": (
813
+ (None, time(15)),
814
+ ("1952-09-29", time(15, 30)),
815
+ ("1974-01-01", time(16)),
816
+ ),
817
+ "post": ((None, time(20)),),
818
+ }
819
+
820
+ _saturday_close = time(12)
821
+ _saturday_end = pd.Timestamp("1952-09-29", tz="UTC")
822
+
823
+ @property
824
+ def name(self):
825
+ return "NYSE"
826
+
827
+ @property
828
+ def tz(self):
829
+ return timezone("America/New_York")
830
+
831
+ @property
832
+ def weekmask(self):
833
+ return "Mon Tue Wed Thu Fri Sat" # Market open on Saturdays thru 5/24/1952
834
+
835
+ @property
836
+ def regular_holidays(self):
837
+ return AbstractHolidayCalendar(
838
+ rules=[
839
+ USNewYearsDayNYSEpost1952,
840
+ USNewYearsDayNYSEpre1952,
841
+ USMartinLutherKingJrAfter1998,
842
+ USPresidentsDay,
843
+ USWashingtonsBirthDayBefore1952,
844
+ USWashingtonsBirthDay1952to1963,
845
+ USWashingtonsBirthDay1964to1970,
846
+ USLincolnsBirthDayBefore1954,
847
+ GoodFriday,
848
+ GoodFridayPre1898,
849
+ GoodFriday1899to1905,
850
+ USMemorialDay,
851
+ USMemorialDayBefore1952,
852
+ USMemorialDay1952to1964,
853
+ USMemorialDay1964to1969,
854
+ USIndependenceDay,
855
+ USIndependenceDayPre1952,
856
+ USIndependenceDay1952to1954,
857
+ USLaborDayStarting1887,
858
+ USColumbusDayBefore1954,
859
+ USElectionDay1848to1967,
860
+ USVeteransDay1934to1953,
861
+ USThanksgivingDay,
862
+ USThanksgivingDayBefore1939,
863
+ USThanksgivingDay1939to1941,
864
+ ChristmasNYSE,
865
+ Christmas54to98NYSE,
866
+ ChristmasBefore1954,
867
+ USJuneteenthAfter2022,
868
+ ]
869
+ )
870
+
871
+ @property
872
+ def adhoc_holidays(self):
873
+ return list(
874
+ chain(
875
+ # Recurring Holidays
876
+ SatAfterGoodFridayAdhoc,
877
+ MonBeforeIndependenceDayAdhoc,
878
+ SatBeforeIndependenceDayAdhoc,
879
+ SatAfterIndependenceDayAdhoc,
880
+ DaysAfterIndependenceDayAdhoc,
881
+ SatBeforeLaborDayAdhoc,
882
+ USElectionDay1968to1980Adhoc,
883
+ FridayAfterThanksgivingAdHoc,
884
+ SatBeforeChristmasAdhoc,
885
+ SatAfterChristmasAdhoc,
886
+ ChristmasEvesAdhoc,
887
+ DayAfterChristmasAdhoc,
888
+ # Retired
889
+ USVetransDayAdHoc,
890
+ SatAfterColumbusDayAdHoc,
891
+ LincolnsBirthDayAdhoc,
892
+ GrantsBirthDayAdhoc,
893
+ SatBeforeNewYearsAdhoc,
894
+ SatBeforeWashingtonsBirthdayAdhoc,
895
+ SatAfterWashingtonsBirthdayAdhoc,
896
+ SatBeforeAfterLincolnsBirthdayAdhoc,
897
+ SatBeforeDecorationAdhoc,
898
+ SatAfterDecorationAdhoc,
899
+ DayBeforeDecorationAdhoc,
900
+ # Irregularities
901
+ UlyssesGrantFuneral1885,
902
+ ColumbianCelebration1892,
903
+ GreatBlizzardOf1888,
904
+ WashingtonInaugurationCentennialCelebration1889,
905
+ CharterDay1898,
906
+ WelcomeNavalCommander1898,
907
+ AdmiralDeweyCelebration1899,
908
+ GarretHobartFuneral1899,
909
+ QueenVictoriaFuneral1901,
910
+ MovedToProduceExchange1901,
911
+ EnlargedProduceExchange1901,
912
+ McKinleyDeathAndFuneral1901,
913
+ KingEdwardVIIcoronation1902,
914
+ NYSEnewBuildingOpen1903,
915
+ HudsonFultonCelebration1909,
916
+ JamesShermanFuneral1912,
917
+ OnsetOfWWI1914,
918
+ WeatherHeatClosing1917,
919
+ DraftRegistrationDay1917,
920
+ WeatherNoHeatClosing1918,
921
+ DraftRegistrationDay1918,
922
+ ArmisticeSigned1918,
923
+ Homecoming27Division1919,
924
+ ParadeOf77thDivision1919,
925
+ BacklogRelief1919,
926
+ GeneralPershingReturn1919,
927
+ OfficeLocationChange1920,
928
+ HardingDeath1923,
929
+ HardingFuneral1923,
930
+ LindberghParade1927,
931
+ BacklogRelief1928,
932
+ BacklogRelief1929,
933
+ CoolidgeFuneral1933,
934
+ BankHolidays1933,
935
+ HeavyVolume1933,
936
+ SatClosings1944,
937
+ RooseveltDayOfMourning1945,
938
+ SatClosings1945,
939
+ VJday1945,
940
+ NavyDay1945,
941
+ RailroadStrike1946,
942
+ SatClosings1946,
943
+ SatClosings1947,
944
+ SatClosings1948,
945
+ SevereWeather1948,
946
+ SatClosings1949,
947
+ SatClosings1950,
948
+ SatClosings1951,
949
+ SatClosings1952,
950
+ KennedyFuneral1963,
951
+ MLKdayOfMourning1968,
952
+ PaperworkCrisis1968,
953
+ SnowClosing1969,
954
+ EisenhowerFuneral1969,
955
+ FirstLunarLandingClosing1969,
956
+ TrumanFuneral1972,
957
+ JohnsonFuneral1973,
958
+ NewYorkCityBlackout77,
959
+ HurricaneGloriaClosings1985,
960
+ NixonFuneral1994,
961
+ ReaganMourning2004,
962
+ FordMourning2007,
963
+ September11Closings2001,
964
+ HurricaneSandyClosings2012,
965
+ GeorgeHWBushDeath2018,
966
+ JimmyCarterDeath2025,
967
+ )
968
+ )
969
+
970
+ #
971
+ @property
972
+ def special_closes(self):
973
+ return [
974
+ (
975
+ time(11, tzinfo=timezone("America/New_York")),
976
+ AbstractHolidayCalendar(
977
+ rules=[
978
+ KingEdwardDeath11amyClose1910,
979
+ ]
980
+ ),
981
+ ),
982
+ (
983
+ time(12, tzinfo=timezone("America/New_York")),
984
+ AbstractHolidayCalendar(
985
+ rules=[
986
+ ParadeOfNationalGuardEarlyClose1917,
987
+ LibertyDay12pmEarlyClose1917,
988
+ LibertyDay12pmEarlyClose1918,
989
+ WallStreetExplosionEarlyClose1920,
990
+ NRAdemonstration12pmEarlyClose1933,
991
+ ]
992
+ ),
993
+ ),
994
+ (
995
+ time(hour=12, minute=30, tzinfo=timezone("America/New_York")),
996
+ AbstractHolidayCalendar(
997
+ rules=[
998
+ RooseveltFuneral1230EarlyClose1919,
999
+ WoodrowWilsonFuneral1230EarlyClose1924,
1000
+ TaftFuneral1230EarlyClose1930,
1001
+ GasFumesOnTradingFloor1230EarlyClose1933,
1002
+ ]
1003
+ ),
1004
+ ),
1005
+ (
1006
+ time(13, tzinfo=timezone("America/New_York")),
1007
+ AbstractHolidayCalendar(
1008
+ rules=[
1009
+ FridayAfterIndependenceDayNYSEpre2013,
1010
+ MonTuesThursBeforeIndependenceDay,
1011
+ WednesdayBeforeIndependenceDayPost2013,
1012
+ DayAfterThanksgiving1pmEarlyCloseInOrAfter1993,
1013
+ ChristmasEvePost1999Early1pmClose,
1014
+ GroverClevelandFuneral1pmClose1908,
1015
+ ]
1016
+ ),
1017
+ ),
1018
+ (
1019
+ time(14, tzinfo=timezone("America/New_York")),
1020
+ AbstractHolidayCalendar(
1021
+ rules=[
1022
+ DayAfterThanksgiving2pmEarlyCloseBefore1993,
1023
+ HooverFuneral1400EarlyClose1964,
1024
+ Snow2pmEarlyClose1967,
1025
+ Snow2pmEarlyClose1978,
1026
+ Snow2pmEarlyClose1996,
1027
+ ]
1028
+ ),
1029
+ ),
1030
+ (
1031
+ time(14, 7, tzinfo=timezone("America/New_York")),
1032
+ AbstractHolidayCalendar(
1033
+ rules=[
1034
+ KennedyAssassination1407EarlyClose,
1035
+ ]
1036
+ ),
1037
+ ),
1038
+ (
1039
+ time(hour=14, minute=30, tzinfo=timezone("America/New_York")),
1040
+ AbstractHolidayCalendar(
1041
+ rules=[
1042
+ FalseArmisticeReport1430EarlyClose1918,
1043
+ CromwellFuneral1430EarlyClose1925,
1044
+ Snow230EarlyClose1975,
1045
+ Snow230pmEarlyClose1994,
1046
+ ]
1047
+ ),
1048
+ ),
1049
+ (
1050
+ time(15, tzinfo=timezone("America/New_York")),
1051
+ AbstractHolidayCalendar(
1052
+ rules=[
1053
+ HurricaneWatch3pmEarlyClose1976,
1054
+ ]
1055
+ ),
1056
+ ),
1057
+ (
1058
+ time(15, 17, tzinfo=timezone("America/New_York")),
1059
+ AbstractHolidayCalendar(
1060
+ rules=[
1061
+ ReaganAssassAttempt317pmEarlyClose1981,
1062
+ ]
1063
+ ),
1064
+ ),
1065
+ (
1066
+ time(15, 28, tzinfo=timezone("America/New_York")),
1067
+ AbstractHolidayCalendar(
1068
+ rules=[
1069
+ ConEdPowerFail328pmEarlyClose1981,
1070
+ ]
1071
+ ),
1072
+ ),
1073
+ (
1074
+ time(15, 30, tzinfo=timezone("America/New_York")),
1075
+ AbstractHolidayCalendar(
1076
+ rules=[
1077
+ CircuitBreakerTriggered330pmEarlyClose1997,
1078
+ ]
1079
+ ),
1080
+ ),
1081
+ (
1082
+ time(15, 56, tzinfo=timezone("America/New_York")),
1083
+ AbstractHolidayCalendar(
1084
+ rules=[
1085
+ SystemProb356pmEarlyClose2005,
1086
+ ]
1087
+ ),
1088
+ ),
1089
+ ]
1090
+
1091
+ #
1092
+ @property
1093
+ def special_closes_adhoc(self):
1094
+ def _union_many(indexes):
1095
+ # Merges a list of pd.DatetimeIndex objects, returns merged DatetimeIndex
1096
+ union_index = pd.DatetimeIndex([], tz="UTC")
1097
+ for index in indexes:
1098
+ union_index = union_index.union(index)
1099
+ return union_index
1100
+
1101
+ return [
1102
+ (
1103
+ time(13, tzinfo=timezone("America/New_York")),
1104
+ # DaysBeforeIndependenceDay1pmEarlyCloseAdhoc # list
1105
+ ChristmasEve1pmEarlyCloseAdhoc
1106
+ + DayAfterChristmas1pmEarlyCloseAdhoc
1107
+ + BacklogRelief1pmEarlyClose1929,
1108
+ ),
1109
+ (
1110
+ time(14, tzinfo=timezone("America/New_York")),
1111
+ _union_many(
1112
+ [
1113
+ pd.DatetimeIndex(
1114
+ ChristmasEve2pmEarlyCloseAdhoc
1115
+ + HeavyVolume2pmEarlyClose1933
1116
+ )
1117
+ ]
1118
+ + [
1119
+ BacklogRelief2pmEarlyClose1928,
1120
+ TransitStrike2pmEarlyClose1966, # index
1121
+ Backlog2pmEarlyCloses1967, # index
1122
+ Backlog2pmEarlyCloses1968, # index
1123
+ PaperworkCrisis2pmEarlyCloses1969, # index
1124
+ Backlog2pmEarlyCloses1987,
1125
+ ]
1126
+ ), # index
1127
+ ),
1128
+ (
1129
+ time(14, 30, tzinfo=timezone("America/New_York")),
1130
+ _union_many(
1131
+ [PaperworkCrisis230pmEarlyCloses1969, Backlog230pmEarlyCloses1987]
1132
+ ), # index
1133
+ ),
1134
+ (
1135
+ time(15, tzinfo=timezone("America/New_York")),
1136
+ _union_many(
1137
+ [PaperworkCrisis3pmEarlyCloses1969to1970, Backlog3pmEarlyCloses1987]
1138
+ ), # index
1139
+ ),
1140
+ (
1141
+ time(15, 30, tzinfo=timezone("America/New_York")),
1142
+ Backlog330pmEarlyCloses1987, # index
1143
+ ),
1144
+ ]
1145
+
1146
+ #
1147
+ @property
1148
+ def special_opens(self):
1149
+ return [
1150
+ (
1151
+ time(hour=9, minute=31, tzinfo=timezone("America/New_York")),
1152
+ AbstractHolidayCalendar(
1153
+ rules=[
1154
+ ConEdXformer931amLateOpen1990,
1155
+ EnduringFreedomMomentSilence931amLateOpen2001,
1156
+ ]
1157
+ ),
1158
+ ),
1159
+ (
1160
+ time(hour=9, minute=32, tzinfo=timezone("America/New_York")),
1161
+ AbstractHolidayCalendar(
1162
+ rules=[
1163
+ IraqiFreedom932amLateOpen2003,
1164
+ ReaganMomentSilence932amLateOpen2004,
1165
+ FordMomentSilence932amLateOpen2006,
1166
+ ]
1167
+ ),
1168
+ ),
1169
+ (
1170
+ time(hour=9, minute=33, tzinfo=timezone("America/New_York")),
1171
+ AbstractHolidayCalendar(
1172
+ rules=[
1173
+ Sept11MomentSilence933amLateOpen2001,
1174
+ ]
1175
+ ),
1176
+ ),
1177
+ (
1178
+ time(hour=10, minute=15, tzinfo=timezone("America/New_York")),
1179
+ AbstractHolidayCalendar(
1180
+ rules=[
1181
+ Snow1015LateOpen1967,
1182
+ MerrillLynchComputer1015LateOpen1974,
1183
+ FireDrill1015LateOpen1974,
1184
+ FireDrill1015LateOpen1976,
1185
+ ]
1186
+ ),
1187
+ ),
1188
+ (
1189
+ time(hour=10, minute=30, tzinfo=timezone("America/New_York")),
1190
+ AbstractHolidayCalendar(
1191
+ rules=[
1192
+ TrafficBlockLateOpen1919,
1193
+ TrafficBlockLateOpen1920,
1194
+ Computer1030LateOpen1995,
1195
+ ]
1196
+ ),
1197
+ ),
1198
+ (
1199
+ time(hour=10, minute=45, tzinfo=timezone("America/New_York")),
1200
+ AbstractHolidayCalendar(
1201
+ rules=[
1202
+ EclipseOfSunLateOpen1925,
1203
+ Storm1045LateOpen1969,
1204
+ ]
1205
+ ),
1206
+ ),
1207
+ (
1208
+ time(11, tzinfo=timezone("America/New_York")),
1209
+ AbstractHolidayCalendar(
1210
+ rules=[
1211
+ Snow11amLateOpen1934,
1212
+ KingGeorgeVFuneral11amLateOpen1936,
1213
+ Snow11amLateOpening1960,
1214
+ Snow11amLateOpen1969,
1215
+ Ice11amLateOpen1973,
1216
+ Snow11amLateOpen1978,
1217
+ Fire11amLateOpen1989,
1218
+ Snow11amLateOpen1996,
1219
+ ]
1220
+ ),
1221
+ ),
1222
+ (
1223
+ time(11, 5, tzinfo=timezone("America/New_York")),
1224
+ AbstractHolidayCalendar(
1225
+ rules=[
1226
+ PowerFail1105LateOpen,
1227
+ ]
1228
+ ),
1229
+ ),
1230
+ (
1231
+ time(11, 15, tzinfo=timezone("America/New_York")),
1232
+ AbstractHolidayCalendar(
1233
+ rules=[
1234
+ Storm1115LateOpen1976,
1235
+ ]
1236
+ ),
1237
+ ),
1238
+ (
1239
+ time(12, tzinfo=timezone("America/New_York")),
1240
+ AbstractHolidayCalendar(
1241
+ rules=[
1242
+ KingEdwardFuneral12pmOpen1910,
1243
+ JPMorganFuneral12pmOpen1913,
1244
+ WilliamGaynorFuneral12pmOpen1913,
1245
+ Snow12pmLateOpen1978,
1246
+ Sept11Anniversary12pmLateOpen2002,
1247
+ ]
1248
+ ),
1249
+ ),
1250
+ (
1251
+ time(13, tzinfo=timezone("America/New_York")),
1252
+ AbstractHolidayCalendar(
1253
+ rules=[
1254
+ AnnunciatorBoardFire1pmLateOpen1921,
1255
+ ]
1256
+ ),
1257
+ ),
1258
+ ]
1259
+
1260
+ #
1261
+ @property
1262
+ def special_opens_adhoc(self):
1263
+ return [
1264
+ (
1265
+ time(9, 31, tzinfo=timezone("America/New_York")),
1266
+ TroopsInGulf931LateOpens1991,
1267
+ ),
1268
+ (
1269
+ time(11, tzinfo=timezone("America/New_York")),
1270
+ HeavyVolume11amLateOpen1933,
1271
+ ),
1272
+ (
1273
+ time(12, tzinfo=timezone("America/New_York")),
1274
+ BacklogRelief12pmLateOpen1929 + HeavyVolume12pmLateOpen1933,
1275
+ ),
1276
+ ]
1277
+
1278
+ # Override market_calendar.py
1279
+ def valid_days(self, start_date, end_date, tz="UTC"):
1280
+ """
1281
+ Get a DatetimeIndex of valid open business days.
1282
+
1283
+ :param start_date: start date
1284
+ :param end_date: end date
1285
+ :param tz: time zone in either string or pytz.timezone
1286
+ :return: DatetimeIndex of valid business days
1287
+ """
1288
+ trading_days = super().valid_days(start_date, end_date, tz=tz)
1289
+
1290
+ # Starting Monday Sept. 29, 1952, no more saturday trading days
1291
+ if tz is None:
1292
+ saturday_end = self._saturday_end.tz_localize(None)
1293
+ else:
1294
+ saturday_end = self._saturday_end
1295
+
1296
+ above_cut_off = trading_days >= saturday_end
1297
+ if above_cut_off.any():
1298
+ above_and_saturday = (trading_days.weekday == 5) & above_cut_off
1299
+ trading_days = trading_days[~above_and_saturday]
1300
+
1301
+ return trading_days
1302
+
1303
+ def days_at_time(self, days, market_time, day_offset=0):
1304
+ days = super().days_at_time(days, market_time, day_offset=day_offset)
1305
+
1306
+ if market_time == "market_close" and not self.is_custom(market_time):
1307
+ days = days.dt.tz_convert(self.tz)
1308
+ days = days.where(
1309
+ days.dt.weekday != 5,
1310
+ days.dt.normalize() + self._tdelta(self._saturday_close),
1311
+ )
1312
+ days = days.dt.tz_convert("UTC")
1313
+ return days
1314
+
1315
+ def early_closes(self, schedule):
1316
+ """
1317
+ Get a DataFrame of the dates that are an early close.
1318
+
1319
+ :param schedule: schedule DataFrame
1320
+ :return: schedule DataFrame with rows that are early closes
1321
+ """
1322
+ early = super().early_closes(schedule)
1323
+
1324
+ # make sure saturdays are not considered early closes if they are >= 12pm
1325
+ mc = early.market_close.dt.tz_convert(self.tz)
1326
+ after_noon = (mc - mc.dt.normalize()).ge(self._tdelta(self._saturday_close))
1327
+ return early[~(mc.dt.weekday.eq(5) & after_noon)]