From 2ab683bf7f1adc6581ff5387cea79e65802b26a5 Mon Sep 17 00:00:00 2001 From: Marc Henrard Date: Tue, 1 Dec 2020 09:53:04 +0100 Subject: [PATCH] Prod-5497: Adding ESTR OIS conventions --- .../type/FixedOvernightSwapConventions.java | 22 ++++++++++++++++++- ...StandardFixedOvernightSwapConventions.java | 18 +++++++++++++++ .../FixedOvernightSwapConventionsTest.java | 11 ++++++++++ 3 files changed, 50 insertions(+), 1 deletion(-) diff --git a/modules/product/src/main/java/com/opengamma/strata/product/swap/type/FixedOvernightSwapConventions.java b/modules/product/src/main/java/com/opengamma/strata/product/swap/type/FixedOvernightSwapConventions.java index ebe7c8aebe..8d291dcac0 100644 --- a/modules/product/src/main/java/com/opengamma/strata/product/swap/type/FixedOvernightSwapConventions.java +++ b/modules/product/src/main/java/com/opengamma/strata/product/swap/type/FixedOvernightSwapConventions.java @@ -84,7 +84,7 @@ public final class FixedOvernightSwapConventions { FixedOvernightSwapConvention.of(StandardFixedOvernightSwapConventions.EUR_FIXED_TERM_EONIA_OIS.getName()); /** - * The 'EUR-FIXED-1Y-EONIA_OIS' swap convention. + * The 'EUR-FIXED-1Y-EONIA-OIS' swap convention. *

* EUR fixed vs EONIA OIS swap for terms greater than one year. * Both legs pay annually and use day count 'Act/360'. @@ -92,6 +92,26 @@ public final class FixedOvernightSwapConventions { */ public static final FixedOvernightSwapConvention EUR_FIXED_1Y_EONIA_OIS = FixedOvernightSwapConvention.of(StandardFixedOvernightSwapConventions.EUR_FIXED_1Y_EONIA_OIS.getName()); + + /** + * The 'EUR-FIXED-TERM-ESTR-OIS' swap convention. + *

+ * EUR fixed vs ESTR OIS swap for terms less than or equal to one year. + * Both legs pay once at the end and use day count 'Act/360'. + * The spot date offset is 2 days and the payment date offset is 2 days. + */ + public static final FixedOvernightSwapConvention EUR_FIXED_TERM_ESTR_OIS = + FixedOvernightSwapConvention.of(StandardFixedOvernightSwapConventions.EUR_FIXED_TERM_ESTR_OIS.getName()); + + /** + * The 'EUR-FIXED-1Y-ESTR-OIS' swap convention. + *

+ * EUR fixed vs ESTR OIS swap for terms greater than one year. + * Both legs pay annually and use day count 'Act/360'. + * The spot date offset is 2 days and the payment date offset is 2 days. + */ + public static final FixedOvernightSwapConvention EUR_FIXED_1Y_ESTR_OIS = + FixedOvernightSwapConvention.of(StandardFixedOvernightSwapConventions.EUR_FIXED_1Y_ESTR_OIS.getName()); //------------------------------------------------------------------------- /** diff --git a/modules/product/src/main/java/com/opengamma/strata/product/swap/type/StandardFixedOvernightSwapConventions.java b/modules/product/src/main/java/com/opengamma/strata/product/swap/type/StandardFixedOvernightSwapConventions.java index 8b19734d60..2577189b78 100644 --- a/modules/product/src/main/java/com/opengamma/strata/product/swap/type/StandardFixedOvernightSwapConventions.java +++ b/modules/product/src/main/java/com/opengamma/strata/product/swap/type/StandardFixedOvernightSwapConventions.java @@ -10,6 +10,7 @@ import static com.opengamma.strata.basics.date.DayCounts.ACT_365F; import static com.opengamma.strata.basics.index.OvernightIndices.CHF_SARON; import static com.opengamma.strata.basics.index.OvernightIndices.EUR_EONIA; +import static com.opengamma.strata.basics.index.OvernightIndices.EUR_ESTR; import static com.opengamma.strata.basics.index.OvernightIndices.GBP_SONIA; import static com.opengamma.strata.basics.index.OvernightIndices.JPY_TONAR; import static com.opengamma.strata.basics.index.OvernightIndices.USD_FED_FUND; @@ -98,6 +99,23 @@ final class StandardFixedOvernightSwapConventions { */ public static final FixedOvernightSwapConvention EUR_FIXED_1Y_EONIA_OIS = makeConvention("EUR-FIXED-1Y-EONIA-OIS", EUR_EONIA, ACT_360, P12M, 1, 2); + /** + * EUR fixed vs ESTR OIS swap for terms less than or equal to one year. + *

+ * Both legs pay once at the end and use day count 'Act/360'. + * The spot date offset is 2 days and the payment date offset is 2 days. + */ + public static final FixedOvernightSwapConvention EUR_FIXED_TERM_ESTR_OIS = + makeConvention("EUR-FIXED-TERM-ESTR-OIS", EUR_ESTR, ACT_360, TERM, 2, 2); + + /** + * EUR fixed vs ESTR OIS swap for terms greater than one year. + *

+ * Both legs pay annually and use day count 'Act/360'. + * The spot date offset is 2 days and the payment date offset is 2 days. + */ + public static final FixedOvernightSwapConvention EUR_FIXED_1Y_ESTR_OIS = + makeConvention("EUR-FIXED-1Y-ESTR-OIS", EUR_ESTR, ACT_360, P12M, 2, 2); //------------------------------------------------------------------------- /** diff --git a/modules/product/src/test/java/com/opengamma/strata/product/swap/type/FixedOvernightSwapConventionsTest.java b/modules/product/src/test/java/com/opengamma/strata/product/swap/type/FixedOvernightSwapConventionsTest.java index 8e29c0440a..0472085664 100644 --- a/modules/product/src/test/java/com/opengamma/strata/product/swap/type/FixedOvernightSwapConventionsTest.java +++ b/modules/product/src/test/java/com/opengamma/strata/product/swap/type/FixedOvernightSwapConventionsTest.java @@ -47,6 +47,8 @@ public static Object[][] data_spot_lag() { {FixedOvernightSwapConventions.CHF_FIXED_1Y_SARON_OIS, 2}, {FixedOvernightSwapConventions.EUR_FIXED_TERM_EONIA_OIS, 2}, {FixedOvernightSwapConventions.EUR_FIXED_1Y_EONIA_OIS, 2}, + {FixedOvernightSwapConventions.EUR_FIXED_TERM_ESTR_OIS, 2}, + {FixedOvernightSwapConventions.EUR_FIXED_1Y_ESTR_OIS, 2}, {FixedOvernightSwapConventions.GBP_FIXED_TERM_SONIA_OIS, 0}, {FixedOvernightSwapConventions.GBP_FIXED_1Y_SONIA_OIS, 0}, {FixedOvernightSwapConventions.JPY_FIXED_TERM_TONAR_OIS, 2}, @@ -69,6 +71,8 @@ public static Object[][] data_period() { {FixedOvernightSwapConventions.CHF_FIXED_1Y_SARON_OIS, Frequency.P12M}, {FixedOvernightSwapConventions.EUR_FIXED_TERM_EONIA_OIS, Frequency.TERM}, {FixedOvernightSwapConventions.EUR_FIXED_1Y_EONIA_OIS, Frequency.P12M}, + {FixedOvernightSwapConventions.EUR_FIXED_TERM_ESTR_OIS, Frequency.TERM}, + {FixedOvernightSwapConventions.EUR_FIXED_1Y_ESTR_OIS, Frequency.P12M}, {FixedOvernightSwapConventions.GBP_FIXED_TERM_SONIA_OIS, Frequency.TERM}, {FixedOvernightSwapConventions.GBP_FIXED_1Y_SONIA_OIS, Frequency.P12M}, {FixedOvernightSwapConventions.JPY_FIXED_TERM_TONAR_OIS, Frequency.TERM}, @@ -97,6 +101,8 @@ public static Object[][] data_day_count() { {FixedOvernightSwapConventions.CHF_FIXED_1Y_SARON_OIS, DayCounts.ACT_360}, {FixedOvernightSwapConventions.EUR_FIXED_TERM_EONIA_OIS, DayCounts.ACT_360}, {FixedOvernightSwapConventions.EUR_FIXED_1Y_EONIA_OIS, DayCounts.ACT_360}, + {FixedOvernightSwapConventions.EUR_FIXED_TERM_ESTR_OIS, DayCounts.ACT_360}, + {FixedOvernightSwapConventions.EUR_FIXED_1Y_ESTR_OIS, DayCounts.ACT_360}, {FixedOvernightSwapConventions.GBP_FIXED_TERM_SONIA_OIS, DayCounts.ACT_365F}, {FixedOvernightSwapConventions.GBP_FIXED_1Y_SONIA_OIS, DayCounts.ACT_365F}, {FixedOvernightSwapConventions.JPY_FIXED_TERM_TONAR_OIS, DayCounts.ACT_365F}, @@ -119,6 +125,8 @@ public static Object[][] data_float_leg() { {FixedOvernightSwapConventions.CHF_FIXED_1Y_SARON_OIS, OvernightIndices.CHF_SARON}, {FixedOvernightSwapConventions.EUR_FIXED_TERM_EONIA_OIS, OvernightIndices.EUR_EONIA}, {FixedOvernightSwapConventions.EUR_FIXED_1Y_EONIA_OIS, OvernightIndices.EUR_EONIA}, + {FixedOvernightSwapConventions.EUR_FIXED_TERM_ESTR_OIS, OvernightIndices.EUR_ESTR}, + {FixedOvernightSwapConventions.EUR_FIXED_1Y_ESTR_OIS, OvernightIndices.EUR_ESTR}, {FixedOvernightSwapConventions.GBP_FIXED_TERM_SONIA_OIS, OvernightIndices.GBP_SONIA}, {FixedOvernightSwapConventions.GBP_FIXED_1Y_SONIA_OIS, OvernightIndices.GBP_SONIA}, {FixedOvernightSwapConventions.JPY_FIXED_TERM_TONAR_OIS, OvernightIndices.JPY_TONAR}, @@ -141,6 +149,8 @@ public static Object[][] data_day_convention() { {FixedOvernightSwapConventions.CHF_FIXED_1Y_SARON_OIS, BusinessDayConventions.MODIFIED_FOLLOWING}, {FixedOvernightSwapConventions.EUR_FIXED_TERM_EONIA_OIS, BusinessDayConventions.MODIFIED_FOLLOWING}, {FixedOvernightSwapConventions.EUR_FIXED_1Y_EONIA_OIS, BusinessDayConventions.MODIFIED_FOLLOWING}, + {FixedOvernightSwapConventions.EUR_FIXED_TERM_ESTR_OIS, BusinessDayConventions.MODIFIED_FOLLOWING}, + {FixedOvernightSwapConventions.EUR_FIXED_1Y_ESTR_OIS, BusinessDayConventions.MODIFIED_FOLLOWING}, {FixedOvernightSwapConventions.GBP_FIXED_TERM_SONIA_OIS, BusinessDayConventions.MODIFIED_FOLLOWING}, {FixedOvernightSwapConventions.GBP_FIXED_1Y_SONIA_OIS, BusinessDayConventions.MODIFIED_FOLLOWING}, {FixedOvernightSwapConventions.JPY_FIXED_TERM_TONAR_OIS, BusinessDayConventions.MODIFIED_FOLLOWING}, @@ -160,6 +170,7 @@ public static Object[][] data_stub_on() { {FixedOvernightSwapConventions.USD_FIXED_1Y_FED_FUND_OIS, Tenor.TENOR_18M}, {FixedOvernightSwapConventions.CHF_FIXED_1Y_SARON_OIS, Tenor.TENOR_18M}, {FixedOvernightSwapConventions.EUR_FIXED_1Y_EONIA_OIS, Tenor.TENOR_18M}, + {FixedOvernightSwapConventions.EUR_FIXED_1Y_ESTR_OIS, Tenor.TENOR_18M}, {FixedOvernightSwapConventions.GBP_FIXED_1Y_SONIA_OIS, Tenor.TENOR_18M}, {FixedOvernightSwapConventions.JPY_FIXED_1Y_TONAR_OIS, Tenor.TENOR_18M}, };