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

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. pandas_market_calendars/__init__.py +38 -37
  2. pandas_market_calendars/calendar_registry.py +53 -48
  3. pandas_market_calendars/calendar_utils.py +261 -225
  4. pandas_market_calendars/calendars/asx.py +66 -63
  5. pandas_market_calendars/calendars/bmf.py +206 -227
  6. pandas_market_calendars/calendars/bse.py +407 -409
  7. pandas_market_calendars/calendars/cboe.py +145 -115
  8. pandas_market_calendars/calendars/cme.py +402 -240
  9. pandas_market_calendars/calendars/cme_globex_agriculture.py +126 -103
  10. pandas_market_calendars/calendars/cme_globex_base.py +119 -103
  11. pandas_market_calendars/calendars/cme_globex_crypto.py +160 -147
  12. pandas_market_calendars/calendars/cme_globex_energy_and_metals.py +216 -138
  13. pandas_market_calendars/calendars/cme_globex_equities.py +123 -104
  14. pandas_market_calendars/calendars/cme_globex_fixed_income.py +136 -113
  15. pandas_market_calendars/calendars/cme_globex_fx.py +101 -78
  16. pandas_market_calendars/calendars/eurex.py +139 -119
  17. pandas_market_calendars/calendars/eurex_fixed_income.py +98 -0
  18. pandas_market_calendars/calendars/hkex.py +426 -408
  19. pandas_market_calendars/calendars/ice.py +81 -65
  20. pandas_market_calendars/calendars/iex.py +112 -98
  21. pandas_market_calendars/calendars/jpx.py +109 -103
  22. pandas_market_calendars/calendars/lse.py +114 -91
  23. pandas_market_calendars/calendars/mirror.py +130 -114
  24. pandas_market_calendars/calendars/nyse.py +1324 -1127
  25. pandas_market_calendars/calendars/ose.py +116 -150
  26. pandas_market_calendars/calendars/sifma.py +350 -297
  27. pandas_market_calendars/calendars/six.py +132 -114
  28. pandas_market_calendars/calendars/sse.py +311 -290
  29. pandas_market_calendars/calendars/tase.py +197 -195
  30. pandas_market_calendars/calendars/tsx.py +181 -159
  31. pandas_market_calendars/class_registry.py +22 -16
  32. pandas_market_calendars/holidays/cme.py +385 -340
  33. pandas_market_calendars/holidays/cme_globex.py +214 -198
  34. pandas_market_calendars/holidays/cn.py +1455 -1436
  35. pandas_market_calendars/holidays/jp.py +398 -396
  36. pandas_market_calendars/holidays/jpx_equinox.py +453 -95
  37. pandas_market_calendars/holidays/nyse.py +1531 -1472
  38. pandas_market_calendars/holidays/oz.py +63 -65
  39. pandas_market_calendars/holidays/sifma.py +338 -321
  40. pandas_market_calendars/holidays/uk.py +32 -26
  41. pandas_market_calendars/holidays/us.py +376 -360
  42. pandas_market_calendars/market_calendar.py +895 -789
  43. {pandas_market_calendars-4.3.1.dist-info → pandas_market_calendars-4.3.3.dist-info}/METADATA +7 -5
  44. pandas_market_calendars-4.3.3.dist-info/RECORD +50 -0
  45. {pandas_market_calendars-4.3.1.dist-info → pandas_market_calendars-4.3.3.dist-info}/WHEEL +1 -1
  46. pandas_market_calendars-4.3.1.dist-info/RECORD +0 -49
  47. {pandas_market_calendars-4.3.1.dist-info → pandas_market_calendars-4.3.3.dist-info}/LICENSE +0 -0
  48. {pandas_market_calendars-4.3.1.dist-info → pandas_market_calendars-4.3.3.dist-info}/NOTICE +0 -0
  49. {pandas_market_calendars-4.3.1.dist-info → pandas_market_calendars-4.3.3.dist-info}/top_level.txt +0 -0
