pandas-market-calendars 4.5.0__py3-none-any.whl → 4.5.1__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.
@@ -1,1327 +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
- # 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)]
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)]