public void test_serialization() { FxIndexObservation test = FxIndexObservation.of(GBP_USD_WM, FIXING_DATE, REF_DATA); assertSerialization(test); }
private SimpleRatesProvider createProvider(LocalDate valDate) { DiscountFactors mockDf = mock(DiscountFactors.class); when(mockDf.discountFactor(PAYMENT_DATE_1)).thenReturn(DISCOUNT_FACTOR); FxIndexRates mockFxRates = mock(FxIndexRates.class); when(mockFxRates.rate(FxIndexObservation.of(GBP_USD_WM, FX_DATE_1, REF_DATA), GBP)).thenReturn(RATE_FX); SimpleRatesProvider prov = new SimpleRatesProvider(valDate); prov.setDayCount(DAY_COUNT); prov.setDiscountFactors(mockDf); prov.setFxIndexRates(mockFxRates); return prov; }
public void test_of() { FxIndexObservation test = FxIndexObservation.of(GBP_USD_WM, FIXING_DATE, REF_DATA); assertEquals(test.getIndex(), GBP_USD_WM); assertEquals(test.getFixingDate(), FIXING_DATE); assertEquals(test.getMaturityDate(), MATURITY_DATE); assertEquals(test.getCurrencyPair(), GBP_USD_WM.getCurrencyPair()); assertEquals(test.toString(), "FxIndexObservation[GBP/USD-WM on 2016-02-22]"); }
public void coverage() { FxReset test = FxReset.of(FxIndexObservation.of(EUR_GBP_ECB, DATE_2014_06_30, REF_DATA), GBP); coverImmutableBean(test); FxReset test2 = FxReset.of(FxIndexObservation.of(EUR_USD_ECB, date(2014, 1, 15), REF_DATA), USD); coverBeanEquals(test, test2); FxReset test3 = FxReset.of(FxIndexObservation.of(EUR_USD_ECB, date(2014, 1, 15), REF_DATA), EUR); coverBeanEquals(test2, test3); }
public void test_serialization() { FxResetNotionalExchange test = FxResetNotionalExchange.of( CurrencyAmount.of(USD, 1000d), DATE_2014_06_30, FxIndexObservation.of(GBP_USD_WM, DATE_2014_03_28, REF_DATA)); assertSerialization(test); }
@Override public ResolvedFxNdf resolve(ReferenceData refData) { LocalDate fixingDate = index.calculateFixingFromMaturity(paymentDate, refData); return ResolvedFxNdf.builder() .settlementCurrencyNotional(settlementCurrencyNotional) .agreedFxRate(agreedFxRate) .observation(FxIndexObservation.of(index, fixingDate, refData)) .paymentDate(paymentDate) .build(); }
public void coverage() { FxResetNotionalExchange test = FxResetNotionalExchange.of( CurrencyAmount.of(USD, 1000d), DATE_2014_03_28, FxIndexObservation.of(GBP_USD_WM, DATE_2014_03_28, REF_DATA)); coverImmutableBean(test); FxResetNotionalExchange test2 = FxResetNotionalExchange.of( CurrencyAmount.of(EUR, 2000d), DATE_2014_06_30, FxIndexObservation.of(EUR_USD_ECB, DATE_2014_06_30, REF_DATA)); coverBeanEquals(test, test2); }
public void test_adjustPaymentDate() { FxResetNotionalExchange test = FxResetNotionalExchange.of( CurrencyAmount.of(USD, 1000d), DATE_2014_06_30, FxIndexObservation.of(GBP_USD_WM, DATE_2014_03_28, REF_DATA)); FxResetNotionalExchange expected = FxResetNotionalExchange.of( CurrencyAmount.of(USD, 1000d), DATE_2014_06_30.plusDays(2), FxIndexObservation.of(GBP_USD_WM, DATE_2014_03_28, REF_DATA)); assertEquals(test.adjustPaymentDate(TemporalAdjusters.ofDateAdjuster(d -> d.plusDays(0))), test); assertEquals(test.adjustPaymentDate(TemporalAdjusters.ofDateAdjuster(d -> d.plusDays(2))), expected); }
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_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_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))); }
static ResolvedFxNdf sut() { return ResolvedFxNdf.builder() .agreedFxRate(FX_RATE) .observation(FxIndexObservation.of(GBP_USD_WM, FIXING_DATE, REF_DATA)) .paymentDate(PAYMENT_DATE) .settlementCurrencyNotional(CURRENCY_NOTIONAL) .build(); }
public void test_presentValueSensitivity_ended() { ResolvedFxNdf ndf = ResolvedFxNdf.builder() .settlementCurrencyNotional(CURRENCY_NOTIONAL) .agreedFxRate(FxRate.of(USD, KRW, FX_RATE)) .observation(FxIndexObservation.of(INDEX, FIXING_DATE_PAST, REF_DATA)) .paymentDate(PAYMENT_DATE_PAST) .build(); PointSensitivities computed = PRICER.presentValueSensitivity(ndf, PROVIDER); assertEquals(computed, PointSensitivities.empty()); }
public void test_forwardValue() { FxRate computed = PRICER.forwardFxRate(NDF, PROVIDER); ResolvedFxNdf ndfFwd = ResolvedFxNdf.builder() .settlementCurrencyNotional(CURRENCY_NOTIONAL) .agreedFxRate(computed) .observation(FxIndexObservation.of(INDEX, FIXING_DATE, REF_DATA)) .paymentDate(PAYMENT_DATE) .build(); CurrencyAmount computedFwd = PRICER.presentValue(ndfFwd, PROVIDER); assertEquals(computedFwd.getAmount(), 0d, NOMINAL_USD * TOL); }
public void test_presentValue_ended() { ResolvedFxNdf ndf = ResolvedFxNdf.builder() .settlementCurrencyNotional(CURRENCY_NOTIONAL) .agreedFxRate(FxRate.of(USD, KRW, FX_RATE)) .observation(FxIndexObservation.of(INDEX, FIXING_DATE_PAST, REF_DATA)) .paymentDate(PAYMENT_DATE_PAST) .build(); CurrencyAmount computed = PRICER.presentValue(ndf, PROVIDER); assertEquals(computed.getAmount(), 0d); }
static ResolvedFxNdf sut2() { FxRate fxRate = FxRate.of(GBP, EUR, 1.1d); return ResolvedFxNdf.builder() .agreedFxRate(fxRate) .observation(FxIndexObservation.of(EUR_GBP_ECB, FIXING_DATE, REF_DATA)) .paymentDate(PAYMENT_DATE) .settlementCurrencyNotional(CURRENCY_NOTIONAL) .build(); }
public void test_builder_wrongCurrency() { CurrencyAmount currencyNotional = CurrencyAmount.of(EUR, NOTIONAL); assertThrowsIllegalArg(() -> ResolvedFxNdf.builder() .agreedFxRate(FX_RATE) .observation(FxIndexObservation.of(GBP_USD_WM, FIXING_DATE, REF_DATA)) .paymentDate(PAYMENT_DATE) .settlementCurrencyNotional(currencyNotional) .build()); }
public void test_builder_wrongRate() { FxRate fxRate = FxRate.of(GBP, EUR, 1.1d); assertThrowsIllegalArg(() -> ResolvedFxNdf.builder() .agreedFxRate(fxRate) .observation(FxIndexObservation.of(GBP_USD_WM, FIXING_DATE, REF_DATA)) .paymentDate(PAYMENT_DATE) .settlementCurrencyNotional(CURRENCY_NOTIONAL) .build()); }
public void test_invalidCurrency() { assertThrowsIllegalArg(() -> FxResetNotionalExchange.meta().builder() .set(FxResetNotionalExchange.meta().paymentDate(), DATE_2014_06_30) .set(FxResetNotionalExchange.meta().notionalAmount(), CurrencyAmount.of(GBP, 1000d)) .set(FxResetNotionalExchange.meta().observation(), FxIndexObservation.of(EUR_USD_ECB, DATE_2014_03_28, REF_DATA)) .build()); }