@@ -1,138 +1,216 @@
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 .cme_globex_base import CMEGlobexBaseExchangeCalendar
17
-
18
- from datetime import time
19
-
20
- from pandas.tseries.holiday import AbstractHolidayCalendar #, GoodFriday, USLaborDay, USPresidentsDay, USThanksgivingDay
21
- from pytz import timezone
22
-
23
- #from .holidays_us import (Christmas, ChristmasEveBefore1993, ChristmasEveInOrAfter1993, USBlackFridayInOrAfter1993,
24
- # USIndependenceDay, USMartinLutherKingJrAfter1998, USMemorialDay, USJuneteenthAfter2022,
25
- # USNationalDaysofMourning, USNewYearsDay)
26
-
27
- from pandas_market_calendars.holidays.cme_globex import (USMartinLutherKingJrFrom2022, USMartinLutherKingJrPre2022, USNewYearsDay,
28
- USPresidentsDayFrom2022, USPresidentsDayPre2022,
29
- GoodFriday,
30
- USMemorialDayFrom2022, USMemorialDayPre2022,
31
- USJuneteenthFrom2022,
32
- USIndependenceDayFrom2022, USIndependenceDayPre2022,
33
- USLaborDay,
34
- USThanksgivingDayFrom2022, USThanksgivingDayPre2022, FridayAfterThanksgiving,
35
- ChristmasCME)
36
-
37
-
38
- class CMEGlobexEnergyAndMetalsExchangeCalendar(CMEGlobexBaseExchangeCalendar):
39
- """
40
- Exchange calendar for CME for Energy and Metals products
41
-
42
- Both follow the same trading/holiday schedule
43
-
44
- NOT IMPLEMENTED: Dubai Mercantile Exchange (DME) follows this schedule but with holiday exceptions.
45
-
46
- Energy Products:
47
- Crude and Refined: https://www.cmegroup.com/trading/energy/crude-and-refined-products.html
48
- - HO NY Harbor ULSD Futures
49
- - CL Crude Oil Futures
50
- - RB RBOB Gasoline Futures
51
- - MCL Micro WTI Crude Oil Futures
52
- Natural Gas
53
- - NG Henry Hub Natural Gas Futures
54
- - TTF Dutch TTF Natural Gas Calendar Month Futures
55
- - NN Henry Hub Natural Gas Last Day Financial Futures
56
- Voluntary Carbon Emissions Offset Futures
57
- - CGO CBL Core Global Emmissions Offset (C-GEO) Futures
58
- - NGO CBL Nature-based Global Emissionns Offset Futures
59
- - GEO CBL Global Emissions Offset Futures
60
-
61
- Metals Products: https://www.cmegroup.com/markets/metals.html
62
- Precious Metals
63
- - GC Gold Futures
64
- - SI Silver Futures
65
- - PL Platinum Futures
66
- Base Metals
67
- - HG Copper Futures
68
- - ALI Aluminum Futures
69
- - QC E-mini Copper Futures
70
- Ferrous Metals
71
- - HRC U.S. Midwest Domestic Hot-Rolled Coil Steel (CRU) Index Futures
72
- - BUS U.S. Midwest Busheling Ferrous Scrap (AMM) Futures
73
- - TIO Iron Ore 62% Fe, CFR China (Platts) Futures
74
-
75
- Sample GLOBEX Trading Times
76
- https://www.cmegroup.com/markets/energy/crude-oil/light-sweet-crude.contractSpecs.html
77
- Sunday - Friday: 5:00pm - 4:00 pm CT
78
-
79
- Calendar: http://www.cmegroup.com/tools-information/holiday-calendar.html
80
- """
81
-
82
- aliases = [ 'CMEGlobex_EnergyAndMetals',
83
- 'CMEGlobex_Energy',
84
- 'CMEGlobex_CrudeAndRefined', 'CMEGlobex_NYHarbor', 'CMEGlobex_HO', 'HO', 'CMEGlobex_Crude', 'CMEGlobex_CL', 'CL', 'CMEGlobex_Gas', 'CMEGlobex_RB', 'RB', 'CMEGlobex_MicroCrude', 'CMEGlobex_MCL', 'MCL',
85
- 'CMEGlobex_NatGas', 'CMEGlobex_NG', 'NG', 'CMEGlobex_Dutch_NatGas', 'CMEGlobex_TTF', 'TTF', 'CMEGlobex_LastDay_NatGas', 'CMEGlobex_NN', 'NN',
86
- 'CMEGlobex_CarbonOffset', 'CMEGlobex_CGO', 'CGO', 'C-GEO', 'CMEGlobex_NGO', 'NGO', 'CMEGlobex_GEO', 'GEO',
87
- 'CMEGlobex_Metals',
88
- 'CMEGlobex_PreciousMetals', 'CMEGlobex_Gold', 'CMEGlobex_GC', 'GC', 'CMEGlobex_Silver' 'CMEGlobex_SI', 'SI', 'CMEGlobex_Platinum', 'CMEGlobex_PL', 'PL',
89
- 'CMEGlobex_BaseMetals', 'CMEGlobex_Copper', 'CMEGlobex_HG', 'HG', 'CMEGlobex_Aluminum', 'CMEGlobex_ALI', 'ALI', 'CMEGlobex_Copper', 'CMEGlobex_QC', 'QC',
90
- 'CMEGlobex_FerrousMetals', 'CMEGlobex_HRC', 'HRC', 'CMEGlobex_BUS', 'BUS', 'CMEGlobex_TIO', 'TIO' ]
91
-
92
- regular_market_times = {
93
- "market_open": ((None, time(17), -1),), #Sunday offset. Central Timezone (CT)
94
- "market_close": ((None, time(16)),)
95
- }
96
-
97
- @property
98
- def name(self):
99
- return "CMEGlobex_EnergyAndMetals"
100
-
101
-
102
- @property
103
- def regular_holidays(self):
104
- return AbstractHolidayCalendar(rules=[
105
- USNewYearsDay,
106
- GoodFriday,
107
- ChristmasCME,
108
- ])
109
-
110
- # @property
111
- # def adhoc_holidays(self):
112
- # return USNationalDaysofMourning
113
-
114
- @property
115
- def special_closes(self):
116
- return [
117
- (time(12, tzinfo=timezone('America/Chicago')), AbstractHolidayCalendar(rules=[
118
- USMartinLutherKingJrPre2022,
119
- USPresidentsDayPre2022,
120
- USMemorialDayPre2022,
121
- USIndependenceDayPre2022,
122
- USLaborDay,
123
- USThanksgivingDayPre2022,
124
- ])),
125
- (time(12, 45, tzinfo=timezone('America/Chicago')), AbstractHolidayCalendar(rules=[
126
- FridayAfterThanksgiving,
127
- ])),
128
- (time(13, 30, tzinfo=timezone('America/Chicago')), AbstractHolidayCalendar(rules=[
129
- USMartinLutherKingJrFrom2022,
130
- USPresidentsDayFrom2022,
131
- USMemorialDayFrom2022,
132
- USJuneteenthFrom2022,
133
- USIndependenceDayFrom2022,
134
- USThanksgivingDayFrom2022,
135
- ])),
136
- ]
137
-
138
-
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
+
18
+ from pandas.tseries.holiday import (
19
+ AbstractHolidayCalendar,
20
+ ) # , GoodFriday, USLaborDay, USPresidentsDay, USThanksgivingDay
21
+ from pytz import timezone
22
+
23
+ from pandas_market_calendars.holidays.cme_globex import (
24
+ USMartinLutherKingJrFrom2022,
25
+ USMartinLutherKingJrPre2022,
26
+ USNewYearsDay,
27
+ USPresidentsDayFrom2022,
28
+ USPresidentsDayPre2022,
29
+ GoodFriday,
30
+ USMemorialDayFrom2022,
31
+ USMemorialDayPre2022,
32
+ USJuneteenthFrom2022,
33
+ USIndependenceDayFrom2022,
34
+ USIndependenceDayPre2022,
35
+ USLaborDay,
36
+ USThanksgivingDayFrom2022,
37
+ USThanksgivingDayPre2022,
38
+ FridayAfterThanksgiving,
39
+ ChristmasCME,
40
+ )
41
+ from .cme_globex_base import CMEGlobexBaseExchangeCalendar
42
+
43
+
44
+ # from .holidays_us import (Christmas, ChristmasEveBefore1993, ChristmasEveInOrAfter1993, USBlackFridayInOrAfter1993,
45
+ # USIndependenceDay, USMartinLutherKingJrAfter1998, USMemorialDay, USJuneteenthAfter2022,
46
+ # USNationalDaysofMourning, USNewYearsDay)
47
+
48
+
49
+ class CMEGlobexEnergyAndMetalsExchangeCalendar(CMEGlobexBaseExchangeCalendar):
50
+ """
51
+ Exchange calendar for CME for Energy and Metals products
52
+
53
+ Both follow the same trading/holiday schedule
54
+
55
+ NOT IMPLEMENTED: Dubai Mercantile Exchange (DME) follows this schedule but with holiday exceptions.
56
+
57
+ Energy Products:
58
+ Crude and Refined: https://www.cmegroup.com/trading/energy/crude-and-refined-products.html
59
+ - HO NY Harbor ULSD Futures
60
+ - CL Crude Oil Futures
61
+ - RB RBOB Gasoline Futures
62
+ - MCL Micro WTI Crude Oil Futures
63
+ Natural Gas
64
+ - NG Henry Hub Natural Gas Futures
65
+ - TTF Dutch TTF Natural Gas Calendar Month Futures
66
+ - NN Henry Hub Natural Gas Last Day Financial Futures
67
+ Voluntary Carbon Emissions Offset Futures
68
+ - CGO CBL Core Global Emmissions Offset (C-GEO) Futures
69
+ - NGO CBL Nature-based Global Emissionns Offset Futures
70
+ - GEO CBL Global Emissions Offset Futures
71
+
72
+ Metals Products: https://www.cmegroup.com/markets/metals.html
73
+ Precious Metals
74
+ - GC Gold Futures
75
+ - SI Silver Futures
76
+ - PL Platinum Futures
77
+ Base Metals
78
+ - HG Copper Futures
79
+ - ALI Aluminum Futures
80
+ - QC E-mini Copper Futures
81
+ Ferrous Metals
82
+ - HRC U.S. Midwest Domestic Hot-Rolled Coil Steel (CRU) Index Futures
83
+ - BUS U.S. Midwest Busheling Ferrous Scrap (AMM) Futures
84
+ - TIO Iron Ore 62% Fe, CFR China (Platts) Futures
85
+
86
+ Sample GLOBEX Trading Times
87
+ https://www.cmegroup.com/markets/energy/crude-oil/light-sweet-crude.contractSpecs.html
88
+ Sunday - Friday: 5:00pm - 4:00 pm CT
89
+
90
+ Calendar: http://www.cmegroup.com/tools-information/holiday-calendar.html
91
+ """
92
+
93
+ aliases = [
94
+ "CMEGlobex_EnergyAndMetals",
95
+ "CMEGlobex_Energy",
96
+ "CMEGlobex_CrudeAndRefined",
97
+ "CMEGlobex_NYHarbor",
98
+ "CMEGlobex_HO",
99
+ "HO",
100
+ "CMEGlobex_Crude",
101
+ "CMEGlobex_CL",
102
+ "CL",
103
+ "CMEGlobex_Gas",
104
+ "CMEGlobex_RB",
105
+ "RB",
106
+ "CMEGlobex_MicroCrude",
107
+ "CMEGlobex_MCL",
108
+ "MCL",
109
+ "CMEGlobex_NatGas",
110
+ "CMEGlobex_NG",
111
+ "NG",
112
+ "CMEGlobex_Dutch_NatGas",
113
+ "CMEGlobex_TTF",
114
+ "TTF",
115
+ "CMEGlobex_LastDay_NatGas",
116
+ "CMEGlobex_NN",
117
+ "NN",
118
+ "CMEGlobex_CarbonOffset",
119
+ "CMEGlobex_CGO",
120
+ "CGO",
121
+ "C-GEO",
122
+ "CMEGlobex_NGO",
123
+ "NGO",
124
+ "CMEGlobex_GEO",
125
+ "GEO",
126
+ "CMEGlobex_Metals",
127
+ "CMEGlobex_PreciousMetals",
128
+ "CMEGlobex_Gold",
129
+ "CMEGlobex_GC",
130
+ "GC",
131
+ "CMEGlobex_Silver",
132
+ "CMEGlobex_SI",
133
+ "SI",
134
+ "CMEGlobex_Platinum",
135
+ "CMEGlobex_PL",
136
+ "PL",
137
+ "CMEGlobex_BaseMetals",
138
+ "CMEGlobex_Copper",
139
+ "CMEGlobex_HG",
140
+ "HG",
141
+ "CMEGlobex_Aluminum",
142
+ "CMEGlobex_ALI",
143
+ "ALI",
144
+ "CMEGlobex_Copper",
145
+ "CMEGlobex_QC",
146
+ "QC",
147
+ "CMEGlobex_FerrousMetals",
148
+ "CMEGlobex_HRC",
149
+ "HRC",
150
+ "CMEGlobex_BUS",
151
+ "BUS",
152
+ "CMEGlobex_TIO",
153
+ "TIO",
154
+ ]
155
+
156
+ regular_market_times = {
157
+ "market_open": ((None, time(17), -1),), # Sunday offset. Central Timezone (CT)
158
+ "market_close": ((None, time(16)),),
159
+ }
160
+
161
+ @property
162
+ def name(self):
163
+ return "CMEGlobex_EnergyAndMetals"
164
+
165
+ @property
166
+ def regular_holidays(self):
167
+ return AbstractHolidayCalendar(
168
+ rules=[
169
+ USNewYearsDay,
170
+ GoodFriday,
171
+ ChristmasCME,
172
+ ]
173
+ )
174
+
175
+ # @property
176
+ # def adhoc_holidays(self):
177
+ # return USNationalDaysofMourning
178
+
179
+ @property
180
+ def special_closes(self):
181
+ return [
182
+ (
183
+ time(12, tzinfo=timezone("America/Chicago")),
184
+ AbstractHolidayCalendar(
185
+ rules=[
186
+ USMartinLutherKingJrPre2022,
187
+ USPresidentsDayPre2022,
188
+ USMemorialDayPre2022,
189
+ USIndependenceDayPre2022,
190
+ USLaborDay,
191
+ USThanksgivingDayPre2022,
192
+ ]
193
+ ),
194
+ ),
195
+ (
196
+ time(12, 45, tzinfo=timezone("America/Chicago")),
197
+ AbstractHolidayCalendar(
198
+ rules=[
199
+ FridayAfterThanksgiving,
200
+ ]
201
+ ),
202
+ ),
203
+ (
204
+ time(13, 30, tzinfo=timezone("America/Chicago")),
205
+ AbstractHolidayCalendar(
206
+ rules=[
207
+ USMartinLutherKingJrFrom2022,
208
+ USPresidentsDayFrom2022,
209
+ USMemorialDayFrom2022,
210
+ USJuneteenthFrom2022,
211
+ USIndependenceDayFrom2022,
212
+ USThanksgivingDayFrom2022,
213
+ ]
214
+ ),
215
+ ),
216
+ ]
@@ -1,104 +1,123 @@
1
- from .cme_globex_base import CMEGlobexBaseExchangeCalendar
2
-
3
- from datetime import time
4
- from pandas.tseries.holiday import AbstractHolidayCalendar
5
- from pytz import timezone
6
-
7
- from pandas_market_calendars.holidays.cme import (
8
- USMartinLutherKingJrAfter1998Before2015,
9
- USMartinLutherKingJrAfter2015,
10
- USPresidentsDayBefore2015,
11
- USPresidentsDayAfter2015,
12
- GoodFridayBefore2021NotEarlyClose,
13
- GoodFridayAfter2021,
14
- GoodFriday2010,
15
- GoodFriday2012,
16
- GoodFriday2015,
17
- GoodFriday2021,
18
- USMemorialDay2013AndPrior,
19
- USMemorialDayAfter2013,
20
- USIndependenceDayBefore2022PreviousDay,
21
- USIndependenceDayBefore2014,
22
- USIndependenceDayAfter2014,
23
- USLaborDayStarting1887Before2014,
24
- USLaborDayStarting1887After2014,
25
- USThanksgivingBefore2014,
26
- USThanksgivingAfter2014,
27
- USThanksgivingFriday,
28
- )
29
- from pandas_market_calendars.holidays.us import (
30
- USNewYearsDay,
31
- ChristmasEveInOrAfter1993,
32
- Christmas,
33
- USJuneteenthAfter2022
34
- )
35
-
36
- class CMEGlobexEquitiesExchangeCalendar(CMEGlobexBaseExchangeCalendar):
37
-
38
- aliases = ["CME Globex Equity"]
39
-
40
- regular_market_times = {
41
- "market_open": ((None, time(17), -1),), # offset by -1 day
42
- "market_close": ((None, time(16)),),
43
- }
44
-
45
- @property
46
- def tz(self): return timezone("America/Chicago")
47
-
48
- @property
49
- def name(self):
50
- """
51
- Name of the market
52
-
53
- :return: string name
54
- """
55
- return "CME Globex Equities"
56
-
57
- @property
58
- def regular_holidays(self):
59
- return AbstractHolidayCalendar(rules=[
60
- USNewYearsDay,
61
- GoodFridayBefore2021NotEarlyClose,
62
- GoodFridayAfter2021,
63
- Christmas,
64
- ])
65
-
66
- @property
67
- def special_closes(self):
68
- # Source https://www.cmegroup.com/tools-information/holiday-calendar.html
69
- return [
70
- (time(10, 30), AbstractHolidayCalendar(rules=[
71
- USMartinLutherKingJrAfter1998Before2015,
72
- USPresidentsDayBefore2015,
73
- USMemorialDay2013AndPrior,
74
- USIndependenceDayBefore2014,
75
- USLaborDayStarting1887Before2014,
76
- USThanksgivingBefore2014,
77
- ])),
78
-
79
- (time(12,15), AbstractHolidayCalendar(rules= [
80
- USIndependenceDayBefore2022PreviousDay,
81
- USThanksgivingFriday,
82
- ChristmasEveInOrAfter1993,
83
- ])),
84
-
85
- (time(12), AbstractHolidayCalendar(rules=[
86
- USMartinLutherKingJrAfter2015,
87
- USPresidentsDayAfter2015,
88
- USMemorialDayAfter2013,
89
- USIndependenceDayAfter2014,
90
- USLaborDayStarting1887After2014,
91
- USThanksgivingAfter2014,
92
- USJuneteenthAfter2022
93
-
94
- ])),
95
- (time(8,15), AbstractHolidayCalendar(rules=[
96
- GoodFriday2010,
97
- GoodFriday2012,
98
- GoodFriday2015,
99
- GoodFriday2021,
100
- ])),
101
-
102
- ]
103
-
104
-
1
+ from datetime import time
2
+
3
+ from pandas.tseries.holiday import AbstractHolidayCalendar
4
+ from pytz import timezone
5
+
6
+ from pandas_market_calendars.holidays.cme import (
7
+ USMartinLutherKingJrAfter1998Before2015,
8
+ USMartinLutherKingJrAfter2015,
9
+ USPresidentsDayBefore2015,
10
+ USPresidentsDayAfter2015,
11
+ GoodFridayBefore2021NotEarlyClose,
12
+ GoodFriday2010,
13
+ GoodFriday2012,
14
+ GoodFriday2015,
15
+ GoodFriday2021,
16
+ GoodFriday2022,
17
+ GoodFridayAfter2022,
18
+ USMemorialDay2013AndPrior,
19
+ USMemorialDayAfter2013,
20
+ USIndependenceDayBefore2022PreviousDay,
21
+ USIndependenceDayBefore2014,
22
+ USIndependenceDayAfter2014,
23
+ USLaborDayStarting1887Before2014,
24
+ USLaborDayStarting1887After2014,
25
+ USThanksgivingBefore2014,
26
+ USThanksgivingAfter2014,
27
+ USThanksgivingFriday,
28
+ )
29
+ from pandas_market_calendars.holidays.us import (
30
+ USNewYearsDay,
31
+ ChristmasEveInOrAfter1993,
32
+ Christmas,
33
+ USJuneteenthAfter2022,
34
+ )
35
+ from .cme_globex_base import CMEGlobexBaseExchangeCalendar
36
+
37
+
38
+ class CMEGlobexEquitiesExchangeCalendar(CMEGlobexBaseExchangeCalendar):
39
+ aliases = ["CME Globex Equity"]
40
+
41
+ regular_market_times = {
42
+ "market_open": ((None, time(17), -1),), # offset by -1 day
43
+ "market_close": ((None, time(16)),),
44
+ }
45
+
46
+ @property
47
+ def tz(self):
48
+ return timezone("America/Chicago")
49
+
50
+ @property
51
+ def name(self):
52
+ """
53
+ Name of the market
54
+
55
+ :return: string name
56
+ """
57
+ return "CME Globex Equities"
58
+
59
+ @property
60
+ def regular_holidays(self):
61
+ return AbstractHolidayCalendar(
62
+ rules=[
63
+ USNewYearsDay,
64
+ GoodFridayBefore2021NotEarlyClose,
65
+ GoodFriday2022,
66
+ Christmas,
67
+ ]
68
+ )
69
+
70
+ @property
71
+ def special_closes(self):
72
+ # Source https://www.cmegroup.com/tools-information/holiday-calendar.html
73
+ return [
74
+ (
75
+ time(10, 30),
76
+ AbstractHolidayCalendar(
77
+ rules=[
78
+ USMartinLutherKingJrAfter1998Before2015,
79
+ USPresidentsDayBefore2015,
80
+ USMemorialDay2013AndPrior,
81
+ USIndependenceDayBefore2014,
82
+ USLaborDayStarting1887Before2014,
83
+ USThanksgivingBefore2014,
84
+ ]
85
+ ),
86
+ ),
87
+ (
88
+ time(12, 15),
89
+ AbstractHolidayCalendar(
90
+ rules=[
91
+ USIndependenceDayBefore2022PreviousDay,
92
+ USThanksgivingFriday,
93
+ ChristmasEveInOrAfter1993,
94
+ ]
95
+ ),
96
+ ),
97
+ (
98
+ time(12),
99
+ AbstractHolidayCalendar(
100
+ rules=[
101
+ USMartinLutherKingJrAfter2015,
102
+ USPresidentsDayAfter2015,
103
+ USMemorialDayAfter2013,
104
+ USIndependenceDayAfter2014,
105
+ USLaborDayStarting1887After2014,
106
+ USThanksgivingAfter2014,
107
+ USJuneteenthAfter2022,
108
+ ]
109
+ ),
110
+ ),
111
+ (
112
+ time(8, 15),
113
+ AbstractHolidayCalendar(
114
+ rules=[
115
+ GoodFriday2010,
116
+ GoodFriday2012,
117
+ GoodFriday2015,
118
+ GoodFriday2021,
119
+ GoodFridayAfter2022,
120
+ ]
121
+ ),
122
+ ),
123
+ ]