pandas-market-calendars 5.1.0__py3-none-any.whl → 5.1.3__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 (49) hide show
  1. pandas_market_calendars/__init__.py +39 -39
  2. pandas_market_calendars/calendar_registry.py +58 -57
  3. pandas_market_calendars/calendar_utils.py +1151 -1151
  4. pandas_market_calendars/calendars/asx.py +100 -70
  5. pandas_market_calendars/calendars/bmf.py +225 -219
  6. pandas_market_calendars/calendars/bse.py +433 -425
  7. pandas_market_calendars/calendars/cboe.py +153 -149
  8. pandas_market_calendars/calendars/cme.py +417 -405
  9. pandas_market_calendars/calendars/cme_globex_agriculture.py +172 -172
  10. pandas_market_calendars/calendars/cme_globex_base.py +127 -119
  11. pandas_market_calendars/calendars/cme_globex_crypto.py +166 -158
  12. pandas_market_calendars/calendars/cme_globex_energy_and_metals.py +224 -216
  13. pandas_market_calendars/calendars/cme_globex_equities.py +131 -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 +139 -131
  17. pandas_market_calendars/calendars/eurex_fixed_income.py +106 -98
  18. pandas_market_calendars/calendars/hkex.py +437 -431
  19. pandas_market_calendars/calendars/ice.py +89 -81
  20. pandas_market_calendars/calendars/iex.py +163 -155
  21. pandas_market_calendars/calendars/jpx.py +125 -117
  22. pandas_market_calendars/calendars/lse.py +126 -118
  23. pandas_market_calendars/calendars/mirror.py +144 -144
  24. pandas_market_calendars/calendars/nyse.py +1462 -1466
  25. pandas_market_calendars/calendars/ose.py +124 -118
  26. pandas_market_calendars/calendars/sifma.py +391 -383
  27. pandas_market_calendars/calendars/six.py +144 -136
  28. pandas_market_calendars/calendars/sse.py +305 -315
  29. pandas_market_calendars/calendars/tase.py +232 -224
  30. pandas_market_calendars/calendars/tsx.py +193 -185
  31. pandas_market_calendars/class_registry.py +115 -115
  32. pandas_market_calendars/holidays/cme.py +385 -385
  33. pandas_market_calendars/holidays/cme_globex.py +214 -214
  34. pandas_market_calendars/holidays/cn.py +1476 -1476
  35. pandas_market_calendars/holidays/jp.py +401 -401
  36. pandas_market_calendars/holidays/jpx_equinox.py +506 -506
  37. pandas_market_calendars/holidays/nyse.py +1536 -1536
  38. pandas_market_calendars/holidays/oz.py +82 -63
  39. pandas_market_calendars/holidays/sifma.py +350 -350
  40. pandas_market_calendars/holidays/uk.py +186 -186
  41. pandas_market_calendars/holidays/us.py +376 -376
  42. pandas_market_calendars/market_calendar.py +1006 -1008
  43. {pandas_market_calendars-5.1.0.dist-info → pandas_market_calendars-5.1.3.dist-info}/METADATA +5 -4
  44. pandas_market_calendars-5.1.3.dist-info/RECORD +50 -0
  45. {pandas_market_calendars-5.1.0.dist-info → pandas_market_calendars-5.1.3.dist-info}/WHEEL +1 -1
  46. pandas_market_calendars-5.1.0.dist-info/RECORD +0 -50
  47. {pandas_market_calendars-5.1.0.dist-info → pandas_market_calendars-5.1.3.dist-info}/licenses/LICENSE +0 -0
  48. {pandas_market_calendars-5.1.0.dist-info → pandas_market_calendars-5.1.3.dist-info}/licenses/NOTICE +0 -0
  49. {pandas_market_calendars-5.1.0.dist-info → pandas_market_calendars-5.1.3.dist-info}/top_level.txt +0 -0
