/** * Copyright (C) 2016 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.strata.pricer.fx; import static org.testng.Assert.assertEquals; import java.time.LocalDate; import org.testng.annotations.Test; import com.opengamma.strata.basics.currency.Currency; import com.opengamma.strata.basics.currency.CurrencyAmount; import com.opengamma.strata.basics.currency.FxRate; import com.opengamma.strata.pricer.rate.RatesProvider; import com.opengamma.strata.product.TradeInfo; import com.opengamma.strata.product.fx.ResolvedFxSingle; import com.opengamma.strata.product.fx.ResolvedFxSingleTrade; /** * Test {@link DiscountingFxSingleProductPricer}. */ @Test public class DiscountingFxSingleTradePricerTest { private static final RatesProvider PROVIDER = RatesProviderFxDataSets.createProvider(); private static final Currency KRW = Currency.KRW; private static final Currency USD = Currency.USD; private static final LocalDate PAYMENT_DATE = RatesProviderFxDataSets.VAL_DATE_2014_01_22.plusWeeks(8); private static final double NOMINAL_USD = 100_000_000; private static final double FX_RATE = 1123.45; private static final ResolvedFxSingle PRODUCT = ResolvedFxSingle.of( CurrencyAmount.of(USD, NOMINAL_USD), FxRate.of(USD, KRW, FX_RATE), PAYMENT_DATE); private static final ResolvedFxSingleTrade TRADE = ResolvedFxSingleTrade.of(TradeInfo.empty(), PRODUCT); private static final DiscountingFxSingleProductPricer PRODUCT_PRICER = DiscountingFxSingleProductPricer.DEFAULT; private static final DiscountingFxSingleTradePricer TRADE_PRICER = DiscountingFxSingleTradePricer.DEFAULT; //------------------------------------------------------------------------- public void test_presentValue() { assertEquals( TRADE_PRICER.presentValue(TRADE, PROVIDER), PRODUCT_PRICER.presentValue(PRODUCT, PROVIDER)); } public void test_presentValueSensitivity() { assertEquals( TRADE_PRICER.presentValueSensitivity(TRADE, PROVIDER), PRODUCT_PRICER.presentValueSensitivity(PRODUCT, PROVIDER)); } public void test_parSpread() { assertEquals( TRADE_PRICER.parSpread(TRADE, PROVIDER), PRODUCT_PRICER.parSpread(PRODUCT, PROVIDER)); } public void test_currencyExposure() { assertEquals( TRADE_PRICER.currencyExposure(TRADE, PROVIDER), PRODUCT_PRICER.currencyExposure(PRODUCT, PROVIDER)); } public void test_currentCash() { assertEquals( TRADE_PRICER.currentCash(TRADE, PROVIDER), PRODUCT_PRICER.currentCash(PRODUCT, PROVIDER.getValuationDate())); } public void test_forwardFxRate() { assertEquals( TRADE_PRICER.forwardFxRate(TRADE, PROVIDER), PRODUCT_PRICER.forwardFxRate(PRODUCT, PROVIDER)); } public void test_forwardFxRatePointSensitivity() { assertEquals( TRADE_PRICER.forwardFxRatePointSensitivity(TRADE, PROVIDER), PRODUCT_PRICER.forwardFxRatePointSensitivity(PRODUCT, PROVIDER).build()); } public void test_forwardFxRateSpotSensitivity() { assertEquals( TRADE_PRICER.forwardFxRateSpotSensitivity(TRADE, PROVIDER), PRODUCT_PRICER.forwardFxRateSpotSensitivity(PRODUCT, PROVIDER)); } }