FxIndex fxIndex = fxIndexOpt.get(); FxResetCalculation.Builder fxResetBuilder = FxResetCalculation.builder(); fxResetBuilder.index(fxIndex); fxResetBuilder.referenceCurrency(notionalCurrencyOpt.orElse(fxIndex.getCurrencyPair().other(currency))); fxFixingRelativeToOpt.ifPresent(v -> fxResetBuilder.fixingRelativeTo(v));
public void test_resolve_initial_notional_override() { FxResetCalculation base = FxResetCalculation.builder() .index(EUR_GBP_ECB) .referenceCurrency(GBP) .fixingDateOffset(MINUS_TWO_DAYS) .initialNotionalValue(100000d) .build(); Optional<FxReset> fxResetFirstPeriod = base.resolve(REF_DATA).apply(0, SchedulePeriod.of(DATE_2014_03_31, DATE_2014_06_30)); assertFalse(fxResetFirstPeriod.isPresent()); Optional<FxReset> fxResetSecondPeriod = base.resolve(REF_DATA).apply(1, SchedulePeriod.of(DATE_2014_03_31, DATE_2014_06_30)); assertTrue(fxResetSecondPeriod.isPresent()); }
public void test_builder_defaults() { FxResetCalculation test = FxResetCalculation.builder() .index(EUR_GBP_ECB) .referenceCurrency(GBP) .build(); assertEquals(test.getIndex(), EUR_GBP_ECB); assertEquals(test.getReferenceCurrency(), GBP); assertEquals(test.getFixingDateOffset(), EUR_GBP_ECB.getFixingDateOffset()); assertEquals(test.getFixingRelativeTo(), FxResetFixingRelativeTo.PERIOD_START); }
.fxReset(FxResetCalculation.builder() .referenceCurrency(EUR) .index(EUR_GBP_ECB) .fixingDateOffset(MINUS_TWO_DAYS) .build())
.fixingDateOffset(DaysAdjustment.ofBusinessDays(-2, CalendarUSD.NYC, BDA_P)) .referenceCurrency(EUR) .index(EUR_USD_WM) .initialNotionalValue(initialNotional) .build())
.fxReset(FxResetCalculation.builder() .referenceCurrency(EUR) .index(EUR_GBP_ECB) .fixingDateOffset(MINUS_TWO_DAYS) .build())
public void test_builder_FxResetSetsFlags() { FxResetCalculation fxReset = FxResetCalculation.builder() .referenceCurrency(GBP) .index(GBP_USD_WM) .fixingDateOffset(DaysAdjustment.ofBusinessDays(-2, GBLO)) .build(); NotionalSchedule test = NotionalSchedule.builder() .currency(USD) .amount(ValueSchedule.of(2000d)) .intermediateExchange(true) .finalExchange(true) .fxReset(fxReset) .build(); assertEquals(test.getCurrency(), USD); assertEquals(test.getAmount(), ValueSchedule.of(2000d)); assertEquals(test.getFxReset(), Optional.of(fxReset)); assertEquals(test.isInitialExchange(), false); assertEquals(test.isIntermediateExchange(), true); assertEquals(test.isFinalExchange(), true); }
public void test_builder_invalidCurrencyFxReset() { assertThrowsIllegalArg(() -> NotionalSchedule.builder() .currency(USD) .amount(ValueSchedule.of(2000d)) .fxReset(FxResetCalculation.builder() .referenceCurrency(USD) .index(GBP_USD_WM) .fixingDateOffset(DaysAdjustment.ofBusinessDays(-2, GBLO)) .build()) .build()); assertThrowsIllegalArg(() -> NotionalSchedule.builder() .currency(EUR) .amount(ValueSchedule.of(2000d)) .fxReset(FxResetCalculation.builder() .referenceCurrency(USD) .index(GBP_USD_WM) .fixingDateOffset(DaysAdjustment.ofBusinessDays(-2, GBLO)) .build()) .build()); }
public void coverage() { NotionalSchedule test = NotionalSchedule.of(GBP, 1000d); coverImmutableBean(test); NotionalSchedule test2 = NotionalSchedule.builder() .currency(USD) .amount(ValueSchedule.of(2000d)) .fxReset(FxResetCalculation.builder() .referenceCurrency(GBP) .index(GBP_USD_WM) .fixingDateOffset(DaysAdjustment.ofBusinessDays(-2, GBLO)) .build()) .initialExchange(true) .intermediateExchange(true) .finalExchange(true) .build(); coverBeanEquals(test, test2); }
public void coverage() { FxResetCalculation test = FxResetCalculation.builder() .index(EUR_GBP_ECB) .referenceCurrency(GBP) .fixingDateOffset(MINUS_TWO_DAYS) .build(); coverImmutableBean(test); FxResetCalculation test2 = FxResetCalculation.builder() .index(EUR_USD_ECB) .referenceCurrency(Currency.EUR) .fixingDateOffset(MINUS_THREE_DAYS) .fixingRelativeTo(FxResetFixingRelativeTo.PERIOD_END) .build(); coverBeanEquals(test, test2); }
public void test_resolve_beforeStart_threeDays() { FxResetCalculation base = FxResetCalculation.builder() .index(EUR_GBP_ECB) .referenceCurrency(GBP) .fixingDateOffset(MINUS_THREE_DAYS) .build(); Optional<FxReset> test = base.resolve(REF_DATA).apply(0, SchedulePeriod.of(DATE_2014_03_31, DATE_2014_06_30)); assertEquals(test, Optional.of(FxReset.of(FxIndexObservation.of(EUR_GBP_ECB, date(2014, 3, 26), REF_DATA), GBP))); }
public void test_resolve_beforeStart_weekend() { FxResetCalculation base = FxResetCalculation.builder() .index(EUR_GBP_ECB) .referenceCurrency(GBP) .fixingDateOffset(MINUS_TWO_DAYS) .build(); Optional<FxReset> test = base.resolve(REF_DATA).apply(0, SchedulePeriod.of(DATE_2014_03_31, DATE_2014_06_30)); assertEquals(test, Optional.of(FxReset.of(FxIndexObservation.of(EUR_GBP_ECB, date(2014, 3, 27), REF_DATA), GBP))); }
public void test_invalidCurrency() { assertThrowsIllegalArg(() -> FxResetCalculation.builder() .index(EUR_USD_ECB) .referenceCurrency(GBP) .fixingDateOffset(MINUS_TWO_DAYS) .build()); }
public void test_resolve_beforeEnd_weekend() { FxResetCalculation base = FxResetCalculation.builder() .index(EUR_GBP_ECB) .referenceCurrency(GBP) .fixingDateOffset(MINUS_TWO_DAYS) .fixingRelativeTo(FxResetFixingRelativeTo.PERIOD_END) .build(); Optional<FxReset> test = base.resolve(REF_DATA).apply(0, SchedulePeriod.of(DATE_2014_03_31, DATE_2014_06_30)); assertEquals(test, Optional.of(FxReset.of(FxIndexObservation.of(EUR_GBP_ECB, date(2014, 6, 26), REF_DATA), GBP))); }
public void test_builder() { FxResetCalculation test = FxResetCalculation.builder() .index(EUR_GBP_ECB) .referenceCurrency(GBP) .fixingDateOffset(MINUS_TWO_DAYS) .fixingRelativeTo(FxResetFixingRelativeTo.PERIOD_START) .build(); assertEquals(test.getIndex(), EUR_GBP_ECB); assertEquals(test.getReferenceCurrency(), GBP); assertEquals(test.getFixingDateOffset(), MINUS_TWO_DAYS); assertEquals(test.getFixingRelativeTo(), FxResetFixingRelativeTo.PERIOD_START); }
public void test_serialization() { FxResetCalculation test = FxResetCalculation.builder() .index(EUR_GBP_ECB) .referenceCurrency(GBP) .fixingDateOffset(MINUS_TWO_DAYS) .build(); assertSerialization(test); }