From c60c4319e7327d3773c44a04f0e812c8efc21b27 Mon Sep 17 00:00:00 2001 From: Brian Weller Date: Fri, 2 Oct 2020 20:29:40 +0100 Subject: [PATCH 1/2] Fix Hungarian working Saturdays for 2020. Per below sources, the August working Saturday for 2020 is 1 week after the long weekend. https://helpers.hu/other/bank-holidays-in-hungary-in-2020/ https://www.timeanddate.com/holidays/hungary/2020 The last time that National Day fell on a Thursday was 2015. On this occasion the working Saturday was two weeks prior to the long weekend. Assumedly that's where we derived our logic from So unclear what the logic is for deciding where the working Saturday falls, it may not even be algorithmic. This change ensures we get the right date for 2020. --- .../strata/basics/date/GlobalHolidayCalendars.java | 6 +++++- .../strata/basics/date/GlobalHolidayCalendarsTest.java | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/modules/basics/src/main/java/com/opengamma/strata/basics/date/GlobalHolidayCalendars.java b/modules/basics/src/main/java/com/opengamma/strata/basics/date/GlobalHolidayCalendars.java index d19b0ab6c0..ae71ff6868 100644 --- a/modules/basics/src/main/java/com/opengamma/strata/basics/date/GlobalHolidayCalendars.java +++ b/modules/basics/src/main/java/com/opengamma/strata/basics/date/GlobalHolidayCalendars.java @@ -1028,6 +1028,7 @@ static ImmutableHolidayCalendar generateJohannesburg() { // http://www.ucmsgroup.hu/newsletter/public-holiday-and-related-work-schedule-changes-in-2015/ // http://www.ucmsgroup.hu/newsletter/public-holiday-and-related-work-schedule-changes-in-2014/ // https://www.bse.hu/Products-and-Services/Trading-information/tranding-calendar-2019 + // https://www.bse.hu/Products-and-Services/Trading-information/trading-calendar-2020 static ImmutableHolidayCalendar generateBudapest() { List holidays = new ArrayList<>(2000); Set workDays = new HashSet<>(500); @@ -1047,7 +1048,10 @@ static ImmutableHolidayCalendar generateBudapest() { // pentecost monday holidays.add(easter(year).plusDays(50)); // state foundation day - addDateWithHungarianBridging(date(year, 8, 20), 0, -2, holidays, workDays); + // in 2015 the working saturday was 2 weeks before, in 2020 it was 1 week after + // unclear what the logic behind this is, + int foundationDayThuRelativeWeeks = year == 2020 ? 1 : -2 ; + addDateWithHungarianBridging(date(year, 8, 20), 0 , foundationDayThuRelativeWeeks, holidays, workDays); // national day addDateWithHungarianBridging(date(year, 10, 23), 0, -1, holidays, workDays); // all saints day diff --git a/modules/basics/src/test/java/com/opengamma/strata/basics/date/GlobalHolidayCalendarsTest.java b/modules/basics/src/test/java/com/opengamma/strata/basics/date/GlobalHolidayCalendarsTest.java index 752addd386..f73e214fc5 100644 --- a/modules/basics/src/test/java/com/opengamma/strata/basics/date/GlobalHolidayCalendarsTest.java +++ b/modules/basics/src/test/java/com/opengamma/strata/basics/date/GlobalHolidayCalendarsTest.java @@ -899,6 +899,9 @@ public static Object[][] data_hubu() { {2016, mds(2016, md(1, 1), md(3, 14), md(3, 15), md(3, 28), md(5, 1), md(5, 16), md(10, 31), md(11, 1), md(12, 24), md(12, 25), md(12, 26)), ImmutableList.of(date(2016, 3, 5), date(2016, 10, 15))}, + {2020, mds(2020, md(1, 1), md(3, 15), md(4, 10), md(4, 13), md(5, 1), md(6, 1), + md(8, 20), md(8, 21), md(10, 23), md(12, 24), md(12, 25), md(12, 26)), + ImmutableList.of(date(2020, 8, 29), date(2020, 12, 12))}, }; } From 8d94b9cff621b68c134f43290db4f9997ece4fab Mon Sep 17 00:00:00 2001 From: Brian Weller Date: Fri, 2 Oct 2020 20:40:07 +0100 Subject: [PATCH 2/2] Checkstyle --- .../opengamma/strata/basics/date/GlobalHolidayCalendars.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/basics/src/main/java/com/opengamma/strata/basics/date/GlobalHolidayCalendars.java b/modules/basics/src/main/java/com/opengamma/strata/basics/date/GlobalHolidayCalendars.java index ae71ff6868..5be1135cfe 100644 --- a/modules/basics/src/main/java/com/opengamma/strata/basics/date/GlobalHolidayCalendars.java +++ b/modules/basics/src/main/java/com/opengamma/strata/basics/date/GlobalHolidayCalendars.java @@ -1050,7 +1050,7 @@ static ImmutableHolidayCalendar generateBudapest() { // state foundation day // in 2015 the working saturday was 2 weeks before, in 2020 it was 1 week after // unclear what the logic behind this is, - int foundationDayThuRelativeWeeks = year == 2020 ? 1 : -2 ; + int foundationDayThuRelativeWeeks = year == 2020 ? 1 : -2; addDateWithHungarianBridging(date(year, 8, 20), 0 , foundationDayThuRelativeWeeks, holidays, workDays); // national day addDateWithHungarianBridging(date(year, 10, 23), 0, -1, holidays, workDays);