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

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. pandas_market_calendars/__init__.py +39 -38
  2. pandas_market_calendars/calendar_registry.py +57 -53
  3. pandas_market_calendars/calendar_utils.py +1200 -261
  4. pandas_market_calendars/calendars/asx.py +66 -66
  5. pandas_market_calendars/calendars/bmf.py +223 -206
  6. pandas_market_calendars/calendars/bse.py +421 -407
  7. pandas_market_calendars/calendars/cboe.py +145 -145
  8. pandas_market_calendars/calendars/cme.py +405 -402
  9. pandas_market_calendars/calendars/cme_globex_agriculture.py +172 -126
  10. pandas_market_calendars/calendars/cme_globex_base.py +119 -119
  11. pandas_market_calendars/calendars/cme_globex_crypto.py +160 -160
  12. pandas_market_calendars/calendars/cme_globex_energy_and_metals.py +216 -216
  13. pandas_market_calendars/calendars/cme_globex_equities.py +123 -123
  14. pandas_market_calendars/calendars/cme_globex_fixed_income.py +136 -136
  15. pandas_market_calendars/calendars/cme_globex_fx.py +101 -101
  16. pandas_market_calendars/calendars/eurex.py +131 -139
  17. pandas_market_calendars/calendars/eurex_fixed_income.py +98 -98
  18. pandas_market_calendars/calendars/hkex.py +429 -426
  19. pandas_market_calendars/calendars/ice.py +81 -81
  20. pandas_market_calendars/calendars/iex.py +151 -112
  21. pandas_market_calendars/calendars/jpx.py +113 -109
  22. pandas_market_calendars/calendars/lse.py +114 -114
  23. pandas_market_calendars/calendars/mirror.py +149 -130
  24. pandas_market_calendars/calendars/nyse.py +1466 -1324
  25. pandas_market_calendars/calendars/ose.py +116 -116
  26. pandas_market_calendars/calendars/sifma.py +354 -350
  27. pandas_market_calendars/calendars/six.py +132 -132
  28. pandas_market_calendars/calendars/sse.py +311 -311
  29. pandas_market_calendars/calendars/tase.py +220 -197
  30. pandas_market_calendars/calendars/tsx.py +181 -181
  31. pandas_market_calendars/holidays/cme.py +385 -385
  32. pandas_market_calendars/holidays/cme_globex.py +214 -214
  33. pandas_market_calendars/holidays/cn.py +1476 -1455
  34. pandas_market_calendars/holidays/jp.py +401 -398
  35. pandas_market_calendars/holidays/jpx_equinox.py +1 -0
  36. pandas_market_calendars/holidays/nyse.py +1536 -1531
  37. pandas_market_calendars/holidays/oz.py +63 -63
  38. pandas_market_calendars/holidays/sifma.py +350 -338
  39. pandas_market_calendars/holidays/us.py +376 -376
  40. pandas_market_calendars/market_calendar.py +1057 -895
  41. {pandas_market_calendars-4.3.3.dist-info → pandas_market_calendars-4.6.0.dist-info}/METADATA +13 -9
  42. pandas_market_calendars-4.6.0.dist-info/RECORD +50 -0
  43. {pandas_market_calendars-4.3.3.dist-info → pandas_market_calendars-4.6.0.dist-info}/WHEEL +1 -1
  44. pandas_market_calendars-4.3.3.dist-info/RECORD +0 -50
  45. {pandas_market_calendars-4.3.3.dist-info → pandas_market_calendars-4.6.0.dist-info}/LICENSE +0 -0
  46. {pandas_market_calendars-4.3.3.dist-info → pandas_market_calendars-4.6.0.dist-info}/NOTICE +0 -0
  47. {pandas_market_calendars-4.3.3.dist-info → pandas_market_calendars-4.6.0.dist-info}/top_level.txt +0 -0