@@ -1,224 +1,232 @@
1
- from datetime import time
2
-
3
- from typing import Literal, Union
4
- from pandas import Timestamp, Timedelta, DatetimeIndex
5
- from zoneinfo import ZoneInfo
6
-
7
- from pandas_market_calendars.market_calendar import MarketCalendar
8
- from pandas_market_calendars.calendar_utils import Day_Anchor, Month_Anchor
9
-
10
- TASEClosedDay = [
11
- # 2019
12
- Timestamp("2019-03-21", tz="Asia/Jerusalem"),
13
- Timestamp("2019-04-09", tz="Asia/Jerusalem"),
14
- Timestamp("2019-04-25", tz="Asia/Jerusalem"),
15
- Timestamp("2019-04-26", tz="Asia/Jerusalem"),
16
- Timestamp("2019-05-08", tz="Asia/Jerusalem"),
17
- Timestamp("2019-05-09", tz="Asia/Jerusalem"),
18
- Timestamp("2019-06-09", tz="Asia/Jerusalem"),
19
- Timestamp("2019-08-11", tz="Asia/Jerusalem"),
20
- Timestamp("2019-09-17", tz="Asia/Jerusalem"),
21
- Timestamp("2019-09-29", tz="Asia/Jerusalem"),
22
- Timestamp("2019-09-30", tz="Asia/Jerusalem"),
23
- Timestamp("2019-10-01", tz="Asia/Jerusalem"),
24
- Timestamp("2019-10-08", tz="Asia/Jerusalem"),
25
- Timestamp("2019-10-09", tz="Asia/Jerusalem"),
26
- Timestamp("2019-10-13", tz="Asia/Jerusalem"),
27
- Timestamp("2019-10-14", tz="Asia/Jerusalem"),
28
- Timestamp("2019-10-20", tz="Asia/Jerusalem"),
29
- Timestamp("2019-10-21", tz="Asia/Jerusalem"),
30
- # 2020
31
- Timestamp("2020-03-02", tz="Asia/Jerusalem"),
32
- Timestamp("2020-03-10", tz="Asia/Jerusalem"),
33
- Timestamp("2020-04-08", tz="Asia/Jerusalem"),
34
- Timestamp("2020-04-09", tz="Asia/Jerusalem"),
35
- Timestamp("2020-04-14", tz="Asia/Jerusalem"),
36
- Timestamp("2020-04-15", tz="Asia/Jerusalem"),
37
- Timestamp("2020-04-28", tz="Asia/Jerusalem"),
38
- Timestamp("2020-04-29", tz="Asia/Jerusalem"),
39
- Timestamp("2020-05-28", tz="Asia/Jerusalem"),
40
- Timestamp("2020-05-29", tz="Asia/Jerusalem"),
41
- Timestamp("2020-07-30", tz="Asia/Jerusalem"),
42
- Timestamp("2020-09-20", tz="Asia/Jerusalem"),
43
- Timestamp("2020-09-27", tz="Asia/Jerusalem"),
44
- Timestamp("2020-09-28", tz="Asia/Jerusalem"),
45
- # 2021
46
- Timestamp("2021-02-26", tz="Asia/Jerusalem"),
47
- Timestamp("2021-03-28", tz="Asia/Jerusalem"),
48
- Timestamp("2021-04-02", tz="Asia/Jerusalem"),
49
- Timestamp("2021-04-14", tz="Asia/Jerusalem"),
50
- Timestamp("2021-04-15", tz="Asia/Jerusalem"),
51
- Timestamp("2021-05-16", tz="Asia/Jerusalem"),
52
- Timestamp("2021-05-17", tz="Asia/Jerusalem"),
53
- Timestamp("2021-07-18", tz="Asia/Jerusalem"),
54
- Timestamp("2021-09-06", tz="Asia/Jerusalem"),
55
- Timestamp("2021-09-07", tz="Asia/Jerusalem"),
56
- Timestamp("2021-09-08", tz="Asia/Jerusalem"),
57
- Timestamp("2021-09-15", tz="Asia/Jerusalem"),
58
- Timestamp("2021-09-16", tz="Asia/Jerusalem"),
59
- Timestamp("2021-09-20", tz="Asia/Jerusalem"),
60
- Timestamp("2021-09-21", tz="Asia/Jerusalem"),
61
- Timestamp("2021-09-27", tz="Asia/Jerusalem"),
62
- Timestamp("2021-09-28", tz="Asia/Jerusalem"),
63
- # 2022
64
- Timestamp("2022-03-17", tz="Asia/Jerusalem"),
65
- Timestamp("2022-03-18", tz="Asia/Jerusalem"),
66
- Timestamp("2022-04-15", tz="Asia/Jerusalem"),
67
- Timestamp("2022-04-21", tz="Asia/Jerusalem"),
68
- Timestamp("2022-04-22", tz="Asia/Jerusalem"),
69
- Timestamp("2022-05-05", tz="Asia/Jerusalem"),
70
- Timestamp("2022-06-05", tz="Asia/Jerusalem"),
71
- Timestamp("2022-08-07", tz="Asia/Jerusalem"),
72
- Timestamp("2022-09-25", tz="Asia/Jerusalem"),
73
- Timestamp("2022-09-26", tz="Asia/Jerusalem"),
74
- Timestamp("2022-09-27", tz="Asia/Jerusalem"),
75
- Timestamp("2022-10-04", tz="Asia/Jerusalem"),
76
- Timestamp("2022-10-05", tz="Asia/Jerusalem"),
77
- Timestamp("2022-10-09", tz="Asia/Jerusalem"),
78
- Timestamp("2022-10-10", tz="Asia/Jerusalem"),
79
- Timestamp("2022-10-16", tz="Asia/Jerusalem"),
80
- Timestamp("2022-10-17", tz="Asia/Jerusalem"),
81
- Timestamp("2022-11-01", tz="Asia/Jerusalem"),
82
- # 2023
83
- Timestamp("2023-03-07", tz="Asia/Jerusalem"),
84
- Timestamp("2023-03-08", tz="Asia/Jerusalem"),
85
- Timestamp("2023-04-05", tz="Asia/Jerusalem"),
86
- Timestamp("2023-04-06", tz="Asia/Jerusalem"),
87
- Timestamp("2023-04-11", tz="Asia/Jerusalem"),
88
- Timestamp("2023-04-12", tz="Asia/Jerusalem"),
89
- Timestamp("2023-04-25", tz="Asia/Jerusalem"),
90
- Timestamp("2023-04-26", tz="Asia/Jerusalem"),
91
- Timestamp("2023-05-25", tz="Asia/Jerusalem"),
92
- Timestamp("2023-05-26", tz="Asia/Jerusalem"),
93
- Timestamp("2023-07-27", tz="Asia/Jerusalem"),
94
- Timestamp("2023-09-15", tz="Asia/Jerusalem"),
95
- Timestamp("2023-09-17", tz="Asia/Jerusalem"),
96
- Timestamp("2023-09-24", tz="Asia/Jerusalem"),
97
- Timestamp("2023-09-25", tz="Asia/Jerusalem"),
98
- Timestamp("2023-09-29", tz="Asia/Jerusalem"),
99
- Timestamp("2023-10-06", tz="Asia/Jerusalem"),
100
- Timestamp("2023-10-31", tz="Asia/Jerusalem"),
101
- # 2024
102
- Timestamp("2024-03-24", tz="Asia/Jerusalem"),
103
- Timestamp("2024-03-25", tz="Asia/Jerusalem"),
104
- Timestamp("2024-04-22", tz="Asia/Jerusalem"),
105
- Timestamp("2024-04-23", tz="Asia/Jerusalem"),
106
- Timestamp("2024-04-28", tz="Asia/Jerusalem"),
107
- Timestamp("2024-04-29", tz="Asia/Jerusalem"),
108
- Timestamp("2024-05-13", tz="Asia/Jerusalem"),
109
- Timestamp("2024-05-14", tz="Asia/Jerusalem"),
110
- Timestamp("2024-06-11", tz="Asia/Jerusalem"),
111
- Timestamp("2024-06-12", tz="Asia/Jerusalem"),
112
- Timestamp("2024-08-13", tz="Asia/Jerusalem"),
113
- Timestamp("2024-10-02", tz="Asia/Jerusalem"),
114
- Timestamp("2024-10-03", tz="Asia/Jerusalem"),
115
- Timestamp("2024-10-04", tz="Asia/Jerusalem"),
116
- Timestamp("2024-10-11", tz="Asia/Jerusalem"),
117
- Timestamp("2024-10-16", tz="Asia/Jerusalem"),
118
- Timestamp("2024-10-17", tz="Asia/Jerusalem"),
119
- Timestamp("2024-10-23", tz="Asia/Jerusalem"),
120
- Timestamp("2024-10-24", tz="Asia/Jerusalem"),
121
- # 2025
122
- Timestamp("2025-03-14", tz="Asia/Jerusalem"),
123
- Timestamp("2025-04-13", tz="Asia/Jerusalem"),
124
- Timestamp("2025-04-18", tz="Asia/Jerusalem"),
125
- Timestamp("2025-04-30", tz="Asia/Jerusalem"),
126
- Timestamp("2025-05-01", tz="Asia/Jerusalem"),
127
- Timestamp("2025-06-01", tz="Asia/Jerusalem"),
128
- Timestamp("2025-06-02", tz="Asia/Jerusalem"),
129
- Timestamp("2025-08-03", tz="Asia/Jerusalem"),
130
- Timestamp("2025-09-22", tz="Asia/Jerusalem"),
131
- Timestamp("2025-09-23", tz="Asia/Jerusalem"),
132
- Timestamp("2025-09-24", tz="Asia/Jerusalem"),
133
- Timestamp("2025-10-01", tz="Asia/Jerusalem"),
134
- Timestamp("2025-10-02", tz="Asia/Jerusalem"),
135
- Timestamp("2025-10-06", tz="Asia/Jerusalem"),
136
- Timestamp("2025-10-07", tz="Asia/Jerusalem"),
137
- Timestamp("2025-10-13", tz="Asia/Jerusalem"),
138
- Timestamp("2025-10-14", tz="Asia/Jerusalem"),
139
- ]
140
-
141
-
142
- class TASEExchangeCalendar(MarketCalendar):
143
- """
144
- Exchange calendar for TASE Stock Exchange
145
-
146
- Note these dates are only checked against 2020 and 2021
147
- https://info.tase.co.il/Eng/about_tase/corporate/Pages/vacation_schedule.aspx
148
-
149
- Opening times for the regular trading of equities (not including closing auction call)
150
- Open Time: 10:00 AM Asia/Jerusalem
151
- Close Time: 3:59 PM Asia/Jerusalem
152
-
153
- Daylight Saving Time in Israel comes into effect on the Friday before the last Sunday in March, and lasts until the
154
- last Sunday in October.
155
- During the Daylight Saving time period the clock will be UTC+3, and for the rest of the year UTC+2.
156
-
157
- Regularly-Observed Holidays (not necessarily in order):
158
- - Purim
159
- - Passover_I_Eve
160
- - Passover_I
161
- - Passover_II_Eve
162
- - Passover_II
163
- - Independence_Day
164
- - Yom_HaZikaron
165
- - Shavuot_Eve
166
- - Shavuot
167
- - Tisha_beAv
168
- - Jewish_New_Year_Eve
169
- - Jewish_New_Year_I
170
- - Jewish_New_Year_II
171
- - Yom_Kippur_Eve
172
- - Yom_Kippur
173
- - Sukkoth_Eve
174
- - Sukkoth
175
- - Simchat_Tora_Eve
176
- - Simchat_Tora
177
- """
178
-
179
- aliases = ["TASE"]
180
- regular_market_times = {
181
- "market_open": ((None, time(10)),),
182
- "market_close": ((None, time(15, 59)),),
183
- }
184
-
185
- @property
186
- def name(self):
187
- return "TASE"
188
-
189
- @property
190
- def full_name(self):
191
- return "Tel Aviv Stock Exchange"
192
-
193
- @property
194
- def tz(self):
195
- return ZoneInfo("Asia/Jerusalem")
196
-
197
- @property
198
- def adhoc_holidays(self):
199
- return TASEClosedDay
200
-
201
- @property
202
- def weekmask(self):
203
- return "Sun Mon Tue Wed Thu"
204
-
205
- def date_range_htf(
206
- self,
207
- frequency: Union[str, Timedelta, int, float],
208
- start: Union[str, Timestamp, int, float, None] = None,
209
- end: Union[str, Timestamp, int, float, None] = None,
210
- periods: Union[int, None] = None,
211
- closed: Union[Literal["left", "right"], None] = "right",
212
- *,
213
- day_anchor: Day_Anchor = "SAT", # Change the default day anchor
214
- month_anchor: Month_Anchor = "JAN",
215
- ) -> DatetimeIndex:
216
- return super().date_range_htf(
217
- frequency,
218
- start,
219
- end,
220
- periods,
221
- closed,
222
- day_anchor=day_anchor,
223
- month_anchor=month_anchor,
224
- )
1
+ from datetime import time
2
+
3
+ from typing import Literal, Union
4
+ from pandas import Timestamp, Timedelta, DatetimeIndex
5
+ import sys
6
+
7
+ # check python versiOn aNd import accordingly
8
+ if sys.version_info >= (3, 9):
9
+ # For Python 3.9 and later, import directly
10
+ from zoneinfo import ZoneInfo
11
+ else:
12
+ # For Python 3.8 and earlier, import from backports
13
+ from backports.zoneinfo import ZoneInfo
14
+
15
+ from pandas_market_calendars.market_calendar import MarketCalendar
16
+ from pandas_market_calendars.calendar_utils import Day_Anchor, Month_Anchor
17
+
18
+ TASEClosedDay = [
19
+ # 2019
20
+ Timestamp("2019-03-21", tz="Asia/Jerusalem"),
21
+ Timestamp("2019-04-09", tz="Asia/Jerusalem"),
22
+ Timestamp("2019-04-25", tz="Asia/Jerusalem"),
23
+ Timestamp("2019-04-26", tz="Asia/Jerusalem"),
24
+ Timestamp("2019-05-08", tz="Asia/Jerusalem"),
25
+ Timestamp("2019-05-09", tz="Asia/Jerusalem"),
26
+ Timestamp("2019-06-09", tz="Asia/Jerusalem"),
27
+ Timestamp("2019-08-11", tz="Asia/Jerusalem"),
28
+ Timestamp("2019-09-17", tz="Asia/Jerusalem"),
29
+ Timestamp("2019-09-29", tz="Asia/Jerusalem"),
30
+ Timestamp("2019-09-30", tz="Asia/Jerusalem"),
31
+ Timestamp("2019-10-01", tz="Asia/Jerusalem"),
32
+ Timestamp("2019-10-08", tz="Asia/Jerusalem"),
33
+ Timestamp("2019-10-09", tz="Asia/Jerusalem"),
34
+ Timestamp("2019-10-13", tz="Asia/Jerusalem"),
35
+ Timestamp("2019-10-14", tz="Asia/Jerusalem"),
36
+ Timestamp("2019-10-20", tz="Asia/Jerusalem"),
37
+ Timestamp("2019-10-21", tz="Asia/Jerusalem"),
38
+ # 2020
39
+ Timestamp("2020-03-02", tz="Asia/Jerusalem"),
40
+ Timestamp("2020-03-10", tz="Asia/Jerusalem"),
41
+ Timestamp("2020-04-08", tz="Asia/Jerusalem"),
42
+ Timestamp("2020-04-09", tz="Asia/Jerusalem"),
43
+ Timestamp("2020-04-14", tz="Asia/Jerusalem"),
44
+ Timestamp("2020-04-15", tz="Asia/Jerusalem"),
45
+ Timestamp("2020-04-28", tz="Asia/Jerusalem"),
46
+ Timestamp("2020-04-29", tz="Asia/Jerusalem"),
47
+ Timestamp("2020-05-28", tz="Asia/Jerusalem"),
48
+ Timestamp("2020-05-29", tz="Asia/Jerusalem"),
49
+ Timestamp("2020-07-30", tz="Asia/Jerusalem"),
50
+ Timestamp("2020-09-20", tz="Asia/Jerusalem"),
51
+ Timestamp("2020-09-27", tz="Asia/Jerusalem"),
52
+ Timestamp("2020-09-28", tz="Asia/Jerusalem"),
53
+ # 2021
54
+ Timestamp("2021-02-26", tz="Asia/Jerusalem"),
55
+ Timestamp("2021-03-28", tz="Asia/Jerusalem"),
56
+ Timestamp("2021-04-02", tz="Asia/Jerusalem"),
57
+ Timestamp("2021-04-14", tz="Asia/Jerusalem"),
58
+ Timestamp("2021-04-15", tz="Asia/Jerusalem"),
59
+ Timestamp("2021-05-16", tz="Asia/Jerusalem"),
60
+ Timestamp("2021-05-17", tz="Asia/Jerusalem"),
61
+ Timestamp("2021-07-18", tz="Asia/Jerusalem"),
62
+ Timestamp("2021-09-06", tz="Asia/Jerusalem"),
63
+ Timestamp("2021-09-07", tz="Asia/Jerusalem"),
64
+ Timestamp("2021-09-08", tz="Asia/Jerusalem"),
65
+ Timestamp("2021-09-15", tz="Asia/Jerusalem"),
66
+ Timestamp("2021-09-16", tz="Asia/Jerusalem"),
67
+ Timestamp("2021-09-20", tz="Asia/Jerusalem"),
68
+ Timestamp("2021-09-21", tz="Asia/Jerusalem"),
69
+ Timestamp("2021-09-27", tz="Asia/Jerusalem"),
70
+ Timestamp("2021-09-28", tz="Asia/Jerusalem"),
71
+ # 2022
72
+ Timestamp("2022-03-17", tz="Asia/Jerusalem"),
73
+ Timestamp("2022-03-18", tz="Asia/Jerusalem"),
74
+ Timestamp("2022-04-15", tz="Asia/Jerusalem"),
75
+ Timestamp("2022-04-21", tz="Asia/Jerusalem"),
76
+ Timestamp("2022-04-22", tz="Asia/Jerusalem"),
77
+ Timestamp("2022-05-05", tz="Asia/Jerusalem"),
78
+ Timestamp("2022-06-05", tz="Asia/Jerusalem"),
79
+ Timestamp("2022-08-07", tz="Asia/Jerusalem"),
80
+ Timestamp("2022-09-25", tz="Asia/Jerusalem"),
81
+ Timestamp("2022-09-26", tz="Asia/Jerusalem"),
82
+ Timestamp("2022-09-27", tz="Asia/Jerusalem"),
83
+ Timestamp("2022-10-04", tz="Asia/Jerusalem"),
84
+ Timestamp("2022-10-05", tz="Asia/Jerusalem"),
85
+ Timestamp("2022-10-09", tz="Asia/Jerusalem"),
86
+ Timestamp("2022-10-10", tz="Asia/Jerusalem"),
87
+ Timestamp("2022-10-16", tz="Asia/Jerusalem"),
88
+ Timestamp("2022-10-17", tz="Asia/Jerusalem"),
89
+ Timestamp("2022-11-01", tz="Asia/Jerusalem"),
90
+ # 2023
91
+ Timestamp("2023-03-07", tz="Asia/Jerusalem"),
92
+ Timestamp("2023-03-08", tz="Asia/Jerusalem"),
93
+ Timestamp("2023-04-05", tz="Asia/Jerusalem"),
94
+ Timestamp("2023-04-06", tz="Asia/Jerusalem"),
95
+ Timestamp("2023-04-11", tz="Asia/Jerusalem"),
96
+ Timestamp("2023-04-12", tz="Asia/Jerusalem"),
97
+ Timestamp("2023-04-25", tz="Asia/Jerusalem"),
98
+ Timestamp("2023-04-26", tz="Asia/Jerusalem"),
99
+ Timestamp("2023-05-25", tz="Asia/Jerusalem"),
100
+ Timestamp("2023-05-26", tz="Asia/Jerusalem"),
101
+ Timestamp("2023-07-27", tz="Asia/Jerusalem"),
102
+ Timestamp("2023-09-15", tz="Asia/Jerusalem"),
103
+ Timestamp("2023-09-17", tz="Asia/Jerusalem"),
104
+ Timestamp("2023-09-24", tz="Asia/Jerusalem"),
105
+ Timestamp("2023-09-25", tz="Asia/Jerusalem"),
106
+ Timestamp("2023-09-29", tz="Asia/Jerusalem"),
107
+ Timestamp("2023-10-06", tz="Asia/Jerusalem"),
108
+ Timestamp("2023-10-31", tz="Asia/Jerusalem"),
109
+ # 2024
110
+ Timestamp("2024-03-24", tz="Asia/Jerusalem"),
111
+ Timestamp("2024-03-25", tz="Asia/Jerusalem"),
112
+ Timestamp("2024-04-22", tz="Asia/Jerusalem"),
113
+ Timestamp("2024-04-23", tz="Asia/Jerusalem"),
114
+ Timestamp("2024-04-28", tz="Asia/Jerusalem"),
115
+ Timestamp("2024-04-29", tz="Asia/Jerusalem"),
116
+ Timestamp("2024-05-13", tz="Asia/Jerusalem"),
117
+ Timestamp("2024-05-14", tz="Asia/Jerusalem"),
118
+ Timestamp("2024-06-11", tz="Asia/Jerusalem"),
119
+ Timestamp("2024-06-12", tz="Asia/Jerusalem"),
120
+ Timestamp("2024-08-13", tz="Asia/Jerusalem"),
121
+ Timestamp("2024-10-02", tz="Asia/Jerusalem"),
122
+ Timestamp("2024-10-03", tz="Asia/Jerusalem"),
123
+ Timestamp("2024-10-04", tz="Asia/Jerusalem"),
124
+ Timestamp("2024-10-11", tz="Asia/Jerusalem"),
125
+ Timestamp("2024-10-16", tz="Asia/Jerusalem"),
126
+ Timestamp("2024-10-17", tz="Asia/Jerusalem"),
127
+ Timestamp("2024-10-23", tz="Asia/Jerusalem"),
128
+ Timestamp("2024-10-24", tz="Asia/Jerusalem"),
129
+ # 2025
130
+ Timestamp("2025-03-14", tz="Asia/Jerusalem"),
131
+ Timestamp("2025-04-13", tz="Asia/Jerusalem"),
132
+ Timestamp("2025-04-18", tz="Asia/Jerusalem"),
133
+ Timestamp("2025-04-30", tz="Asia/Jerusalem"),
134
+ Timestamp("2025-05-01", tz="Asia/Jerusalem"),
135
+ Timestamp("2025-06-01", tz="Asia/Jerusalem"),
136
+ Timestamp("2025-06-02", tz="Asia/Jerusalem"),
137
+ Timestamp("2025-08-03", tz="Asia/Jerusalem"),
138
+ Timestamp("2025-09-22", tz="Asia/Jerusalem"),
139
+ Timestamp("2025-09-23", tz="Asia/Jerusalem"),
140
+ Timestamp("2025-09-24", tz="Asia/Jerusalem"),
141
+ Timestamp("2025-10-01", tz="Asia/Jerusalem"),
142
+ Timestamp("2025-10-02", tz="Asia/Jerusalem"),
143
+ Timestamp("2025-10-06", tz="Asia/Jerusalem"),
144
+ Timestamp("2025-10-07", tz="Asia/Jerusalem"),
145
+ Timestamp("2025-10-13", tz="Asia/Jerusalem"),
146
+ Timestamp("2025-10-14", tz="Asia/Jerusalem"),
147
+ ]
148
+
149
+
150
+ class TASEExchangeCalendar(MarketCalendar):
151
+ """
152
+ Exchange calendar for TASE Stock Exchange
153
+
154
+ Note these dates are only checked against 2020 and 2021
155
+ https://info.tase.co.il/Eng/about_tase/corporate/Pages/vacation_schedule.aspx
156
+
157
+ Opening times for the regular trading of equities (not including closing auction call)
158
+ Open Time: 10:00 AM Asia/Jerusalem
159
+ Close Time: 3:59 PM Asia/Jerusalem
160
+
161
+ Daylight Saving Time in Israel comes into effect on the Friday before the last Sunday in March, and lasts until the
162
+ last Sunday in October.
163
+ During the Daylight Saving time period the clock will be UTC+3, and for the rest of the year UTC+2.
164
+
165
+ Regularly-Observed Holidays (not necessarily in order):
166
+ - Purim
167
+ - Passover_I_Eve
168
+ - Passover_I
169
+ - Passover_II_Eve
170
+ - Passover_II
171
+ - Independence_Day
172
+ - Yom_HaZikaron
173
+ - Shavuot_Eve
174
+ - Shavuot
175
+ - Tisha_beAv
176
+ - Jewish_New_Year_Eve
177
+ - Jewish_New_Year_I
178
+ - Jewish_New_Year_II
179
+ - Yom_Kippur_Eve
180
+ - Yom_Kippur
181
+ - Sukkoth_Eve
182
+ - Sukkoth
183
+ - Simchat_Tora_Eve
184
+ - Simchat_Tora
185
+ """
186
+
187
+ aliases = ["TASE"]
188
+ regular_market_times = {
189
+ "market_open": ((None, time(10)),),
190
+ "market_close": ((None, time(15, 59)),),
191
+ }
192
+
193
+ @property
194
+ def name(self):
195
+ return "TASE"
196
+
197
+ @property
198
+ def full_name(self):
199
+ return "Tel Aviv Stock Exchange"
200
+
201
+ @property
202
+ def tz(self):
203
+ return ZoneInfo("Asia/Jerusalem")
204
+
205
+ @property
206
+ def adhoc_holidays(self):
207
+ return TASEClosedDay
208
+
209
+ @property
210
+ def weekmask(self):
211
+ return "Sun Mon Tue Wed Thu"
212
+
213
+ def date_range_htf(
214
+ self,
215
+ frequency: Union[str, Timedelta, int, float],
216
+ start: Union[str, Timestamp, int, float, None] = None,
217
+ end: Union[str, Timestamp, int, float, None] = None,
218
+ periods: Union[int, None] = None,
219
+ closed: Union[Literal["left", "right"], None] = "right",
220
+ *,
221
+ day_anchor: Day_Anchor = "SAT", # Change the default day anchor
222
+ month_anchor: Month_Anchor = "JAN",
223
+ ) -> DatetimeIndex:
224
+ return super().date_range_htf(
225
+ frequency,
226
+ start,
227
+ end,
228
+ periods,
229
+ closed,
230
+ day_anchor=day_anchor,
231
+ month_anchor=month_anchor,
232
+ )