/** * Returns the FX rate for a scenario. * * @param scenarioIndex the index of the scenario * @return the FX rate for the specified scenario * @throws IndexOutOfBoundsException if the index is invalid */ @Override public FxRate get(int scenarioIndex) { return FxRate.of(pair, rates.get(scenarioIndex)); }
private void assertFile1Date1(Map<FxRateId, FxRate> map) { assertTrue(map.containsKey(EUR_USD_ID)); assertTrue(map.containsKey(GBP_USD_ID)); assertEquals(map.get(EUR_USD_ID), FxRate.of(Currency.EUR, Currency.USD, 1.11)); assertEquals(map.get(GBP_USD_ID), FxRate.of(Currency.GBP, Currency.USD, 1.51)); }
private void assertFile1Date2(Map<FxRateId, FxRate> map) { assertTrue(map.containsKey(EUR_USD_ID)); assertTrue(map.containsKey(GBP_USD_ID)); assertEquals(map.get(EUR_USD_ID), FxRate.of(Currency.EUR, Currency.USD, 1.12)); assertEquals(map.get(GBP_USD_ID), FxRate.of(Currency.GBP, Currency.USD, 1.52)); }
public void test_equals_bad() { FxRate test = FxRate.of(AUD, GBP, 1.25d); assertFalse(test.equals(ANOTHER_TYPE)); assertFalse(test.equals(null)); }
private static MarketDataFxRateProvider provider2() { Map<FxRateId, FxRate> marketDataMap = ImmutableMap.of(FxRateId.of(EUR, USD), FxRate.of(EUR, USD, EUR_USD), FxRateId.of(EUR, BEF), FxRate.of(EUR, BEF, EUR_BEF), FxRateId.of(GBP, USD), FxRate.of(GBP, USD, GBP_USD)); MarketData marketData = ImmutableMarketData.of(VAL_DATE, marketDataMap); return MarketDataFxRateProvider.of(marketData, ObservableSource.NONE, GBP); }
public void cross_double_triangle() { Map<FxRateId, FxRate> marketDataMap = ImmutableMap.of(FxRateId.of(EUR, USD), FxRate.of(EUR, USD, EUR_USD), FxRateId.of(EUR, BEF), FxRate.of(EUR, BEF, EUR_BEF), FxRateId.of(GBP, USD), FxRate.of(GBP, USD, GBP_USD)); MarketData marketData = ImmutableMarketData.of(VAL_DATE, marketDataMap); FxRateProvider fx = MarketDataFxRateProvider.of(marketData); assertEquals(fx.fxRate(GBP, BEF), GBP_USD * EUR_BEF / EUR_USD, 1.0E-10); assertEquals(fx.fxRate(BEF, GBP), EUR_USD / EUR_BEF / GBP_USD, 1.0E-10); }
public void test_convertedTo_noConversionNecessary() { DoubleArray values = DoubleArray.of(1, 2, 3); CurrencyAmountArray test = CurrencyAmountArray.of(GBP, values); FxRate fxRate = FxRate.of(GBP, USD, 1.61); CurrencyAmountArray convertedList = test.convertedTo(GBP, fxRate); assertThat(convertedList).isEqualTo(test); }
public void cross_base() { Map<FxRateId, FxRate> marketDataMap = ImmutableMap.of(FxRateId.of(EUR, USD), FxRate.of(EUR, USD, EUR_USD), FxRateId.of(GBP, USD), FxRate.of(GBP, USD, GBP_USD)); MarketData marketData = ImmutableMarketData.of(VAL_DATE, marketDataMap); FxRateProvider fx = MarketDataFxRateProvider.of(marketData); assertEquals(fx.fxRate(GBP, EUR), GBP_USD / EUR_USD, 1.0E-10); assertEquals(fx.fxRate(EUR, GBP), EUR_USD / GBP_USD, 1.0E-10); }
public void test_of_CurrencyCurrencyDouble() { FxRate test = FxRate.of(GBP, USD, 1.5d); assertEquals(test.getPair(), CurrencyPair.of(GBP, USD)); assertEquals(test.fxRate(GBP, USD), 1.5d, 0); assertEquals(test.toString(), "GBP/USD 1.5"); }
private static MarketDataFxRateProvider provider() { Map<FxRateId, FxRate> marketDataMap = ImmutableMap.of(FxRateId.of(EUR, USD, OBS_SOURCE), FxRate.of(EUR, USD, EUR_USD)); MarketData marketData = ImmutableMarketData.of(VAL_DATE, marketDataMap); return MarketDataFxRateProvider.of(marketData, OBS_SOURCE, GBP); }
public void test_parSpread_ended() { ResolvedFxSingle fwd = ResolvedFxSingle.of(CurrencyAmount.of(USD, NOMINAL_USD), FxRate.of(USD, KRW, FX_RATE), PAYMENT_DATE_PAST); double spread = PRICER.parSpread(fwd, PROVIDER); assertEquals(spread, 0d, TOL); }
public void test_convertedTo() { FxRate rate = FxRate.of(GBP, USD, 1.5d); SwaptionSensitivity base = SwaptionSensitivity.of(NAME, EXPIRY, TENOR, STRIKE, FORWARD, GBP, 32d); SwaptionSensitivity expected = SwaptionSensitivity.of(NAME, EXPIRY, TENOR, STRIKE, FORWARD, USD, 32d * 1.5d); assertEquals(base.convertedTo(USD, rate), expected); assertEquals(base.convertedTo(GBP, rate), base); }
public void test_of_CurrencyPairDouble_reverseStandardOrder() { FxRate test = FxRate.of(CurrencyPair.of(USD, GBP), 0.8d); assertEquals(test.getPair(), CurrencyPair.of(USD, GBP)); assertEquals(test.fxRate(USD, GBP), 0.8d, 0); assertEquals(test.toString(), "USD/GBP 0.8"); }
public void test_of_rate_switchOrder() { FxSingle test = FxSingle.of(USD_M1600, FxRate.of(USD, GBP, 1d / 1.6d), DATE_2015_06_30); assertEquals(test.getBaseCurrencyAmount(), GBP_P1000); assertEquals(test.getCounterCurrencyAmount(), USD_M1600); assertEquals(test.getPaymentDate(), DATE_2015_06_30); assertEquals(test.getCurrencyPair(), CurrencyPair.of(GBP, USD)); assertEquals(test.getReceiveCurrencyAmount(), GBP_P1000); }
public void cross_specified() { Map<FxRateId, FxRate> marketDataMap = ImmutableMap.of(FxRateId.of(EUR, CHF), FxRate.of(EUR, CHF, EUR_CHF), FxRateId.of(GBP, CHF), FxRate.of(GBP, CHF, GBP_CHF)); MarketData marketData = ImmutableMarketData.of(VAL_DATE, marketDataMap); FxRateProvider fx = MarketDataFxRateProvider.of(marketData, ObservableSource.NONE, CHF); assertEquals(fx.fxRate(GBP, EUR), GBP_CHF / EUR_CHF, 1.0E-10); assertEquals(fx.fxRate(EUR, GBP), EUR_CHF / GBP_CHF, 1.0E-10); assertThrows(() -> fx.fxRate(EUR, USD), MarketDataNotFoundException.class); }
@BeforeClass public void setUp() throws Exception { ScenarioMarketData marketData = ImmutableScenarioMarketData.builder(LocalDate.of(2011, 3, 8)) .addValue(FxRateId.of(Currency.GBP, Currency.USD), FxRate.of(Currency.GBP, Currency.USD, 1.4d)) .build(); fxRateProvider = ScenarioFxRateProvider.of(marketData); }
public void test_of_rate_switchOrder() { ResolvedFxSingle test = ResolvedFxSingle.of(USD_M1600, FxRate.of(USD, GBP, 1d / 1.6d), DATE_2015_06_30); assertEquals(test.getBaseCurrencyPayment(), Payment.of(GBP_P1000, DATE_2015_06_30)); assertEquals(test.getCounterCurrencyPayment(), Payment.of(USD_M1600, DATE_2015_06_30)); assertEquals(test.getPaymentDate(), DATE_2015_06_30); assertEquals(test.getCurrencyPair(), CurrencyPair.of(GBP, USD)); assertEquals(test.getReceiveCurrencyAmount(), GBP_P1000); }
public void convertedTo() { LegAmounts base = LegAmounts.of(LEG_AMOUNT_1, LEG_AMOUNT_2); LegAmounts test = base.convertedTo(Currency.GBP, FxRate.of(Currency.USD, Currency.GBP, 0.7)); assertThat(test.getAmounts().get(0).getAmount().getCurrency()).isEqualTo(Currency.GBP); assertThat(test.getAmounts().get(0).getAmount().getAmount()).isEqualTo(500d * 0.7d); assertThat(test.getAmounts().get(1).getAmount().getCurrency()).isEqualTo(Currency.GBP); assertThat(test.getAmounts().get(1).getAmount().getAmount()).isEqualTo(420d * 0.7d); }
public void test_convertedTo() { CashFlows base = CashFlows.of(ImmutableList.of(CASH_FLOW_1, CASH_FLOW_2)); CashFlows test = base.convertedTo(USD, FxRate.of(GBP, USD, 1.5)); assertEquals(test.getCashFlow(0), CASH_FLOW_1); CashFlow converted = test.getCashFlow(1); assertEquals(converted.getPaymentDate(), CASH_FLOW_2.getPaymentDate()); assertEquals(converted.getDiscountFactor(), CASH_FLOW_2.getDiscountFactor(), TOLERANCE); assertEquals(converted.getPresentValue().getCurrency(), USD); assertEquals(converted.getPresentValue().getAmount(), CASH_FLOW_2.getPresentValue().getAmount() * 1.5, TOLERANCE); assertEquals(converted.getForecastValue().getCurrency(), USD); assertEquals(converted.getForecastValue().getAmount(), CASH_FLOW_2.getForecastValue().getAmount() * 1.5, TOLERANCE); }
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()); }