/// <summary> /// Calculates the present value sensitivity of the FX swap product. /// <para> /// The present value sensitivity of the product is the sensitivity of the present value to /// the underlying curves. /// /// </para> /// </summary> /// <param name="swap"> the product </param> /// <param name="provider"> the rates provider </param> /// <returns> the present value sensitivity </returns> public virtual PointSensitivities presentValueSensitivity(ResolvedFxSwap swap, RatesProvider provider) { PointSensitivities nearSens = fxPricer.presentValueSensitivity(swap.NearLeg, provider); PointSensitivities farSens = fxPricer.presentValueSensitivity(swap.FarLeg, provider); return(nearSens.combinedWith(farSens)); }
public virtual void test_presentValueSensitivity() { PointSensitivities point = PRICER.presentValueSensitivity(FWD, PROVIDER); CurrencyParameterSensitivities computed = PROVIDER.parameterSensitivity(point); CurrencyParameterSensitivities expectedUsd = CAL_FD.sensitivity(PROVIDER, (p) => PRICER.presentValue(FWD, (p)).getAmount(USD)); CurrencyParameterSensitivities expectedKrw = CAL_FD.sensitivity(PROVIDER, (p) => PRICER.presentValue(FWD, (p)).getAmount(KRW)); assertTrue(computed.equalWithTolerance(expectedUsd.combinedWith(expectedKrw), NOMINAL_USD * FX_RATE * EPS_FD)); }
// Checks that the NDF present value sensitivity is coherent with the standard FX forward present value. public virtual void test_presentValueCurveSensitivityVsForex() { PointSensitivities pvcsNDF = PRICER.presentValueSensitivity(NDF, PROVIDER).normalized(); CurrencyParameterSensitivities sensiNDF = PROVIDER.parameterSensitivity(pvcsNDF); PointSensitivities pvcsFX = PRICER_FX.presentValueSensitivity(FOREX, PROVIDER).normalized(); CurrencyParameterSensitivities sensiFX = PROVIDER.parameterSensitivity(pvcsFX); assertTrue(sensiNDF.equalWithTolerance(sensiFX.convertedTo(USD, PROVIDER), NOMINAL_USD * TOL)); }
public virtual void test_presentValueSensitivity() { assertEquals(TRADE_PRICER.presentValueSensitivity(TRADE, PROVIDER), PRODUCT_PRICER.presentValueSensitivity(PRODUCT, PROVIDER)); }
/// <summary> /// Calculates the present value curve sensitivity of the trade. /// <para> /// The present value sensitivity of the trade is the sensitivity of the present value to /// the underlying curves. /// /// </para> /// </summary> /// <param name="trade"> the trade </param> /// <param name="provider"> the rates provider </param> /// <returns> the point sensitivity of the present value </returns> public virtual PointSensitivities presentValueSensitivity(ResolvedFxSingleTrade trade, RatesProvider provider) { return(productPricer.presentValueSensitivity(trade.Product, provider)); }