/** * 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.pricer.rate.RatesProvider; import com.opengamma.strata.product.TradeInfo; import com.opengamma.strata.product.fx.ResolvedFxSwap; import com.opengamma.strata.product.fx.ResolvedFxSwapTrade; /** * Test {@link DiscountingFxSwapProductPricer}. */ @Test public class DiscountingFxSwapTradePricerTest { 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_NEAR = RatesProviderFxDataSets.VAL_DATE_2014_01_22.plusWeeks(1); private static final LocalDate PAYMENT_DATE_FAR = PAYMENT_DATE_NEAR.plusMonths(1); private static final double NOMINAL_USD = 100_000_000; private static final double FX_RATE = 1109.5; private static final double FX_FWD_POINTS = 4.45; private static final ResolvedFxSwap PRODUCT = ResolvedFxSwap.ofForwardPoints( CurrencyAmount.of(USD, NOMINAL_USD), KRW, FX_RATE, FX_FWD_POINTS, PAYMENT_DATE_NEAR, PAYMENT_DATE_FAR); private static final ResolvedFxSwapTrade TRADE = ResolvedFxSwapTrade.of(TradeInfo.empty(), PRODUCT); private static final DiscountingFxSwapProductPricer PRODUCT_PRICER = DiscountingFxSwapProductPricer.DEFAULT; private static final DiscountingFxSwapTradePricer TRADE_PRICER = DiscountingFxSwapTradePricer.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_parSpreadSensitivity() { assertEquals( TRADE_PRICER.parSpreadSensitivity(TRADE, PROVIDER), PRODUCT_PRICER.parSpreadSensitivity(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())); } }