public virtual void test_presentValueSensitivity() { PointSensitivityBuilder pt1 = PRODUCT_PRICER.presentValueSensitivity(CMS_ONE_LEG, RATES_PROVIDER); PointSensitivityBuilder pt2 = PRODUCT_PRICER.presentValueSensitivity(CMS_TWO_LEGS, RATES_PROVIDER); PointSensitivityBuilder ptCms = CMS_LEG_PRICER.presentValueSensitivity(CMS_LEG, RATES_PROVIDER); PointSensitivityBuilder ptPay = SWAP_LEG_PRICER.presentValueSensitivity(PAY_LEG, RATES_PROVIDER); assertEquals(pt1, ptCms); assertEquals(pt2, ptCms.combinedWith(ptPay)); }
public virtual void test_presentValueSensitivity() { PointSensitivities pt1 = TRADE_PRICER.presentValueSensitivity(CMS_TRADE_PREMIUM, RATES_PROVIDER); PointSensitivities pt2 = TRADE_PRICER.presentValueSensitivity(CMS_TRADE, RATES_PROVIDER); PointSensitivityBuilder ptProd1 = PRODUCT_PRICER.presentValueSensitivity(CMS_ONE_LEG, RATES_PROVIDER); PointSensitivityBuilder ptProd2 = PRODUCT_PRICER.presentValueSensitivity(CMS_TWO_LEGS, RATES_PROVIDER); PointSensitivityBuilder ptPrem = PREMIUM_PRICER.presentValueSensitivity(PREMIUM, RATES_PROVIDER); assertEquals(pt1, ptProd1.combinedWith(ptPrem).build()); assertEquals(pt2, ptProd2.build()); }
/// <summary> /// Calculates the present value curve sensitivity of the CMS trade by simple forward estimation. /// <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 CMS trade </param> /// <param name="ratesProvider"> the rates provider </param> /// <returns> the present value sensitivity </returns> public virtual PointSensitivities presentValueSensitivity(ResolvedCmsTrade trade, RatesProvider ratesProvider) { PointSensitivityBuilder pvSensiCms = productPricer.presentValueSensitivity(trade.Product, ratesProvider); if (!trade.Premium.Present) { return(pvSensiCms.build()); } PointSensitivityBuilder pvSensiPremium = paymentPricer.presentValueSensitivity(trade.Premium.get(), ratesProvider); return(pvSensiCms.combinedWith(pvSensiPremium).build()); }