public virtual void test_rate_onValuation_fixing() { ForwardFxIndexRates test = ForwardFxIndexRates.of(GBP_USD_WM, FWD_RATES, SERIES); assertEquals(test.rate(OBS_VAL, GBP), RATE_VAL); assertEquals(test.rate(OBS_VAL, USD), 1d / RATE_VAL); }
public virtual void test_rate_afterValuation() { ForwardFxIndexRates test = ForwardFxIndexRates.of(GBP_USD_WM, FWD_RATES, SERIES); LocalDate maturityDate = GBP_USD_WM.calculateMaturityFromFixing(DATE_AFTER, REF_DATA); double dfCcyBaseAtMaturity = DFCURVE_GBP.discountFactor(maturityDate); double dfCcyCounterAtMaturity = DFCURVE_USD.discountFactor(maturityDate); double expected = FX_RATE.fxRate(GBP, USD) * (dfCcyBaseAtMaturity / dfCcyCounterAtMaturity); assertEquals(test.rate(OBS_AFTER, GBP), expected, 1e-8); assertEquals(test.rate(OBS_AFTER, USD), 1d / expected, 1e-8); }
public virtual void test_rate_nonMatchingCurrency() { ForwardFxIndexRates test = ForwardFxIndexRates.of(GBP_USD_WM, FWD_RATES, SERIES); assertThrowsIllegalArg(() => test.rate(OBS_EUR_VAL, EUR)); }
public virtual void test_rate_beforeValuation_noFixing_notEmptySeries() { ForwardFxIndexRates test = ForwardFxIndexRates.of(GBP_USD_WM, FWD_RATES, SERIES_MINIMAL); assertThrowsIllegalArg(() => test.rate(OBS_BEFORE, GBP)); }