public virtual void test_parSpreadSensitivity() { PointSensitivities computed = PRICER.parSpreadSensitivity(RTERM_DEPOSIT, IMM_PROV); CurrencyParameterSensitivities sensiComputed = IMM_PROV.parameterSensitivity(computed); CurrencyParameterSensitivities sensiExpected = CAL_FD.sensitivity(IMM_PROV, (p) => CurrencyAmount.of(EUR, PRICER.parSpread(RTERM_DEPOSIT, (p)))); assertTrue(sensiComputed.equalWithTolerance(sensiExpected, NOTIONAL * EPS_FD)); }
//------------------------------------------------------------------------- public virtual void test_parSpreadSensitivity() { PointSensitivities ptsTrade = PRICER_TRADE.parSpreadSensitivity(RDEPOSIT_TRADE, IMM_PROV); PointSensitivities ptsProduct = PRICER_PRODUCT.parSpreadSensitivity(RDEPOSIT_PRODUCT, IMM_PROV); assertTrue(ptsTrade.equalWithTolerance(ptsProduct, TOLERANCE_PV_DELTA)); }
/// <summary> /// Calculates the par spread curve sensitivity. /// <para> /// The calculation is based on both of initial and final payments. /// Thus the number resulting may not be meaningful when deposit has already started and only the final /// payment remains (no initial payment). /// /// </para> /// </summary> /// <param name="trade"> the trade </param> /// <param name="provider"> the rates provider </param> /// <returns> the par spread curve sensitivity </returns> public virtual PointSensitivities parSpreadSensitivity(ResolvedTermDepositTrade trade, RatesProvider provider) { return(productPricer.parSpreadSensitivity(trade.Product, provider)); }