//------------------------------------------------------------------------- /// <summary> /// Calculates the currency exposure of the FX vanilla option trade. /// </summary> /// <param name="trade"> the option trade </param> /// <param name="ratesProvider"> the rates provider </param> /// <param name="volatilities"> the Black volatility provider </param> /// <returns> the currency exposure </returns> public virtual MultiCurrencyAmount currencyExposure(ResolvedFxVanillaOptionTrade trade, RatesProvider ratesProvider, BlackFxOptionVolatilities volatilities) { Payment premium = trade.Premium; CurrencyAmount pvPremium = paymentPricer.presentValue(premium, ratesProvider); ResolvedFxVanillaOption product = trade.Product; return(productPricer.currencyExposure(product, ratesProvider, volatilities).plus(pvPremium)); }
//------------------------------------------------------------------------- public virtual void test_currencyExposure() { MultiCurrencyAmount computedPricer = PRICER.currencyExposure(CALL_OTM, RATES_PROVIDER, VOLS); CurrencyAmount pv = PRICER.presentValue(CALL_OTM, RATES_PROVIDER, VOLS); PointSensitivities point = PRICER.presentValueSensitivityRatesStickyStrike(CALL_OTM, RATES_PROVIDER, VOLS); MultiCurrencyAmount computedPoint = RATES_PROVIDER.currencyExposure(point).plus(pv); assertEquals(computedPricer.getAmount(EUR).Amount, computedPoint.getAmount(EUR).Amount, NOTIONAL * TOL); assertEquals(computedPricer.getAmount(USD).Amount, computedPoint.getAmount(USD).Amount, NOTIONAL * TOL); }