From afc173eb150fcd9dcd962d97c64b7542273ca448 Mon Sep 17 00:00:00 2001 From: BenHamilton-Brown Date: Thu, 14 Jan 2021 12:28:02 +0000 Subject: [PATCH 1/2] Add isPaymentFixedAt for SwapPaymentEvents --- .../strata/product/swap/FxResetNotionalExchange.java | 5 +++++ .../strata/product/swap/NotionalExchange.java | 5 +++++ .../strata/product/swap/SwapPaymentEvent.java | 11 +++++++++++ .../product/swap/FxResetNotionalExchangeTest.java | 10 ++++++++++ .../strata/product/swap/NotionalExchangeTest.java | 10 ++++++++++ 5 files changed, 41 insertions(+) diff --git a/modules/product/src/main/java/com/opengamma/strata/product/swap/FxResetNotionalExchange.java b/modules/product/src/main/java/com/opengamma/strata/product/swap/FxResetNotionalExchange.java index 6e9490c927..d7d7bb5364 100644 --- a/modules/product/src/main/java/com/opengamma/strata/product/swap/FxResetNotionalExchange.java +++ b/modules/product/src/main/java/com/opengamma/strata/product/swap/FxResetNotionalExchange.java @@ -163,6 +163,11 @@ public FxResetNotionalExchange adjustPaymentDate(TemporalAdjuster adjuster) { return adjusted.equals(paymentDate) ? this : new FxResetNotionalExchange(notionalAmount, adjusted, observation); } + @Override + public boolean isPaymentFixedAt(LocalDate date) { + return !observation.getFixingDate().isAfter(date); + } + //------------------------- AUTOGENERATED START ------------------------- /** * The meta-bean for {@code FxResetNotionalExchange}. diff --git a/modules/product/src/main/java/com/opengamma/strata/product/swap/NotionalExchange.java b/modules/product/src/main/java/com/opengamma/strata/product/swap/NotionalExchange.java index 13cb8395b8..6110a38b0a 100644 --- a/modules/product/src/main/java/com/opengamma/strata/product/swap/NotionalExchange.java +++ b/modules/product/src/main/java/com/opengamma/strata/product/swap/NotionalExchange.java @@ -106,6 +106,11 @@ public NotionalExchange adjustPaymentDate(TemporalAdjuster adjuster) { return of(payment.getValue(), adjusted); } + @Override + public boolean isPaymentFixedAt(LocalDate date) { + return true; + } + //------------------------- AUTOGENERATED START ------------------------- /** * The meta-bean for {@code NotionalExchange}. diff --git a/modules/product/src/main/java/com/opengamma/strata/product/swap/SwapPaymentEvent.java b/modules/product/src/main/java/com/opengamma/strata/product/swap/SwapPaymentEvent.java index 1399dd8229..c25ed83a5d 100644 --- a/modules/product/src/main/java/com/opengamma/strata/product/swap/SwapPaymentEvent.java +++ b/modules/product/src/main/java/com/opengamma/strata/product/swap/SwapPaymentEvent.java @@ -56,4 +56,15 @@ public interface SwapPaymentEvent { */ public abstract SwapPaymentEvent adjustPaymentDate(TemporalAdjuster adjuster); + //------------------------------------------------------------------------- + /** + * Checks whether the payment amount of an event is known at a given date. + *

