pandas-market-calendars 4.3.2__py3-none-any.whl → 4.3.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 (46) hide show
  1. pandas_market_calendars/__init__.py +38 -38
  2. pandas_market_calendars/calendar_registry.py +53 -52
  3. pandas_market_calendars/calendar_utils.py +261 -261
  4. pandas_market_calendars/calendars/asx.py +66 -66
  5. pandas_market_calendars/calendars/bmf.py +206 -206
  6. pandas_market_calendars/calendars/bse.py +407 -407
  7. pandas_market_calendars/calendars/cboe.py +145 -145
  8. pandas_market_calendars/calendars/cme.py +402 -402
  9. pandas_market_calendars/calendars/cme_globex_agriculture.py +126 -127
  10. pandas_market_calendars/calendars/cme_globex_base.py +119 -119
  11. pandas_market_calendars/calendars/cme_globex_crypto.py +160 -147
  12. pandas_market_calendars/calendars/cme_globex_energy_and_metals.py +216 -216
  13. pandas_market_calendars/calendars/cme_globex_equities.py +123 -121
  14. pandas_market_calendars/calendars/cme_globex_fixed_income.py +136 -134
  15. pandas_market_calendars/calendars/cme_globex_fx.py +101 -92
  16. pandas_market_calendars/calendars/eurex.py +139 -139
  17. pandas_market_calendars/calendars/eurex_fixed_income.py +98 -0
  18. pandas_market_calendars/calendars/hkex.py +426 -426
  19. pandas_market_calendars/calendars/ice.py +81 -81
  20. pandas_market_calendars/calendars/iex.py +112 -111
  21. pandas_market_calendars/calendars/jpx.py +109 -109
  22. pandas_market_calendars/calendars/lse.py +114 -114
  23. pandas_market_calendars/calendars/mirror.py +130 -129
  24. pandas_market_calendars/calendars/nyse.py +1324 -1324
  25. pandas_market_calendars/calendars/ose.py +116 -116
  26. pandas_market_calendars/calendars/sifma.py +350 -335
  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 +197 -195
  30. pandas_market_calendars/calendars/tsx.py +181 -181
  31. pandas_market_calendars/holidays/cme.py +385 -372
  32. pandas_market_calendars/holidays/cme_globex.py +214 -223
  33. pandas_market_calendars/holidays/cn.py +1455 -1455
  34. pandas_market_calendars/holidays/jp.py +398 -394
  35. pandas_market_calendars/holidays/nyse.py +1531 -1539
  36. pandas_market_calendars/holidays/oz.py +63 -65
  37. pandas_market_calendars/holidays/sifma.py +338 -350
  38. pandas_market_calendars/holidays/us.py +376 -377
  39. pandas_market_calendars/market_calendar.py +895 -895
  40. {pandas_market_calendars-4.3.2.dist-info → pandas_market_calendars-4.3.3.dist-info}/METADATA +3 -3
  41. pandas_market_calendars-4.3.3.dist-info/RECORD +50 -0
  42. pandas_market_calendars-4.3.2.dist-info/RECORD +0 -49
  43. {pandas_market_calendars-4.3.2.dist-info → pandas_market_calendars-4.3.3.dist-info}/LICENSE +0 -0
  44. {pandas_market_calendars-4.3.2.dist-info → pandas_market_calendars-4.3.3.dist-info}/NOTICE +0 -0
  45. {pandas_market_calendars-4.3.2.dist-info → pandas_market_calendars-4.3.3.dist-info}/WHEEL +0 -0
  46. {pandas_market_calendars-4.3.2.dist-info → pandas_market_calendars-4.3.3.dist-info}/top_level.txt +0 -0
