Skip to content

Commit

Permalink
Merge pull request rsheftel#326 from kslader8/sifma-2024
Browse files Browse the repository at this point in the history
correcting 2024 us sifma holidays & early closes
  • Loading branch information
rsheftel authored Feb 6, 2024
2 parents 2eb992d + 0189fef commit 46b96f0
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 1 deletion.
4 changes: 4 additions & 0 deletions pandas_market_calendars/calendars/sifma.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
ThursdayBeforeUSIndependenceDay2pmEarlyClose,
USLaborDay,
USColumbusDay,
USVeteransDay2022,
USVeteransDay,
USThanksgivingDay,
DayAfterThanksgiving2pmEarlyClose,
Expand Down Expand Up @@ -126,6 +127,7 @@ def regular_holidays(self):
USIndependenceDay,
USLaborDay,
USColumbusDay,
USVeteransDay2022,
USVeteransDay,
USThanksgivingDay,
Christmas,
Expand Down Expand Up @@ -221,6 +223,7 @@ def regular_holidays(self):
UKSummerBank,
USLaborDay,
USColumbusDay,
USVeteransDay2022,
USVeteransDay,
USThanksgivingDay,
UKChristmas,
Expand Down Expand Up @@ -324,6 +327,7 @@ def regular_holidays(self):
JapanSportsDay2020,
JapanHealthAndSportsDay2000To2019,
JapanCultureDay,
USVeteransDay2022,
USVeteransDay,
JapanLaborThanksgivingDay,
USThanksgivingDay,
Expand Down
14 changes: 13 additions & 1 deletion pandas_market_calendars/holidays/sifma.py
Original file line number Diff line number Diff line change
Expand Up @@ -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 = [
Expand All @@ -119,6 +121,7 @@

DayBeforeGoodFriday2pmEarlyCloseAdHoc = [
Timestamp("2022-04-14", tz="UTC"),
Timestamp("2024-03-28", tz="UTC"),
]

##################################################
Expand Down Expand Up @@ -201,11 +204,20 @@
# 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"),
start_date=Timestamp("2023-12-31"),
days_of_week=(MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY),
observance=sunday_to_monday,
)
Expand Down
40 changes: 40 additions & 0 deletions tests/test_sifma_calendars.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,46 @@ 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)

# 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"
end = "2023-12-31"
Expand Down

0 comments on commit 46b96f0

Please sign in to comment.