+ * Each payment event may be a known amount at a given date, else it could be fixed at a later date + * + * @param date the date to check whether payment amount is known or not + * @return true if payment is fixed at given date + */ + public abstract boolean isPaymentFixedAt(LocalDate date); + } diff --git a/modules/product/src/test/java/com/opengamma/strata/product/swap/FxResetNotionalExchangeTest.java b/modules/product/src/test/java/com/opengamma/strata/product/swap/FxResetNotionalExchangeTest.java index 0aeb81db54..c6ccc6eba2 100644 --- a/modules/product/src/test/java/com/opengamma/strata/product/swap/FxResetNotionalExchangeTest.java +++ b/modules/product/src/test/java/com/opengamma/strata/product/swap/FxResetNotionalExchangeTest.java @@ -35,6 +35,7 @@ public class FxResetNotionalExchangeTest { private static final ReferenceData REF_DATA = ReferenceData.standard(); private static final LocalDate DATE_2014_03_28 = date(2014, 3, 28); private static final LocalDate DATE_2014_06_30 = date(2014, 6, 30); + private static final LocalDate DATE_2013_12_30 = date(2013, 12, 30); @Test public void test_of() { @@ -67,6 +68,15 @@ public void test_adjustPaymentDate() { assertThat(test.adjustPaymentDate(TemporalAdjusters.ofDateAdjuster(d -> d.plusDays(2)))).isEqualTo(expected); } + @Test + public void test_isPaymentFixedAt() { + FxResetNotionalExchange test = FxResetNotionalExchange.of( + CurrencyAmount.of(USD, 1000d), DATE_2014_06_30, FxIndexObservation.of(GBP_USD_WM, DATE_2014_03_28, REF_DATA)); + assertThat(test.isPaymentFixedAt(DATE_2014_06_30)).isTrue(); + assertThat(test.isPaymentFixedAt(DATE_2014_03_28)).isTrue(); + assertThat(test.isPaymentFixedAt(DATE_2013_12_30)).isFalse(); + } + //------------------------------------------------------------------------- @Test public void coverage() { diff --git a/modules/product/src/test/java/com/opengamma/strata/product/swap/NotionalExchangeTest.java b/modules/product/src/test/java/com/opengamma/strata/product/swap/NotionalExchangeTest.java index 0251004b63..96e5c62785 100644 --- a/modules/product/src/test/java/com/opengamma/strata/product/swap/NotionalExchangeTest.java +++ b/modules/product/src/test/java/com/opengamma/strata/product/swap/NotionalExchangeTest.java @@ -26,7 +26,9 @@ */ public class NotionalExchangeTest { + private static final LocalDate DATE_2013_06_30 = date(2013, 6, 30); private static final LocalDate DATE_2014_06_30 = date(2014, 6, 30); + private static final LocalDate DATE_2015_06_30 = date(2015, 6, 30); private static final CurrencyAmount GBP_1000 = CurrencyAmount.of(GBP, 1000d); @Test @@ -66,6 +68,14 @@ public void test_adjustPaymentDate() { assertThat(test.adjustPaymentDate(TemporalAdjusters.ofDateAdjuster(d -> d.plusDays(2)))).isEqualTo(expected); } + @Test + public void test_isPaymentFixedAt() { + NotionalExchange test = NotionalExchange.of(GBP_1000, DATE_2014_06_30); + assertThat(test.isPaymentFixedAt(DATE_2013_06_30)).isTrue(); + assertThat(test.isPaymentFixedAt(DATE_2014_06_30)).isTrue(); + assertThat(test.isPaymentFixedAt(DATE_2015_06_30)).isTrue(); + } + //------------------------------------------------------------------------- @Test public void coverage() { From 8d38a42ef1b8e6cc1cec3c6691a8eb86bd6969b3 Mon Sep 17 00:00:00 2001 From: BenHamilton-Brown Date: Thu, 14 Jan 2021 15:52:01 +0000 Subject: [PATCH 2/2] Add isPaymentFixedAt for SwapPaymentEvents --- .../strata/product/swap/FxResetNotionalExchange.java | 2 +- .../com/opengamma/strata/product/swap/NotionalExchange.java | 2 +- .../com/opengamma/strata/product/swap/SwapPaymentEvent.java | 2 +- .../strata/product/swap/FxResetNotionalExchangeTest.java | 6 +++--- .../opengamma/strata/product/swap/NotionalExchangeTest.java | 6 +++--- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/modules/product/src/main/java/com/opengamma/strata/product/swap/FxResetNotionalExchange.java b/modules/product/src/main/java/com/opengamma/strata/product/swap/FxResetNotionalExchange.java index d7d7bb5364..98ff5ad295 100644 --- a/modules/product/src/main/java/com/opengamma/strata/product/swap/FxResetNotionalExchange.java +++ b/modules/product/src/main/java/com/opengamma/strata/product/swap/FxResetNotionalExchange.java @@ -164,7 +164,7 @@ public FxResetNotionalExchange adjustPaymentDate(TemporalAdjuster adjuster) { } @Override - public boolean isPaymentFixedAt(LocalDate date) { + public boolean isKnownAmountAt(LocalDate date) { return !observation.getFixingDate().isAfter(date); } diff --git a/modules/product/src/main/java/com/opengamma/strata/product/swap/NotionalExchange.java b/modules/product/src/main/java/com/opengamma/strata/product/swap/NotionalExchange.java index 6110a38b0a..1dfc906bc8 100644 --- a/modules/product/src/main/java/com/opengamma/strata/product/swap/NotionalExchange.java +++ b/modules/product/src/main/java/com/opengamma/strata/product/swap/NotionalExchange.java @@ -107,7 +107,7 @@ public NotionalExchange adjustPaymentDate(TemporalAdjuster adjuster) { } @Override - public boolean isPaymentFixedAt(LocalDate date) { + public boolean isKnownAmountAt(LocalDate date) { return true; } diff --git a/modules/product/src/main/java/com/opengamma/strata/product/swap/SwapPaymentEvent.java b/modules/product/src/main/java/com/opengamma/strata/product/swap/SwapPaymentEvent.java index c25ed83a5d..ddb7f4630d 100644 --- a/modules/product/src/main/java/com/opengamma/strata/product/swap/SwapPaymentEvent.java +++ b/modules/product/src/main/java/com/opengamma/strata/product/swap/SwapPaymentEvent.java @@ -65,6 +65,6 @@ public interface SwapPaymentEvent { * @param date the date to check whether payment amount is known or not * @return true if payment is fixed at given date */ - public abstract boolean isPaymentFixedAt(LocalDate date); + public abstract boolean isKnownAmountAt(LocalDate date); } diff --git a/modules/product/src/test/java/com/opengamma/strata/product/swap/FxResetNotionalExchangeTest.java b/modules/product/src/test/java/com/opengamma/strata/product/swap/FxResetNotionalExchangeTest.java index c6ccc6eba2..ecd2a8c1c2 100644 --- a/modules/product/src/test/java/com/opengamma/strata/product/swap/FxResetNotionalExchangeTest.java +++ b/modules/product/src/test/java/com/opengamma/strata/product/swap/FxResetNotionalExchangeTest.java @@ -72,9 +72,9 @@ public void test_adjustPaymentDate() { public void test_isPaymentFixedAt() { FxResetNotionalExchange test = FxResetNotionalExchange.of( CurrencyAmount.of(USD, 1000d), DATE_2014_06_30, FxIndexObservation.of(GBP_USD_WM, DATE_2014_03_28, REF_DATA)); - assertThat(test.isPaymentFixedAt(DATE_2014_06_30)).isTrue(); - assertThat(test.isPaymentFixedAt(DATE_2014_03_28)).isTrue(); - assertThat(test.isPaymentFixedAt(DATE_2013_12_30)).isFalse(); + assertThat(test.isKnownAmountAt(DATE_2014_06_30)).isTrue(); + assertThat(test.isKnownAmountAt(DATE_2014_03_28)).isTrue(); + assertThat(test.isKnownAmountAt(DATE_2013_12_30)).isFalse(); } //------------------------------------------------------------------------- diff --git a/modules/product/src/test/java/com/opengamma/strata/product/swap/NotionalExchangeTest.java b/modules/product/src/test/java/com/opengamma/strata/product/swap/NotionalExchangeTest.java index 96e5c62785..6106cd160e 100644 --- a/modules/product/src/test/java/com/opengamma/strata/product/swap/NotionalExchangeTest.java +++ b/modules/product/src/test/java/com/opengamma/strata/product/swap/NotionalExchangeTest.java @@ -71,9 +71,9 @@ public void test_adjustPaymentDate() { @Test public void test_isPaymentFixedAt() { NotionalExchange test = NotionalExchange.of(GBP_1000, DATE_2014_06_30); - assertThat(test.isPaymentFixedAt(DATE_2013_06_30)).isTrue(); - assertThat(test.isPaymentFixedAt(DATE_2014_06_30)).isTrue(); - assertThat(test.isPaymentFixedAt(DATE_2015_06_30)).isTrue(); + assertThat(test.isKnownAmountAt(DATE_2013_06_30)).isTrue(); + assertThat(test.isKnownAmountAt(DATE_2014_06_30)).isTrue(); + assertThat(test.isKnownAmountAt(DATE_2015_06_30)).isTrue(); } //-------------------------------------------------------------------------