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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,409 @@
1
+ """
2
+ Bombay Stock Exchnage
3
+ """
4
+
5
+ from pandas import Timestamp
6
+ from pytz import timezone
7
+ from datetime import time
8
+ from pandas_market_calendars.market_calendar import MarketCalendar
9
+
10
+
11
+ BSEClosedDay = [
12
+ Timestamp('1997-01-23', tz='UTC'),
13
+ Timestamp('1997-03-07', tz='UTC'),
14
+ Timestamp('1997-03-24', tz='UTC'),
15
+ Timestamp('1997-04-08', tz='UTC'),
16
+ Timestamp('1997-04-14', tz='UTC'),
17
+ Timestamp('1997-04-16', tz='UTC'),
18
+ Timestamp('1997-04-18', tz='UTC'),
19
+ Timestamp('1997-05-01', tz='UTC'),
20
+ Timestamp('1997-05-08', tz='UTC'),
21
+ Timestamp('1997-08-15', tz='UTC'),
22
+ Timestamp('1997-08-18', tz='UTC'),
23
+ Timestamp('1997-08-25', tz='UTC'),
24
+ Timestamp('1997-10-02', tz='UTC'),
25
+ Timestamp('1997-10-28', tz='UTC'),
26
+ Timestamp('1997-10-29', tz='UTC'),
27
+ Timestamp('1997-10-31', tz='UTC'),
28
+ Timestamp('1997-12-25', tz='UTC'),
29
+ Timestamp('1998-04-09', tz='UTC'),
30
+ Timestamp('1998-04-14', tz='UTC'),
31
+ Timestamp('1998-04-28', tz='UTC'),
32
+ Timestamp('1998-12-25', tz='UTC'),
33
+ Timestamp('1999-01-01', tz='UTC'),
34
+ Timestamp('1999-01-20', tz='UTC'),
35
+ Timestamp('1999-01-26', tz='UTC'),
36
+ Timestamp('1999-03-02', tz='UTC'),
37
+ Timestamp('1999-03-18', tz='UTC'),
38
+ Timestamp('1999-03-25', tz='UTC'),
39
+ Timestamp('1999-03-29', tz='UTC'),
40
+ Timestamp('1999-04-02', tz='UTC'),
41
+ Timestamp('1999-04-14', tz='UTC'),
42
+ Timestamp('1999-04-27', tz='UTC'),
43
+ Timestamp('1999-04-30', tz='UTC'),
44
+ Timestamp('1999-09-13', tz='UTC'),
45
+ Timestamp('1999-10-19', tz='UTC'),
46
+ Timestamp('1999-11-08', tz='UTC'),
47
+ Timestamp('1999-11-10', tz='UTC'),
48
+ Timestamp('1999-11-23', tz='UTC'),
49
+ Timestamp('1999-12-31', tz='UTC'),
50
+ Timestamp('2000-01-26', tz='UTC'),
51
+ Timestamp('2000-03-17', tz='UTC'),
52
+ Timestamp('2000-03-20', tz='UTC'),
53
+ Timestamp('2000-04-14', tz='UTC'),
54
+ Timestamp('2000-04-21', tz='UTC'),
55
+ Timestamp('2000-05-01', tz='UTC'),
56
+ Timestamp('2000-08-15', tz='UTC'),
57
+ Timestamp('2000-09-01', tz='UTC'),
58
+ Timestamp('2000-10-02', tz='UTC'),
59
+ Timestamp('2000-12-25', tz='UTC'),
60
+ Timestamp('2001-01-01', tz='UTC'),
61
+ Timestamp('2001-01-26', tz='UTC'),
62
+ Timestamp('2001-03-06', tz='UTC'),
63
+ Timestamp('2001-04-05', tz='UTC'),
64
+ Timestamp('2001-04-13', tz='UTC'),
65
+ Timestamp('2001-05-01', tz='UTC'),
66
+ Timestamp('2001-08-15', tz='UTC'),
67
+ Timestamp('2001-08-22', tz='UTC'),
68
+ Timestamp('2001-10-02', tz='UTC'),
69
+ Timestamp('2001-10-26', tz='UTC'),
70
+ Timestamp('2001-11-16', tz='UTC'),
71
+ Timestamp('2001-11-30', tz='UTC'),
72
+ Timestamp('2001-12-17', tz='UTC'),
73
+ Timestamp('2001-12-25', tz='UTC'),
74
+ Timestamp('2002-03-25', tz='UTC'),
75
+ Timestamp('2002-03-29', tz='UTC'),
76
+ Timestamp('2002-05-01', tz='UTC'),
77
+ Timestamp('2002-08-15', tz='UTC'),
78
+ Timestamp('2002-09-10', tz='UTC'),
79
+ Timestamp('2002-10-02', tz='UTC'),
80
+ Timestamp('2002-10-15', tz='UTC'),
81
+ Timestamp('2002-11-06', tz='UTC'),
82
+ Timestamp('2002-11-19', tz='UTC'),
83
+ Timestamp('2002-12-25', tz='UTC'),
84
+ Timestamp('2003-02-13', tz='UTC'),
85
+ Timestamp('2003-03-14', tz='UTC'),
86
+ Timestamp('2003-03-18', tz='UTC'),
87
+ Timestamp('2003-04-14', tz='UTC'),
88
+ Timestamp('2003-04-18', tz='UTC'),
89
+ Timestamp('2003-05-01', tz='UTC'),
90
+ Timestamp('2003-08-15', tz='UTC'),
91
+ Timestamp('2003-10-02', tz='UTC'),
92
+ Timestamp('2003-11-26', tz='UTC'),
93
+ Timestamp('2003-12-25', tz='UTC'),
94
+ Timestamp('2004-01-01', tz='UTC'),
95
+ Timestamp('2004-01-26', tz='UTC'),
96
+ Timestamp('2004-02-02', tz='UTC'),
97
+ Timestamp('2004-03-02', tz='UTC'),
98
+ Timestamp('2004-04-09', tz='UTC'),
99
+ Timestamp('2004-04-14', tz='UTC'),
100
+ Timestamp('2004-04-26', tz='UTC'),
101
+ Timestamp('2004-10-13', tz='UTC'),
102
+ Timestamp('2004-10-22', tz='UTC'),
103
+ Timestamp('2004-11-15', tz='UTC'),
104
+ Timestamp('2004-11-26', tz='UTC'),
105
+ Timestamp('2005-01-21', tz='UTC'),
106
+ Timestamp('2005-01-26', tz='UTC'),
107
+ Timestamp('2005-03-25', tz='UTC'),
108
+ Timestamp('2005-04-14', tz='UTC'),
109
+ Timestamp('2005-07-28', tz='UTC'),
110
+ Timestamp('2005-08-15', tz='UTC'),
111
+ Timestamp('2005-09-07', tz='UTC'),
112
+ Timestamp('2005-10-12', tz='UTC'),
113
+ Timestamp('2005-11-03', tz='UTC'),
114
+ Timestamp('2005-11-04', tz='UTC'),
115
+ Timestamp('2005-11-15', tz='UTC'),
116
+ Timestamp('2006-01-11', tz='UTC'),
117
+ Timestamp('2006-01-26', tz='UTC'),
118
+ Timestamp('2006-02-09', tz='UTC'),
119
+ Timestamp('2006-03-15', tz='UTC'),
120
+ Timestamp('2006-04-06', tz='UTC'),
121
+ Timestamp('2006-04-11', tz='UTC'),
122
+ Timestamp('2006-04-14', tz='UTC'),
123
+ Timestamp('2006-05-01', tz='UTC'),
124
+ Timestamp('2006-08-15', tz='UTC'),
125
+ Timestamp('2006-10-02', tz='UTC'),
126
+ Timestamp('2006-10-24', tz='UTC'),
127
+ Timestamp('2006-10-25', tz='UTC'),
128
+ Timestamp('2006-12-25', tz='UTC'),
129
+ Timestamp('2007-01-01', tz='UTC'),
130
+ Timestamp('2007-01-26', tz='UTC'),
131
+ Timestamp('2007-01-30', tz='UTC'),
132
+ Timestamp('2007-02-16', tz='UTC'),
133
+ Timestamp('2007-03-27', tz='UTC'),
134
+ Timestamp('2007-04-06', tz='UTC'),
135
+ Timestamp('2007-05-01', tz='UTC'),
136
+ Timestamp('2007-05-02', tz='UTC'),
137
+ Timestamp('2007-08-15', tz='UTC'),
138
+ Timestamp('2007-10-02', tz='UTC'),
139
+ Timestamp('2007-12-21', tz='UTC'),
140
+ Timestamp('2007-12-25', tz='UTC'),
141
+ Timestamp('2008-03-06', tz='UTC'),
142
+ Timestamp('2008-03-20', tz='UTC'),
143
+ Timestamp('2008-03-21', tz='UTC'),
144
+ Timestamp('2008-04-14', tz='UTC'),
145
+ Timestamp('2008-04-18', tz='UTC'),
146
+ Timestamp('2008-05-01', tz='UTC'),
147
+ Timestamp('2008-05-19', tz='UTC'),
148
+ Timestamp('2008-08-15', tz='UTC'),
149
+ Timestamp('2008-09-03', tz='UTC'),
150
+ Timestamp('2008-10-02', tz='UTC'),
151
+ Timestamp('2008-10-09', tz='UTC'),
152
+ Timestamp('2008-10-30', tz='UTC'),
153
+ Timestamp('2008-11-13', tz='UTC'),
154
+ Timestamp('2008-11-27', tz='UTC'),
155
+ Timestamp('2008-12-09', tz='UTC'),
156
+ Timestamp('2008-12-25', tz='UTC'),
157
+ Timestamp('2009-01-08', tz='UTC'),
158
+ Timestamp('2009-01-26', tz='UTC'),
159
+ Timestamp('2009-02-23', tz='UTC'),
160
+ Timestamp('2009-03-10', tz='UTC'),
161
+ Timestamp('2009-03-11', tz='UTC'),
162
+ Timestamp('2009-04-03', tz='UTC'),
163
+ Timestamp('2009-04-07', tz='UTC'),
164
+ Timestamp('2009-04-10', tz='UTC'),
165
+ Timestamp('2009-04-14', tz='UTC'),
166
+ Timestamp('2009-04-30', tz='UTC'),
167
+ Timestamp('2009-05-01', tz='UTC'),
168
+ Timestamp('2009-09-21', tz='UTC'),
169
+ Timestamp('2009-09-28', tz='UTC'),
170
+ Timestamp('2009-10-02', tz='UTC'),
171
+ Timestamp('2009-10-13', tz='UTC'),
172
+ Timestamp('2009-10-19', tz='UTC'),
173
+ Timestamp('2009-11-02', tz='UTC'),
174
+ Timestamp('2009-12-25', tz='UTC'),
175
+ Timestamp('2009-12-28', tz='UTC'),
176
+ Timestamp('2010-01-01', tz='UTC'),
177
+ Timestamp('2010-01-26', tz='UTC'),
178
+ Timestamp('2010-02-12', tz='UTC'),
179
+ Timestamp('2010-03-01', tz='UTC'),
180
+ Timestamp('2010-03-24', tz='UTC'),
181
+ Timestamp('2010-04-02', tz='UTC'),
182
+ Timestamp('2010-04-14', tz='UTC'),
183
+ Timestamp('2010-09-10', tz='UTC'),
184
+ Timestamp('2010-11-17', tz='UTC'),
185
+ Timestamp('2010-12-17', tz='UTC'),
186
+ Timestamp('2011-01-26', tz='UTC'),
187
+ Timestamp('2011-03-02', tz='UTC'),
188
+ Timestamp('2011-04-12', tz='UTC'),
189
+ Timestamp('2011-04-14', tz='UTC'),
190
+ Timestamp('2011-04-22', tz='UTC'),
191
+ Timestamp('2011-08-15', tz='UTC'),
192
+ Timestamp('2011-08-31', tz='UTC'),
193
+ Timestamp('2011-09-01', tz='UTC'),
194
+ Timestamp('2011-10-06', tz='UTC'),
195
+ Timestamp('2011-10-27', tz='UTC'),
196
+ Timestamp('2011-11-07', tz='UTC'),
197
+ Timestamp('2011-11-10', tz='UTC'),
198
+ Timestamp('2011-12-06', tz='UTC'),
199
+ Timestamp('2012-01-26', tz='UTC'),
200
+ Timestamp('2012-02-20', tz='UTC'),
201
+ Timestamp('2012-03-08', tz='UTC'),
202
+ Timestamp('2012-04-05', tz='UTC'),
203
+ Timestamp('2012-04-06', tz='UTC'),
204
+ Timestamp('2012-05-01', tz='UTC'),
205
+ Timestamp('2012-08-15', tz='UTC'),
206
+ Timestamp('2012-08-20', tz='UTC'),
207
+ Timestamp('2012-09-19', tz='UTC'),
208
+ Timestamp('2012-10-02', tz='UTC'),
209
+ Timestamp('2012-10-24', tz='UTC'),
210
+ Timestamp('2012-11-14', tz='UTC'),
211
+ Timestamp('2012-11-28', tz='UTC'),
212
+ Timestamp('2012-12-25', tz='UTC'),
213
+ Timestamp('2013-03-27', tz='UTC'),
214
+ Timestamp('2013-03-29', tz='UTC'),
215
+ Timestamp('2013-04-19', tz='UTC'),
216
+ Timestamp('2013-04-24', tz='UTC'),
217
+ Timestamp('2013-05-01', tz='UTC'),
218
+ Timestamp('2013-08-09', tz='UTC'),
219
+ Timestamp('2013-08-15', tz='UTC'),
220
+ Timestamp('2013-09-09', tz='UTC'),
221
+ Timestamp('2013-10-02', tz='UTC'),
222
+ Timestamp('2013-10-16', tz='UTC'),
223
+ Timestamp('2013-11-04', tz='UTC'),
224
+ Timestamp('2013-11-15', tz='UTC'),
225
+ Timestamp('2013-12-25', tz='UTC'),
226
+ Timestamp('2014-02-27', tz='UTC'),
227
+ Timestamp('2014-03-17', tz='UTC'),
228
+ Timestamp('2014-04-08', tz='UTC'),
229
+ Timestamp('2014-04-14', tz='UTC'),
230
+ Timestamp('2014-04-18', tz='UTC'),
231
+ Timestamp('2014-04-24', tz='UTC'),
232
+ Timestamp('2014-05-01', tz='UTC'),
233
+ Timestamp('2014-07-29', tz='UTC'),
234
+ Timestamp('2014-08-15', tz='UTC'),
235
+ Timestamp('2014-08-29', tz='UTC'),
236
+ Timestamp('2014-10-02', tz='UTC'),
237
+ Timestamp('2014-10-03', tz='UTC'),
238
+ Timestamp('2014-10-06', tz='UTC'),
239
+ Timestamp('2014-10-15', tz='UTC'),
240
+ Timestamp('2014-10-24', tz='UTC'),
241
+ Timestamp('2014-11-04', tz='UTC'),
242
+ Timestamp('2014-11-06', tz='UTC'),
243
+ Timestamp('2014-12-25', tz='UTC'),
244
+ Timestamp('2015-01-26', tz='UTC'),
245
+ Timestamp('2015-02-17', tz='UTC'),
246
+ Timestamp('2015-03-06', tz='UTC'),
247
+ Timestamp('2015-04-02', tz='UTC'),
248
+ Timestamp('2015-04-03', tz='UTC'),
249
+ Timestamp('2015-04-14', tz='UTC'),
250
+ Timestamp('2015-05-01', tz='UTC'),
251
+ Timestamp('2015-09-17', tz='UTC'),
252
+ Timestamp('2015-09-25', tz='UTC'),
253
+ Timestamp('2015-10-02', tz='UTC'),
254
+ Timestamp('2015-10-22', tz='UTC'),
255
+ Timestamp('2015-11-12', tz='UTC'),
256
+ Timestamp('2015-11-25', tz='UTC'),
257
+ Timestamp('2015-12-25', tz='UTC'),
258
+ Timestamp('2016-01-26', tz='UTC'),
259
+ Timestamp('2016-03-07', tz='UTC'),
260
+ Timestamp('2016-03-24', tz='UTC'),
261
+ Timestamp('2016-03-25', tz='UTC'),
262
+ Timestamp('2016-04-14', tz='UTC'),
263
+ Timestamp('2016-04-15', tz='UTC'),
264
+ Timestamp('2016-04-19', tz='UTC'),
265
+ Timestamp('2016-07-06', tz='UTC'),
266
+ Timestamp('2016-08-15', tz='UTC'),
267
+ Timestamp('2016-09-05', tz='UTC'),
268
+ Timestamp('2016-09-13', tz='UTC'),
269
+ Timestamp('2016-10-11', tz='UTC'),
270
+ Timestamp('2016-10-12', tz='UTC'),
271
+ Timestamp('2016-10-31', tz='UTC'),
272
+ Timestamp('2016-11-14', tz='UTC'),
273
+ Timestamp('2017-01-26', tz='UTC'),
274
+ Timestamp('2017-02-24', tz='UTC'),
275
+ Timestamp('2017-03-13', tz='UTC'),
276
+ Timestamp('2017-04-04', tz='UTC'),
277
+ Timestamp('2017-04-14', tz='UTC'),
278
+ Timestamp('2017-05-01', tz='UTC'),
279
+ Timestamp('2017-06-26', tz='UTC'),
280
+ Timestamp('2017-08-15', tz='UTC'),
281
+ Timestamp('2017-08-25', tz='UTC'),
282
+ Timestamp('2017-10-02', tz='UTC'),
283
+ Timestamp('2017-10-20', tz='UTC'),
284
+ Timestamp('2017-12-25', tz='UTC'),
285
+ Timestamp('2018-01-26', tz='UTC'),
286
+ Timestamp('2018-02-13', tz='UTC'),
287
+ Timestamp('2018-03-02', tz='UTC'),
288
+ Timestamp('2018-03-29', tz='UTC'),
289
+ Timestamp('2018-03-30', tz='UTC'),
290
+ Timestamp('2018-05-01', tz='UTC'),
291
+ Timestamp('2018-08-15', tz='UTC'),
292
+ Timestamp('2018-08-22', tz='UTC'),
293
+ Timestamp('2018-09-13', tz='UTC'),
294
+ Timestamp('2018-09-20', tz='UTC'),
295
+ Timestamp('2018-10-02', tz='UTC'),
296
+ Timestamp('2018-10-18', tz='UTC'),
297
+ Timestamp('2018-11-08', tz='UTC'),
298
+ Timestamp('2018-11-23', tz='UTC'),
299
+ Timestamp('2018-12-25', tz='UTC'),
300
+ Timestamp('2019-01-26', tz='UTC'),
301
+ Timestamp('2019-03-02', tz='UTC'),
302
+ Timestamp('2019-03-04', tz='UTC'),
303
+ Timestamp('2019-03-21', tz='UTC'),
304
+ Timestamp('2019-04-17', tz='UTC'),
305
+ Timestamp('2019-04-19', tz='UTC'),
306
+ Timestamp('2019-04-29', tz='UTC'),
307
+ Timestamp('2019-05-01', tz='UTC'),
308
+ Timestamp('2019-06-05', tz='UTC'),
309
+ Timestamp('2019-08-12', tz='UTC'),
310
+ Timestamp('2019-08-15', tz='UTC'),
311
+ Timestamp('2019-09-02', tz='UTC'),
312
+ Timestamp('2019-09-10', tz='UTC'),
313
+ Timestamp('2019-10-02', tz='UTC'),
314
+ Timestamp('2019-10-08', tz='UTC'),
315
+ Timestamp('2019-10-21', tz='UTC'),
316
+ Timestamp('2019-10-28', tz='UTC'),
317
+ Timestamp('2019-11-12', tz='UTC'),
318
+ Timestamp('2019-12-25', tz='UTC'),
319
+ Timestamp('2020-02-21', tz='UTC'),
320
+ Timestamp('2020-03-10', tz='UTC'),
321
+ Timestamp('2020-04-02', tz='UTC'),
322
+ Timestamp('2020-04-06', tz='UTC'),
323
+ Timestamp('2020-04-10', tz='UTC'),
324
+ Timestamp('2020-04-14', tz='UTC'),
325
+ Timestamp('2020-05-01', tz='UTC'),
326
+ Timestamp('2020-07-31', tz='UTC'),
327
+ Timestamp('2020-10-02', tz='UTC'),
328
+ Timestamp('2020-11-16', tz='UTC'),
329
+ Timestamp('2020-11-30', tz='UTC'),
330
+ Timestamp('2020-12-25', tz='UTC'),
331
+ Timestamp('2021-01-26', tz='UTC'), # Republic Day
332
+ Timestamp('2021-03-11', tz='UTC'), # Maha Shivaratri
333
+ Timestamp('2021-03-29', tz='UTC'), # Holi
334
+ Timestamp('2021-04-02', tz='UTC'), # Good Friday
335
+ Timestamp('2021-04-14', tz='UTC'), # Dr.Baba Saheb Ambedkar Jayanti
336
+ Timestamp('2021-04-21', tz='UTC'), # Ram Navami
337
+ Timestamp('2021-05-13', tz='UTC'), # Id-ul-Fitr
338
+ Timestamp('2021-07-21', tz='UTC'), # Id-al-Adha
339
+ Timestamp('2021-08-19', tz='UTC'), # Ashura
340
+ Timestamp('2021-09-10', tz='UTC'), # Ganesh Chaturthi
341
+ Timestamp('2021-10-15', tz='UTC'), # Vijaya Dashami
342
+ Timestamp('2021-11-04', tz='UTC'), # Diwali/Laxmi Puja. muhurat trading day
343
+ Timestamp('2021-11-05', tz='UTC'), # Diwali/Laxmi Puja
344
+ Timestamp('2021-11-19', tz='UTC'), # Guru Nanak Jayanti
345
+ Timestamp('2022-01-26', tz='UTC'), # Republic Day
346
+ Timestamp('2022-03-01', tz='UTC'), # Maha Shivaratri
347
+ Timestamp('2022-03-18', tz='UTC'), # Holi
348
+ Timestamp('2022-04-14', tz='UTC'), # Dr.Baba Saheb Ambedkar Jayanti
349
+ Timestamp('2022-04-15', tz='UTC'), # Good Friday
350
+ Timestamp('2022-05-03', tz='UTC'), # Id-ul-Fitr
351
+ Timestamp('2022-08-09', tz='UTC'), # Moharram
352
+ Timestamp('2022-08-15', tz='UTC'), # Independence Day
353
+ Timestamp('2022-08-31', tz='UTC'), # Ganesh Chaturthi
354
+ Timestamp('2022-10-05', tz='UTC'), # Vijaya Dashami
355
+ Timestamp('2022-10-24', tz='UTC'), # Diwali/Laxmi Puja. muhurat trading day
356
+ Timestamp('2022-10-26', tz='UTC'), # Diwali-Balipratipada
357
+ Timestamp('2022-11-08', tz='UTC'), # Guru Nanak Jayanti
358
+ Timestamp('2023-01-26', tz='UTC'), # Thu, Republic Day
359
+ Timestamp('2023-03-07', tz='UTC'), # Wed, Holi
360
+ Timestamp('2023-03-18', tz='UTC'), # Sat, Maha Shivaratri
361
+ Timestamp('2023-03-30', tz='UTC'), # Thu, Ramanavami
362
+ Timestamp('2023-04-04', tz='UTC'), # Tue, Mahavir Jayanthi
363
+ Timestamp('2023-04-07', tz='UTC'), # Fri, Good Friday
364
+ Timestamp('2023-04-14', tz='UTC'), # Fri, Ambedkar Jayanti
365
+ Timestamp('2023-04-22', tz='UTC'), # Sat, EID AL FITR
366
+ Timestamp('2023-05-01', tz='UTC'), # Mon, Maharashtra Din
367
+ Timestamp('2023-06-28', tz='UTC'), # Wed, Bakri Id / Eid ul-Adha
368
+ Timestamp('2023-08-15', tz='UTC'), # Tue, Independence Day
369
+ Timestamp('2023-08-29', tz='UTC'), # Tue, Muharram
370
+ Timestamp('2023-09-19', tz='UTC'), # Tue, Ganesh Chaturthi
371
+ Timestamp('2023-10-02', tz='UTC'), # Mon, Gandhi Jayanti
372
+ Timestamp('2023-10-24', tz='UTC'), # Tue, Dussehra
373
+ Timestamp('2023-11-12', tz='UTC'), # Sun, Diwali
374
+ Timestamp('2023-11-14', tz='UTC'), # Tue, Diwali
375
+ Timestamp('2023-11-27', tz='UTC'), # Mon, Guru Nanak's Birthday
376
+ Timestamp('2023-12-25', tz='UTC'), # Mon, Christmas
377
+
378
+
379
+
380
+ ]
381
+
382
+
383
+ class BSEExchangeCalendar(MarketCalendar):
384
+ """
385
+ Exchange calendar for the Bombay Stock Exchange (BSE, XBOM).
386
+ Open Time: 9:15 AM, Asia/Calcutta
387
+ Close Time: 3:30 PM, Asia/Calcutta
388
+
389
+ Due to the complexity around the BSE holidays, we are hardcoding a list
390
+ of holidays back to 1997, and forward through 2020. There are no known
391
+ early closes or late opens.
392
+ """
393
+ aliases = ['BSE', 'NSE']
394
+ regular_market_times = {
395
+ "market_open": ((None, time(9, 15)),),
396
+ "market_close": ((None, time(15, 30)),)
397
+ }
398
+
399
+ @property
400
+ def name(self):
401
+ return "BSE"
402
+
403
+ @property
404
+ def tz(self):
405
+ return timezone('Asia/Calcutta')
406
+
407
+ @property
408
+ def adhoc_holidays(self):
409
+ return BSEClosedDay
@@ -0,0 +1,115 @@
1
+ from datetime import time
2
+
3
+ from pandas.tseries.holiday import AbstractHolidayCalendar, \
4
+ GoodFriday, USLaborDay, USPresidentsDay, USThanksgivingDay, Holiday
5
+ from pytz import timezone
6
+ from itertools import chain
7
+ import pandas as pd
8
+
9
+ from pandas_market_calendars.holidays.us import (Christmas, USBlackFridayInOrAfter1993, USIndependenceDay, USMartinLutherKingJrAfter1998,
10
+ USMemorialDay, USNewYearsDay, HurricaneSandyClosings, USNationalDaysofMourning,
11
+ USJuneteenthAfter2022)
12
+ from pandas_market_calendars.market_calendar import MarketCalendar
13
+
14
+
15
+ def good_friday_unless_christmas_nye_friday(dt):
16
+ """
17
+ Good Friday is a valid trading day if Christmas Day or New Years Day fall
18
+ on a Friday.
19
+ """
20
+ if isinstance(dt, pd.DatetimeIndex):
21
+ # Pandas < 2.1.0 will call with an index and fall-back to element by element
22
+ # Pandas == 2.1.0 will only call element by element
23
+ raise NotImplementedError()
24
+
25
+ year = dt.year
26
+ christmas_weekday = Christmas.observance(pd.Timestamp(year=year, month=12, day=25)).weekday()
27
+ nyd_weekday = USNewYearsDay.observance(pd.Timestamp(year=year, month=1, day=1)).weekday()
28
+ if christmas_weekday != 4 and nyd_weekday != 4:
29
+ return GoodFriday.dates(pd.Timestamp(year=year, month=1, day=1), pd.Timestamp(year=year, month=12, day=31))[0]
30
+ else:
31
+ # Not a holiday so use NaT to ensure it gets removed
32
+ return pd.NaT
33
+
34
+
35
+ GoodFridayUnlessChristmasNYEFriday = Holiday(
36
+ name="Good Friday CFE",
37
+ month=1,
38
+ day=1,
39
+ observance=good_friday_unless_christmas_nye_friday,
40
+ )
41
+
42
+
43
+ class CFEExchangeCalendar(MarketCalendar):
44
+ """
45
+ Exchange calendar for the CBOE Futures Exchange (CFE).
46
+
47
+ http://cfe.cboe.com/aboutcfe/expirationcalendar.aspx
48
+
49
+ Open Time: 8:30am, America/Chicago
50
+ Close Time: 3:15pm, America/Chicago
51
+
52
+ (We are ignoring extended trading hours for now)
53
+ """
54
+ aliases = ['CFE', "CBOE_Futures"]
55
+ regular_market_times = {
56
+ "market_open": ((None, time(8, 30)),),
57
+ "market_close": ((None, time(15, 15)),)
58
+ }
59
+
60
+ @property
61
+ def name(self):
62
+ return "CFE"
63
+
64
+ @property
65
+ def tz(self):
66
+ return timezone("America/Chicago")
67
+
68
+ @property
69
+ def regular_holidays(self):
70
+ return AbstractHolidayCalendar(rules=[
71
+ USNewYearsDay,
72
+ USMartinLutherKingJrAfter1998,
73
+ USPresidentsDay,
74
+ GoodFridayUnlessChristmasNYEFriday,
75
+ USJuneteenthAfter2022,
76
+ USIndependenceDay,
77
+ USMemorialDay,
78
+ USLaborDay,
79
+ USThanksgivingDay,
80
+ Christmas
81
+ ])
82
+
83
+ @property
84
+ def special_closes(self):
85
+ return [(
86
+ time(12, 15),
87
+ AbstractHolidayCalendar(rules=[
88
+ USBlackFridayInOrAfter1993,
89
+ ])
90
+ )]
91
+
92
+ @property
93
+ def adhoc_holidays(self):
94
+ return list(chain(
95
+ HurricaneSandyClosings,
96
+ USNationalDaysofMourning,
97
+ ))
98
+
99
+
100
+ class CBOEEquityOptionsExchangeCalendar(CFEExchangeCalendar):
101
+ name = "CBOE_Equity_Options"
102
+ aliases = [name]
103
+ regular_market_times = {
104
+ "market_open": ((None, time(8, 30)),),
105
+ "market_close": ((None, time(15)),)
106
+ }
107
+
108
+
109
+ class CBOEIndexOptionsExchangeCalendar(CFEExchangeCalendar):
110
+ name = "CBOE_Index_Options"
111
+ aliases = [name]
112
+ regular_market_times = {
113
+ "market_open": ((None, time(8, 30)),),
114
+ "market_close": ((None, time(15, 15)),)
115
+ }