pandas-market-calendars 4.3.0__py3-none-any.whl → 4.3.1__py3-none-any.whl

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