@@ -1,81 +1,81 @@
1
- from datetime import time
2
- from itertools import chain
3
-
4
- from pandas import Timestamp
5
- from pandas.tseries.holiday import (
6
- AbstractHolidayCalendar,
7
- GoodFriday,
8
- USLaborDay,
9
- USPresidentsDay,
10
- USThanksgivingDay,
11
- )
12
- from pytz import timezone
13
-
14
- from pandas_market_calendars.holidays.us import (
15
- Christmas,
16
- USIndependenceDay,
17
- USMartinLutherKingJrAfter1998,
18
- USMemorialDay,
19
- USNationalDaysofMourning,
20
- USNewYearsDay,
21
- )
22
- from pandas_market_calendars.market_calendar import MarketCalendar
23
-
24
-
25
- class ICEExchangeCalendar(MarketCalendar):
26
- """
27
- Exchange calendar for ICE US.
28
-
29
- Open Time: 8pm, US/Eastern
30
- Close Time: 6pm, US/Eastern
31
-
32
- https://www.theice.com/publicdocs/futures_us/ICE_Futures_US_Regular_Trading_Hours.pdf # noqa
33
- """
34
-
35
- aliases = ["ICE", "ICEUS", "NYFE"]
36
- regular_market_times = {
37
- "market_open": ((None, time(20, 1), -1),), # offset by -1 day
38
- "market_close": ((None, time(18)),),
39
- }
40
-
41
- @property
42
- def name(self):
43
- return "ICE"
44
-
45
- @property
46
- def tz(self):
47
- return timezone("US/Eastern")
48
-
49
- @property
50
- def special_closes(self):
51
- return [
52
- (
53
- time(13),
54
- AbstractHolidayCalendar(
55
- rules=[
56
- USMartinLutherKingJrAfter1998,
57
- USPresidentsDay,
58
- USMemorialDay,
59
- USIndependenceDay,
60
- USLaborDay,
61
- USThanksgivingDay,
62
- ]
63
- ),
64
- )
65
- ]
66
-
67
- @property
68
- def adhoc_holidays(self):
69
- return list(
70
- chain(
71
- USNationalDaysofMourning,
72
- # ICE was only closed on the first day of the Hurricane Sandy
73
- # closings (was not closed on 2012-10-30)
74
- [Timestamp("2012-10-29", tz="UTC")],
75
- )
76
- )
77
-
78
- @property
79
- def regular_holidays(self):
80
- # https://www.theice.com/publicdocs/futures_us/exchange_notices/NewExNot2016Holidays.pdf # noqa
81
- return AbstractHolidayCalendar(rules=[USNewYearsDay, GoodFriday, Christmas])
1
+ from datetime import time
2
+ from itertools import chain
3
+
4
+ from pandas import Timestamp
5
+ from pandas.tseries.holiday import (
6
+ AbstractHolidayCalendar,
7
+ GoodFriday,
8
+ USLaborDay,
9
+ USPresidentsDay,
10
+ USThanksgivingDay,
11
+ )
12
+ from pytz import timezone
13
+
14
+ from pandas_market_calendars.holidays.us import (
15
+ Christmas,
16
+ USIndependenceDay,
17
+ USMartinLutherKingJrAfter1998,
18
+ USMemorialDay,
19
+ USNationalDaysofMourning,
20
+ USNewYearsDay,
21
+ )
22
+ from pandas_market_calendars.market_calendar import MarketCalendar
23
+
24
+
25
+ class ICEExchangeCalendar(MarketCalendar):
26
+ """
27
+ Exchange calendar for ICE US.
28
+
29
+ Open Time: 8pm, US/Eastern
30
+ Close Time: 6pm, US/Eastern
31
+
32
+ https://www.theice.com/publicdocs/futures_us/ICE_Futures_US_Regular_Trading_Hours.pdf # noqa
33
+ """
34
+
35
+ aliases = ["ICE", "ICEUS", "NYFE"]
36
+ regular_market_times = {
37
+ "market_open": ((None, time(20, 1), -1),), # offset by -1 day
38
+ "market_close": ((None, time(18)),),
39
+ }
40
+
41
+ @property
42
+ def name(self):
43
+ return "ICE"
44
+
45
+ @property
46
+ def tz(self):
47
+ return timezone("US/Eastern")
48
+
49
+ @property
50
+ def special_closes(self):
51
+ return [
52
+ (
53
+ time(13),
54
+ AbstractHolidayCalendar(
55
+ rules=[
56
+ USMartinLutherKingJrAfter1998,
57
+ USPresidentsDay,
58
+ USMemorialDay,
59
+ USIndependenceDay,
60
+ USLaborDay,
61
+ USThanksgivingDay,
62
+ ]
63
+ ),
64
+ )
65
+ ]
66
+
67
+ @property
68
+ def adhoc_holidays(self):
69
+ return list(
70
+ chain(
71
+ USNationalDaysofMourning,
72
+ # ICE was only closed on the first day of the Hurricane Sandy
73
+ # closings (was not closed on 2012-10-30)
74
+ [Timestamp("2012-10-29", tz="UTC")],
75
+ )
76
+ )
77
+
78
+ @property
79
+ def regular_holidays(self):
80
+ # https://www.theice.com/publicdocs/futures_us/exchange_notices/NewExNot2016Holidays.pdf # noqa
81
+ return AbstractHolidayCalendar(rules=[USNewYearsDay, GoodFriday, Christmas])
@@ -1,111 +1,112 @@
1
- from datetime import time
2
- from itertools import chain
3
- from .nyse import NYSEExchangeCalendar
4
- from pandas.tseries.holiday import AbstractHolidayCalendar
5
- from pytz import timezone
6
-
7
- from pandas_market_calendars.holidays.nyse import (
8
- USPresidentsDay,
9
- GoodFriday,
10
- USMemorialDay,
11
- USJuneteenthAfter2022,
12
- USIndependenceDay,
13
- USThanksgivingDay,
14
- ChristmasNYSE,
15
- USMartinLutherKingJrAfter1998,
16
- # Ad-Hoc
17
- DayAfterThanksgiving1pmEarlyCloseInOrAfter1993,
18
- DaysBeforeIndependenceDay1pmEarlyCloseAdhoc,
19
- ChristmasEvesAdhoc,
20
- )
21
-
22
-
23
- class IEXExchangeCalendar(NYSEExchangeCalendar):
24
- """
25
- Exchange calendar for the Investor's Exchange (IEX).
26
-
27
- IEX Exchange is a U.S. stock exchange focused on driving performance
28
- for broker-dealers and investors through innovative design and technology.
29
-
30
- Most of this class inherits from NYSEExchangeCalendar since
31
- the holidays are the same. The only variation is (1) IEX began
32
- operation in 2013, and (2) IEX has different hours of operation
33
-
34
- References:
35
- - https://exchange.iex.io/
36
- - https://iexexchange.io/resources/trading/trading-hours-holidays/index.html
37
- """
38
-
39
- regular_market_times = {
40
- "pre": (("2013-03-25", time(8)),),
41
- "market_open": ((None, time(9, 30)),),
42
- "market_close": ((None, time(16)),),
43
- "post": ((None, time(17)),),
44
- }
45
-
46
- aliases = ["IEX", "Investors_Exchange"]
47
-
48
- @property
49
- def name(self):
50
- return "IEX"
51
-
52
- @property
53
- def weekmask(self):
54
- return "Mon Tue Wed Thu Fri"
55
-
56
- @property
57
- def regular_holidays(self):
58
- return AbstractHolidayCalendar(
59
- rules=[
60
- USPresidentsDay,
61
- GoodFriday,
62
- USMemorialDay,
63
- USJuneteenthAfter2022,
64
- USIndependenceDay,
65
- USThanksgivingDay,
66
- ChristmasNYSE,
67
- USMartinLutherKingJrAfter1998,
68
- ]
69
- )
70
-
71
- @property
72
- def adhoc_holidays(self):
73
- return list(
74
- chain(
75
- ChristmasEvesAdhoc,
76
- )
77
- )
78
-
79
- @property
80
- def special_closes(self):
81
- return [
82
- (
83
- time(hour=13, tzinfo=timezone("America/New_York")),
84
- AbstractHolidayCalendar(
85
- rules=[
86
- DayAfterThanksgiving1pmEarlyCloseInOrAfter1993,
87
- ]
88
- ),
89
- )
90
- ]
91
-
92
- """Override NYSE calendar special cases"""
93
-
94
- @property
95
- def special_closes_adhoc(self):
96
- return [
97
- (
98
- time(13, tzinfo=timezone("America/New_York")),
99
- DaysBeforeIndependenceDay1pmEarlyCloseAdhoc,
100
- )
101
- ]
102
-
103
- @property
104
- def special_opens(self):
105
- return []
106
-
107
- def valid_days(self, start_date, end_date, tz="UTC"):
108
- trading_days = super().valid_days(
109
- start_date, end_date, tz=tz
110
- ) # all NYSE valid days
111
- return trading_days[~(trading_days <= "2013-08-25")]
1
+ from datetime import time
2
+ from itertools import chain
3
+
4
+ from pandas.tseries.holiday import AbstractHolidayCalendar
5
+ from pytz import timezone
6
+
7
+ from pandas_market_calendars.holidays.nyse import (
8
+ USPresidentsDay,
9
+ GoodFriday,
10
+ USMemorialDay,
11
+ USJuneteenthAfter2022,
12
+ USIndependenceDay,
13
+ USThanksgivingDay,
14
+ ChristmasNYSE,
15
+ USMartinLutherKingJrAfter1998,
16
+ # Ad-Hoc
17
+ DayAfterThanksgiving1pmEarlyCloseInOrAfter1993,
18
+ DaysBeforeIndependenceDay1pmEarlyCloseAdhoc,
19
+ ChristmasEvesAdhoc,
20
+ )
21
+ from .nyse import NYSEExchangeCalendar
22
+
23
+
24
+ class IEXExchangeCalendar(NYSEExchangeCalendar):
25
+ """
26
+ Exchange calendar for the Investor's Exchange (IEX).
27
+
28
+ IEX Exchange is a U.S. stock exchange focused on driving performance
29
+ for broker-dealers and investors through innovative design and technology.
30
+
31
+ Most of this class inherits from NYSEExchangeCalendar since
32
+ the holidays are the same. The only variation is (1) IEX began
33
+ operation in 2013, and (2) IEX has different hours of operation
34
+
35
+ References:
36
+ - https://exchange.iex.io/
37
+ - https://iexexchange.io/resources/trading/trading-hours-holidays/index.html
38
+ """
39
+
40
+ regular_market_times = {
41
+ "pre": (("2013-03-25", time(8)),),
42
+ "market_open": ((None, time(9, 30)),),
43
+ "market_close": ((None, time(16)),),
44
+ "post": ((None, time(17)),),
45
+ }
46
+
47
+ aliases = ["IEX", "Investors_Exchange"]
48
+
49
+ @property
50
+ def name(self):
51
+ return "IEX"
52
+
53
+ @property
54
+ def weekmask(self):
55
+ return "Mon Tue Wed Thu Fri"
56
+
57
+ @property
58
+ def regular_holidays(self):
59
+ return AbstractHolidayCalendar(
60
+ rules=[
61
+ USPresidentsDay,
62
+ GoodFriday,
63
+ USMemorialDay,
64
+ USJuneteenthAfter2022,
65
+ USIndependenceDay,
66
+ USThanksgivingDay,
67
+ ChristmasNYSE,
68
+ USMartinLutherKingJrAfter1998,
69
+ ]
70
+ )
71
+
72
+ @property
73
+ def adhoc_holidays(self):
74
+ return list(
75
+ chain(
76
+ ChristmasEvesAdhoc,
77
+ )
78
+ )
79
+
80
+ @property
81
+ def special_closes(self):
82
+ return [
83
+ (
84
+ time(hour=13, tzinfo=timezone("America/New_York")),
85
+ AbstractHolidayCalendar(
86
+ rules=[
87
+ DayAfterThanksgiving1pmEarlyCloseInOrAfter1993,
88
+ ]
89
+ ),
90
+ )
91
+ ]
92
+
93
+ """Override NYSE calendar special cases"""
94
+
95
+ @property
96
+ def special_closes_adhoc(self):
97
+ return [
98
+ (
99
+ time(13, tzinfo=timezone("America/New_York")),
100
+ DaysBeforeIndependenceDay1pmEarlyCloseAdhoc,
101
+ )
102
+ ]
103
+
104
+ @property
105
+ def special_opens(self):
106
+ return []
107
+
108
+ def valid_days(self, start_date, end_date, tz="UTC"):
109
+ trading_days = super().valid_days(
110
+ start_date, end_date, tz=tz
111
+ ) # all NYSE valid days
112
+ return trading_days[~(trading_days <= "2013-08-25")]
@@ -1,109 +1,109 @@
1
- from datetime import time
2
- from itertools import chain
3
-
4
- from pandas.tseries.holiday import AbstractHolidayCalendar
5
- from pytz import timezone
6
-
7
- from pandas_market_calendars.holidays.jp import *
8
- from pandas_market_calendars.holidays.us import USNewYearsDay
9
- from pandas_market_calendars.market_calendar import MarketCalendar
10
-
11
-
12
- # TODO:
13
- # From 1949 to 1972 the TSE was open on all non-holiday Saturdays for a half day
14
- # From 1973 to 1984 the TSE was open on all non-holiday Saturdays except the third Saturday of the month
15
- # need to add support for weekmask to make this work properly
16
-
17
-
18
- class JPXExchangeCalendar(MarketCalendar):
19
- """
20
- Exchange calendar for JPX
21
-
22
- Open Time: 9:31 AM, Asia/Tokyo
23
- LUNCH BREAK :facepalm: : 11:30 AM - 12:30 PM Asia/Tokyo
24
- Close Time: 4:00 PM, Asia/Tokyo
25
- """
26
-
27
- aliases = ["JPX"]
28
- regular_market_times = {
29
- "market_open": ((None, time(9)),),
30
- "market_close": ((None, time(15)),),
31
- "break_start": ((None, time(11, 30)),),
32
- "break_end": ((None, time(12, 30)),),
33
- }
34
- regular_early_close = time(13)
35
-
36
- @property
37
- def name(self):
38
- return "JPX"
39
-
40
- @property
41
- def tz(self):
42
- return timezone("Asia/Tokyo")
43
-
44
- @property
45
- def adhoc_holidays(self):
46
- return list(
47
- chain(
48
- AscensionDays,
49
- MarriageDays,
50
- FuneralShowa,
51
- EnthronementDays,
52
- AutumnalCitizenDates,
53
- NoN225IndexPrices,
54
- EquityTradingSystemFailure,
55
- )
56
- )
57
-
58
- @property
59
- def regular_holidays(self):
60
- return AbstractHolidayCalendar(
61
- rules=[
62
- USNewYearsDay,
63
- JapanNewYearsDay2,
64
- JapanNewYearsDay3,
65
- JapanComingOfAgeDay1951To1973,
66
- JapanComingOfAgeDay1974To1999,
67
- JapanComingOfAgeDay,
68
- JapanNationalFoundationDay1969To1973,
69
- JapanNationalFoundationDay,
70
- JapanEmperorsBirthday,
71
- JapanVernalEquinox,
72
- JapanShowaDayUntil1972,
73
- JapanShowaDay,
74
- JapanConstitutionMemorialDayUntil1972,
75
- JapanConstitutionMemorialDay,
76
- JapanGreeneryDay,
77
- JapanChildrensDayUntil1972,
78
- JapanChildrensDay,
79
- JapanGoldenWeekBonusDay,
80
- JapanMarineDay1996To2002,
81
- JapanMarineDay2003To2019,
82
- JapanMarineDay2020,
83
- JapanMarineDay2021,
84
- JapanMarineDay,
85
- JapanMountainDay2016to2019,
86
- JapanMountainDay2020,
87
- JapanMountainDay2021,
88
- JapanMountainDay2021NextDay,
89
- JapanMountainDay,
90
- JapanRespectForTheAgedDay1966To1972,
91
- JapanRespectForTheAgedDay1973To2002,
92
- JapanRespectForTheAgedDay,
93
- JapanAutumnalEquinox,
94
- JapanHealthAndSportsDay1966To1972,
95
- JapanHealthAndSportsDay1973To1999,
96
- JapanHealthAndSportsDay2000To2019,
97
- JapanSportsDay2020,
98
- JapanSportsDay2021,
99
- JapanSportsDay,
100
- JapanCultureDayUntil1972,
101
- JapanCultureDay,
102
- JapanLaborThanksgivingDayUntil1972,
103
- JapanLaborThanksgivingDay,
104
- JapanEmperorAkahitosBirthday,
105
- JapanDecember29Until1988,
106
- JapanDecember30Until1988,
107
- JapanBeforeNewYearsDay,
108
- ]
109
- )
1
+ from datetime import time
2
+ from itertools import chain
3
+
4
+ from pandas.tseries.holiday import AbstractHolidayCalendar
5
+ from pytz import timezone
6
+
7
+ from pandas_market_calendars.holidays.jp import *
8
+ from pandas_market_calendars.holidays.us import USNewYearsDay
9
+ from pandas_market_calendars.market_calendar import MarketCalendar
10
+
11
+
12
+ # TODO:
13
+ # From 1949 to 1972 the TSE was open on all non-holiday Saturdays for a half day
14
+ # From 1973 to 1984 the TSE was open on all non-holiday Saturdays except the third Saturday of the month
15
+ # need to add support for weekmask to make this work properly
16
+
17
+
18
+ class JPXExchangeCalendar(MarketCalendar):
19
+ """
20
+ Exchange calendar for JPX
21
+
22
+ Open Time: 9:31 AM, Asia/Tokyo
23
+ LUNCH BREAK :facepalm: : 11:30 AM - 12:30 PM Asia/Tokyo
24
+ Close Time: 4:00 PM, Asia/Tokyo
25
+ """
26
+
27
+ aliases = ["JPX", "XJPX"]
28
+ regular_market_times = {
29
+ "market_open": ((None, time(9)),),
30
+ "market_close": ((None, time(15)),),
31
+ "break_start": ((None, time(11, 30)),),
32
+ "break_end": ((None, time(12, 30)),),
33
+ }
34
+ regular_early_close = time(13)
35
+
36
+ @property
37
+ def name(self):
38
+ return "JPX"
39
+
40
+ @property
41
+ def tz(self):
42
+ return timezone("Asia/Tokyo")
43
+
44
+ @property
45
+ def adhoc_holidays(self):
46
+ return list(
47
+ chain(
48
+ AscensionDays,
49
+ MarriageDays,
50
+ FuneralShowa,
51
+ EnthronementDays,
52
+ AutumnalCitizenDates,
53
+ NoN225IndexPrices,
54
+ EquityTradingSystemFailure,
55
+ )
56
+ )
57
+
58
+ @property
59
+ def regular_holidays(self):
60
+ return AbstractHolidayCalendar(
61
+ rules=[
62
+ USNewYearsDay,
63
+ JapanNewYearsDay2,
64
+ JapanNewYearsDay3,
65
+ JapanComingOfAgeDay1951To1973,
66
+ JapanComingOfAgeDay1974To1999,
67
+ JapanComingOfAgeDay,
68
+ JapanNationalFoundationDay1969To1973,
69
+ JapanNationalFoundationDay,
70
+ JapanEmperorsBirthday,
71
+ JapanVernalEquinox,
72
+ JapanShowaDayUntil1972,
73
+ JapanShowaDay,
74
+ JapanConstitutionMemorialDayUntil1972,
75
+ JapanConstitutionMemorialDay,
76
+ JapanGreeneryDay,
77
+ JapanChildrensDayUntil1972,
78
+ JapanChildrensDay,
79
+ JapanGoldenWeekBonusDay,
80
+ JapanMarineDay1996To2002,
81
+ JapanMarineDay2003To2019,
82
+ JapanMarineDay2020,
83
+ JapanMarineDay2021,
84
+ JapanMarineDay,
85
+ JapanMountainDay2016to2019,
86
+ JapanMountainDay2020,
87
+ JapanMountainDay2021,
88
+ JapanMountainDay2021NextDay,
89
+ JapanMountainDay,
90
+ JapanRespectForTheAgedDay1966To1972,
91
+ JapanRespectForTheAgedDay1973To2002,
92
+ JapanRespectForTheAgedDay,
93
+ JapanAutumnalEquinox,
94
+ JapanHealthAndSportsDay1966To1972,
95
+ JapanHealthAndSportsDay1973To1999,
96
+ JapanHealthAndSportsDay2000To2019,
97
+ JapanSportsDay2020,
98
+ JapanSportsDay2021,
99
+ JapanSportsDay,
100
+ JapanCultureDayUntil1972,
101
+ JapanCultureDay,
102
+ JapanLaborThanksgivingDayUntil1972,
103
+ JapanLaborThanksgivingDay,
104
+ JapanEmperorAkahitosBirthday,
105
+ JapanDecember29Until1988,
106
+ JapanDecember30Until1988,
107
+ JapanBeforeNewYearsDay,
108
+ ]
109
+ )