@@ -1,66 +1,66 @@
1
- from datetime import time
2
-
3
- from pandas.tseries.holiday import AbstractHolidayCalendar, GoodFriday, EasterMonday
4
- from pytz import timezone
5
-
6
- from pandas_market_calendars.holidays.oz import *
7
- from pandas_market_calendars.market_calendar import MarketCalendar
8
-
9
- AbstractHolidayCalendar.start_date = "2011-01-01"
10
-
11
-
12
- class ASXExchangeCalendar(MarketCalendar):
13
- """
14
- Open Time: 10:00 AM, Australia/Sydney
15
- Close Time: 4:10 PM, Australia/Sydney
16
-
17
-
18
- Regularly-Observed Holidays:
19
- - New Year's Day (observed on Monday when Jan 1 is a Saturday or Sunday)
20
- - Australia Day (observed on Monday when Jan 26 is a Saturday or Sunday)
21
- - Good Friday (two days before Easter Sunday)
22
- - Easter Monday (the Monday after Easter Sunday)
23
- - ANZAC Day (April 25)
24
- - Queen's Birthday (second Monday in June)
25
- - Christmas Day (December 25, Saturday/Sunday to Monday)
26
- - Boxing Day (December 26, Saturday to Monday, Sunday to Tuesday)
27
-
28
-
29
- Regularly-Observed Early Closes:
30
- - Last Business Day before Christmas Day
31
- - Last Business Day of the Year
32
-
33
- """
34
-
35
- aliases = ["ASX"]
36
- regular_market_times = {
37
- "market_open": ((None, time(10)),),
38
- "market_close": ((None, time(16, 10)),),
39
- }
40
-
41
- @property
42
- def name(self):
43
- return "ASX"
44
-
45
- @property
46
- def tz(self):
47
- return timezone("Australia/Sydney")
48
-
49
- @property
50
- def regular_holidays(self):
51
- return AbstractHolidayCalendar(
52
- rules=[
53
- OZNewYearsDay,
54
- AustraliaDay,
55
- AnzacDay,
56
- QueensBirthday,
57
- Christmas,
58
- BoxingDay,
59
- GoodFriday,
60
- EasterMonday,
61
- ]
62
- )
63
-
64
- @property
65
- def adhoc_holidays(self):
66
- return UniqueCloses
1
+ from datetime import time
2
+
3
+ from pandas.tseries.holiday import AbstractHolidayCalendar, GoodFriday, EasterMonday
4
+ from pytz import timezone
5
+
6
+ from pandas_market_calendars.holidays.oz import *
7
+ from pandas_market_calendars.market_calendar import MarketCalendar
8
+
9
+ AbstractHolidayCalendar.start_date = "2011-01-01"
10
+
11
+
12
+ class ASXExchangeCalendar(MarketCalendar):
13
+ """
14
+ Open Time: 10:00 AM, Australia/Sydney
15
+ Close Time: 4:10 PM, Australia/Sydney
16
+
17
+
18
+ Regularly-Observed Holidays:
19
+ - New Year's Day (observed on Monday when Jan 1 is a Saturday or Sunday)
20
+ - Australia Day (observed on Monday when Jan 26 is a Saturday or Sunday)
21
+ - Good Friday (two days before Easter Sunday)
22
+ - Easter Monday (the Monday after Easter Sunday)
23
+ - ANZAC Day (April 25)
24
+ - Queen's Birthday (second Monday in June)
25
+ - Christmas Day (December 25, Saturday/Sunday to Monday)
26
+ - Boxing Day (December 26, Saturday to Monday, Sunday to Tuesday)
27
+
28
+
29
+ Regularly-Observed Early Closes:
30
+ - Last Business Day before Christmas Day
31
+ - Last Business Day of the Year
32
+
33
+ """
34
+
35
+ aliases = ["ASX"]
36
+ regular_market_times = {
37
+ "market_open": ((None, time(10)),),
38
+ "market_close": ((None, time(16, 10)),),
39
+ }
40
+
41
+ @property
42
+ def name(self):
43
+ return "ASX"
44
+
45
+ @property
46
+ def tz(self):
47
+ return timezone("Australia/Sydney")
48
+
49
+ @property
50
+ def regular_holidays(self):
51
+ return AbstractHolidayCalendar(
52
+ rules=[
53
+ OZNewYearsDay,
54
+ AustraliaDay,
55
+ AnzacDay,
56
+ QueensBirthday,
57
+ Christmas,
58
+ BoxingDay,
59
+ GoodFriday,
60
+ EasterMonday,
61
+ ]
62
+ )
63
+
64
+ @property
65
+ def adhoc_holidays(self):
66
+ return UniqueCloses
@@ -1,206 +1,223 @@
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 import Timestamp
19
- from pandas.tseries.holiday import (
20
- AbstractHolidayCalendar,
21
- Day,
22
- Easter,
23
- GoodFriday,
24
- Holiday,
25
- )
26
- from pytz import timezone
27
-
28
- from pandas_market_calendars.market_calendar import FRIDAY, MarketCalendar
29
-
30
- # Universal Confraternization (new years day)
31
- ConfUniversal = Holiday(
32
- "Dia da Confraternizacao Universal",
33
- month=1,
34
- day=1,
35
- )
36
- # Sao Paulo city birthday
37
- AniversarioSaoPaulo = Holiday(
38
- "Aniversario de Sao Paulo", month=1, day=25, end_date="2021-12-31"
39
- )
40
- # Carnival Monday
41
- CarnavalSegunda = Holiday(
42
- "Carnaval Segunda", month=1, day=1, offset=[Easter(), Day(-48)]
43
- )
44
- # Carnival Tuesday
45
- CarnavalTerca = Holiday("Carnaval Terca", month=1, day=1, offset=[Easter(), Day(-47)])
46
- # Ash Wednesday (short day)
47
- QuartaCinzas = Holiday("Quarta Cinzas", month=1, day=1, offset=[Easter(), Day(-46)])
48
- # Good Friday
49
- SextaPaixao = GoodFriday
50
- # Feast of the Most Holy Body of Christ
51
- CorpusChristi = Holiday("Corpus Christi", month=1, day=1, offset=[Easter(), Day(60)])
52
- # Tiradentes Memorial
53
- Tiradentes = Holiday(
54
- "Tiradentes",
55
- month=4,
56
- day=21,
57
- )
58
- # Labor Day
59
- DiaTrabalho = Holiday(
60
- "Dia Trabalho",
61
- month=5,
62
- day=1,
63
- )
64
- # Constitutionalist Revolution
65
- Constitucionalista = Holiday(
66
- "Constitucionalista", month=7, day=9, start_date="1997-01-01", end_date="2019-12-31"
67
- )
68
- # Independence Day
69
- Independencia = Holiday(
70
- "Independencia",
71
- month=9,
72
- day=7,
73
- )
74
- # Our Lady of Aparecida
75
- Aparecida = Holiday(
76
- "Nossa Senhora de Aparecida",
77
- month=10,
78
- day=12,
79
- )
80
- # All Souls' Day
81
- Finados = Holiday(
82
- "Dia dos Finados",
83
- month=11,
84
- day=2,
85
- )
86
- # Proclamation of the Republic
87
- ProclamacaoRepublica = Holiday(
88
- "Proclamacao da Republica",
89
- month=11,
90
- day=15,
91
- )
92
- # Day of Black Awareness
93
- ConscienciaNegra = Holiday(
94
- "Dia da Consciencia Negra",
95
- month=11,
96
- day=20,
97
- start_date="2004-01-01",
98
- end_date="2019-12-31",
99
- )
100
- # Christmas Eve
101
- VesperaNatal = Holiday(
102
- "Vespera Natal",
103
- month=12,
104
- day=24,
105
- )
106
- # Christmas
107
- Natal = Holiday(
108
- "Natal",
109
- month=12,
110
- day=25,
111
- )
112
- # New Year's Eve
113
- AnoNovo = Holiday(
114
- "Ano Novo",
115
- month=12,
116
- day=31,
117
- )
118
- # New Year's Eve falls on Saturday
119
- AnoNovoSabado = Holiday(
120
- "Ano Novo Sabado",
121
- month=12,
122
- day=30,
123
- days_of_week=(FRIDAY,),
124
- )
125
-
126
- ##########################
127
- # Non-recurring holidays
128
- ##########################
129
-
130
- Constitucionalista2021 = Timestamp("2021-07-09", tz="UTC")
131
- ConscienciaNegra2021 = Timestamp("2021-11-20", tz="UTC")
132
-
133
-
134
- class BMFExchangeCalendar(MarketCalendar):
135
- """
136
- Exchange calendar for BM&F BOVESPA
137
-
138
- Open Time: 10:00 AM, Brazil/Sao Paulo
139
- Close Time: 4:00 PM, Brazil/Sao Paulo
140
-
141
- Regularly-Observed Holidays:
142
- - Universal Confraternization (New year's day, Jan 1)
143
- - Sao Paulo City Anniversary (Jan 25 until 2021)
144
- - Carnaval Monday (48 days before Easter)
145
- - Carnaval Tuesday (47 days before Easter)
146
- - Passion of the Christ (Good Friday, 2 days before Easter)
147
- - Corpus Christi (60 days after Easter)
148
- - Tiradentes (April 21)
149
- - Labor day (May 1)
150
- - Constitutionalist Revolution (July 9 after 1997 until 2021, skipping 2020)
151
- - Independence Day (September 7)
152
- - Our Lady of Aparecida Feast (October 12)
153
- - All Souls' Day (November 2)
154
- - Proclamation of the Republic (November 15)
155
- - Day of Black Awareness (November 20 after 2004 until 2021, skipping 2020)
156
- - Christmas (December 24 and 25)
157
- - Day before New Year's Eve (December 30 if NYE falls on a Saturday)
158
- - New Year's Eve (December 31)
159
- """
160
-
161
- aliases = ["BMF", "B3"]
162
- regular_market_times = {
163
- "market_open": ((None, time(10, 1)),),
164
- "market_close": ((None, time(16)),),
165
- }
166
-
167
- @property
168
- def name(self):
169
- return "BMF"
170
-
171
- @property
172
- def tz(self):
173
- return timezone("America/Sao_Paulo")
174
-
175
- @property
176
- def regular_holidays(self):
177
- return AbstractHolidayCalendar(
178
- rules=[
179
- ConfUniversal,
180
- AniversarioSaoPaulo,
181
- CarnavalSegunda,
182
- CarnavalTerca,
183
- SextaPaixao,
184
- CorpusChristi,
185
- Tiradentes,
186
- DiaTrabalho,
187
- Constitucionalista,
188
- Independencia,
189
- Aparecida,
190
- Finados,
191
- ProclamacaoRepublica,
192
- ConscienciaNegra,
193
- VesperaNatal,
194
- Natal,
195
- AnoNovo,
196
- AnoNovoSabado,
197
- ]
198
- )
199
-
200
- @property
201
- def adhoc_holidays(self):
202
- return [Constitucionalista2021, ConscienciaNegra2021]
203
-
204
- @property
205
- def special_opens(self):
206
- return [(time(13, 1), AbstractHolidayCalendar(rules=[QuartaCinzas]))]
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 import Timestamp
19
+ from pandas.tseries.holiday import (
20
+ AbstractHolidayCalendar,
21
+ Day,
22
+ Easter,
23
+ GoodFriday,
24
+ Holiday,
25
+ )
26
+ from pytz import timezone
27
+
28
+ from pandas_market_calendars.market_calendar import FRIDAY, MarketCalendar
29
+
30
+ # Universal Confraternization (new years day)
31
+ ConfUniversal = Holiday(
32
+ "Dia da Confraternizacao Universal",
33
+ month=1,
34
+ day=1,
35
+ )
36
+ # Sao Paulo city birthday
37
+ AniversarioSaoPaulo = Holiday(
38
+ "Aniversario de Sao Paulo", month=1, day=25, end_date="2021-12-31"
39
+ )
40
+ # Carnival Monday
41
+ CarnavalSegunda = Holiday(
42
+ "Carnaval Segunda", month=1, day=1, offset=[Easter(), Day(-48)]
43
+ )
44
+ # Carnival Tuesday
45
+ CarnavalTerca = Holiday("Carnaval Terca", month=1, day=1, offset=[Easter(), Day(-47)])
46
+ # Ash Wednesday (short day)
47
+ QuartaCinzas = Holiday("Quarta Cinzas", month=1, day=1, offset=[Easter(), Day(-46)])
48
+ # Good Friday
49
+ SextaPaixao = GoodFriday
50
+ # Feast of the Most Holy Body of Christ
51
+ CorpusChristi = Holiday("Corpus Christi", month=1, day=1, offset=[Easter(), Day(60)])
52
+ # Tiradentes Memorial
53
+ Tiradentes = Holiday(
54
+ "Tiradentes",
55
+ month=4,
56
+ day=21,
57
+ )
58
+ # Labor Day
59
+ DiaTrabalho = Holiday(
60
+ "Dia Trabalho",
61
+ month=5,
62
+ day=1,
63
+ )
64
+ # Constitutionalist Revolution
65
+ Constitucionalista = Holiday(
66
+ "Constitucionalista", month=7, day=9, start_date="1997-01-01", end_date="2019-12-31"
67
+ )
68
+ # Independence Day
69
+ Independencia = Holiday(
70
+ "Independencia",
71
+ month=9,
72
+ day=7,
73
+ )
74
+ # Our Lady of Aparecida
75
+ Aparecida = Holiday(
76
+ "Nossa Senhora de Aparecida",
77
+ month=10,
78
+ day=12,
79
+ )
80
+ # All Souls' Day
81
+ Finados = Holiday(
82
+ "Dia dos Finados",
83
+ month=11,
84
+ day=2,
85
+ )
86
+ # Proclamation of the Republic
87
+ ProclamacaoRepublica = Holiday(
88
+ "Proclamacao da Republica",
89
+ month=11,
90
+ day=15,
91
+ )
92
+ # Day of Black Awareness (municipal holiday for the city of São Paulo)
93
+ ConscienciaNegra = Holiday(
94
+ "Dia da Consciencia Negra",
95
+ month=11,
96
+ day=20,
97
+ start_date="2004-01-01",
98
+ end_date="2019-12-31",
99
+ )
100
+ # Day of Black Awareness (national holiday)
101
+ ConscienciaNegraNacional = Holiday(
102
+ "Dia da Consciencia Negra",
103
+ month=11,
104
+ day=20,
105
+ start_date="2023-12-22",
106
+ )
107
+ # Christmas Eve
108
+ VesperaNatal = Holiday(
109
+ "Vespera Natal",
110
+ month=12,
111
+ day=24,
112
+ )
113
+ # Christmas
114
+ Natal = Holiday(
115
+ "Natal",
116
+ month=12,
117
+ day=25,
118
+ )
119
+ # New Year's Eve
120
+ AnoNovo = Holiday(
121
+ "Ano Novo",
122
+ month=12,
123
+ day=31,
124
+ )
125
+ # New Year's Eve falls on Saturday
126
+ AnoNovoSabado = Holiday(
127
+ "Ano Novo Sabado",
128
+ month=12,
129
+ day=30,
130
+ days_of_week=(FRIDAY,),
131
+ )
132
+ # New Year's Eve falls on Sunday
133
+ AnoNovoDomingo = Holiday(
134
+ "Ano Novo Domingo",
135
+ month=12,
136
+ day=29,
137
+ days_of_week=(FRIDAY,),
138
+ )
139
+
140
+ ##########################
141
+ # Non-recurring holidays
142
+ ##########################
143
+
144
+ Constitucionalista2021 = Timestamp("2021-07-09", tz="UTC")
145
+ ConscienciaNegra2021 = Timestamp("2021-11-20", tz="UTC")
146
+
147
+
148
+ class BMFExchangeCalendar(MarketCalendar):
149
+ """
150
+ Exchange calendar for BM&F BOVESPA
151
+
152
+ Open Time: 10:00 AM, Brazil/Sao Paulo
153
+ Close Time: 4:00 PM, Brazil/Sao Paulo
154
+
155
+ Regularly-Observed Holidays:
156
+ - Universal Confraternization (New year's day, Jan 1)
157
+ - Sao Paulo City Anniversary (Jan 25 until 2021)
158
+ - Carnaval Monday (48 days before Easter)
159
+ - Carnaval Tuesday (47 days before Easter)
160
+ - Passion of the Christ (Good Friday, 2 days before Easter)
161
+ - Corpus Christi (60 days after Easter)
162
+ - Tiradentes (April 21)
163
+ - Labor day (May 1)
164
+ - Constitutionalist Revolution (July 9 from 1997 until 2021, skipping 2020)
165
+ - Independence Day (September 7)
166
+ - Our Lady of Aparecida Feast (October 12)
167
+ - All Souls' Day (November 2)
168
+ - Proclamation of the Republic (November 15)
169
+ - Day of Black Awareness, municipal holiday for the city of São Paulo (November 20 from 2004 until 2021, skipping 2020)
170
+ - Day of Black Awareness, national holiday (November 20 starting in 2024)
171
+ - Christmas (December 24 and 25)
172
+ - Friday before New Year's Eve (December 30 or 29 if NYE falls on a Saturday or Sunday, respectively)
173
+ - New Year's Eve (December 31)
174
+ """
175
+
176
+ aliases = ["BMF", "B3"]
177
+ regular_market_times = {
178
+ "market_open": ((None, time(10, 1)),),
179
+ "market_close": ((None, time(16)),),
180
+ }
181
+
182
+ @property
183
+ def name(self):
184
+ return "BMF"
185
+
186
+ @property
187
+ def tz(self):
188
+ return timezone("America/Sao_Paulo")
189
+
190
+ @property
191
+ def regular_holidays(self):
192
+ return AbstractHolidayCalendar(
193
+ rules=[
194
+ ConfUniversal,
195
+ AniversarioSaoPaulo,
196
+ CarnavalSegunda,
197
+ CarnavalTerca,
198
+ SextaPaixao,
199
+ CorpusChristi,
200
+ Tiradentes,
201
+ DiaTrabalho,
202
+ Constitucionalista,
203
+ Independencia,
204
+ Aparecida,
205
+ Finados,
206
+ ProclamacaoRepublica,
207
+ ConscienciaNegra,
208
+ ConscienciaNegraNacional,
209
+ VesperaNatal,
210
+ Natal,
211
+ AnoNovo,
212
+ AnoNovoSabado,
213
+ AnoNovoDomingo,
214
+ ]
215
+ )
216
+
217
+ @property
218
+ def adhoc_holidays(self):
219
+ return [Constitucionalista2021, ConscienciaNegra2021]
220
+
221
+ @property
222
+ def special_opens(self):
223
+ return [(time(13, 1), AbstractHolidayCalendar(rules=[QuartaCinzas]))]