From b9bc1cab93bffda908d64ad4089a8d0d1d44215e Mon Sep 17 00:00:00 2001 From: Kevin S Date: Sun, 4 Feb 2024 18:47:45 -0500 Subject: [PATCH 1/3] correcting 2024 sifma holidays --- pandas_market_calendars/holidays/sifma.py | 12 +++++++++++- tests/test_sifma_calendars.py | 20 ++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/pandas_market_calendars/holidays/sifma.py b/pandas_market_calendars/holidays/sifma.py index 4540cf8..65df763 100644 --- a/pandas_market_calendars/holidays/sifma.py +++ b/pandas_market_calendars/holidays/sifma.py @@ -100,8 +100,10 @@ # 2021 is early close. # 2022 is a full holiday. # 2023 is early close. +# 2024 is a full holiday GoodFridayAdHoc = [ Timestamp("2022-04-15", tz="UTC"), + Timestamp("2024-03-29", tz="UTC"), ] GoodFriday2pmEarlyCloseAdHoc = [ @@ -201,11 +203,19 @@ # When falls on Saturday, no holiday is observed. # When falls on Sunday, the Monday following is a holiday. ########################################################## +USVeteransDay2022 = Holiday( + "Veterans Day Prior to 2023", + month=11, + day=11, + end_date=Timestamp("2022-12-31"), + days_of_week=(MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY), + observance=sunday_to_monday, +) + USVeteransDay = Holiday( "Veterans Day", month=11, day=11, - end_date=Timestamp("2022-12-31"), days_of_week=(MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY), observance=sunday_to_monday, ) diff --git a/tests/test_sifma_calendars.py b/tests/test_sifma_calendars.py index dd617e7..3fafaac 100644 --- a/tests/test_sifma_calendars.py +++ b/tests/test_sifma_calendars.py @@ -92,6 +92,26 @@ def test_us_close_time_tz(): def test_us_weekmask(): assert sifma_us.weekmask == "Mon Tue Wed Thu Fri" +def test_us_2024(): + start = "2024-01-01" + end = "2024-12-31" + holidays = [ + pd.Timestamp("2024-01-01", tz="UTC"), # New Year's Day + pd.Timestamp("2024-01-15", tz="UTC"), # MLK + pd.Timestamp("2024-02-19", tz="UTC"), # Presidents Day + pd.Timestamp("2024-03-29", tz="UTC"), # Good Friday + pd.Timestamp("2024-05-27", tz="UTC"), # Memorial Day + pd.Timestamp("2024-06-19", tz="UTC"), # Juneteenth + pd.Timestamp("2024-07-04", tz="UTC"), # Independence Day + pd.Timestamp("2024-09-02", tz="UTC"), # Labor Day + pd.Timestamp("2024-10-14", tz="UTC"), # Columbus Day + pd.Timestamp("2024-11-11", tz="UTC"), # Veterans Day + pd.Timestamp("2024-11-28", tz="UTC"), # Thanksgiving + pd.Timestamp("2024-12-25", tz="UTC"), # Christmas + ] + _test_holidays(sifma_us, holidays, start, end) + _test_no_special_opens(sifma_us, start, end) + def test_us_2023(): start = "2023-01-01" From 47c442e72733fe789bfcfad019edaf004b34e622 Mon Sep 17 00:00:00 2001 From: Kevin S Date: Sun, 4 Feb 2024 19:08:41 -0500 Subject: [PATCH 2/3] adding early closes for us sifma 2024 --- pandas_market_calendars/holidays/sifma.py | 1 + tests/test_sifma_calendars.py | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/pandas_market_calendars/holidays/sifma.py b/pandas_market_calendars/holidays/sifma.py index 65df763..52802af 100644 --- a/pandas_market_calendars/holidays/sifma.py +++ b/pandas_market_calendars/holidays/sifma.py @@ -121,6 +121,7 @@ DayBeforeGoodFriday2pmEarlyCloseAdHoc = [ Timestamp("2022-04-14", tz="UTC"), + Timestamp("2024-03-28", tz="UTC"), ] ################################################## diff --git a/tests/test_sifma_calendars.py b/tests/test_sifma_calendars.py index 3fafaac..90d4e7e 100644 --- a/tests/test_sifma_calendars.py +++ b/tests/test_sifma_calendars.py @@ -92,6 +92,7 @@ def test_us_close_time_tz(): def test_us_weekmask(): assert sifma_us.weekmask == "Mon Tue Wed Thu Fri" + def test_us_2024(): start = "2024-01-01" end = "2024-12-31" @@ -112,6 +113,25 @@ def test_us_2024(): _test_holidays(sifma_us, holidays, start, end) _test_no_special_opens(sifma_us, start, end) + # early closes we expect: + early_closes = [ + pd.Timestamp("2024-03-28 2:00PM", tz="America/New_York"), # Good Friday + pd.Timestamp( + "2024-05-24 2:00PM", tz="America/New_York" + ), # Day before Memorial Day + pd.Timestamp( + "2024-07-03 2:00PM", tz="America/New_York" + ), # Day before Independence Day + pd.Timestamp( + "2024-11-29 2:00PM", tz="America/New_York" + ), # Day after Thanksgiving + pd.Timestamp( + "2024-12-24 2:00PM", tz="America/New_York" + ), # Day before Christmas + pd.Timestamp("2024-12-31 2:00PM", tz="America/New_York"), # New Year's Eve + ] + _test_has_early_closes(sifma_us, early_closes, start, end) + def test_us_2023(): start = "2023-01-01" From 0189fef8249710e094651cdeb822effaf5bbd351 Mon Sep 17 00:00:00 2001 From: Kevin S Date: Sun, 4 Feb 2024 21:43:27 -0500 Subject: [PATCH 3/3] exporting prior and current veterans day --- pandas_market_calendars/calendars/sifma.py | 4 ++++ pandas_market_calendars/holidays/sifma.py | 1 + 2 files changed, 5 insertions(+) diff --git a/pandas_market_calendars/calendars/sifma.py b/pandas_market_calendars/calendars/sifma.py index a592d0b..78a4be5 100644 --- a/pandas_market_calendars/calendars/sifma.py +++ b/pandas_market_calendars/calendars/sifma.py @@ -39,6 +39,7 @@ ThursdayBeforeUSIndependenceDay2pmEarlyClose, USLaborDay, USColumbusDay, + USVeteransDay2022, USVeteransDay, USThanksgivingDay, DayAfterThanksgiving2pmEarlyClose, @@ -126,6 +127,7 @@ def regular_holidays(self): USIndependenceDay, USLaborDay, USColumbusDay, + USVeteransDay2022, USVeteransDay, USThanksgivingDay, Christmas, @@ -221,6 +223,7 @@ def regular_holidays(self): UKSummerBank, USLaborDay, USColumbusDay, + USVeteransDay2022, USVeteransDay, USThanksgivingDay, UKChristmas, @@ -324,6 +327,7 @@ def regular_holidays(self): JapanSportsDay2020, JapanHealthAndSportsDay2000To2019, JapanCultureDay, + USVeteransDay2022, USVeteransDay, JapanLaborThanksgivingDay, USThanksgivingDay, diff --git a/pandas_market_calendars/holidays/sifma.py b/pandas_market_calendars/holidays/sifma.py index 52802af..42147e9 100644 --- a/pandas_market_calendars/holidays/sifma.py +++ b/pandas_market_calendars/holidays/sifma.py @@ -217,6 +217,7 @@ "Veterans Day", month=11, day=11, + start_date=Timestamp("2023-12-31"), days_of_week=(MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY), observance=sunday_to_monday, )