//------------------------------------------------------------------------- /// <summary> /// Test forecast value sensitivity for ISDA FRA discounting method. /// </summary> public virtual void test_forecastValueSensitivity_ISDA() { SimpleRatesProvider prov = createProvider(RFRA); DiscountingFraProductPricer test = DiscountingFraProductPricer.DEFAULT; PointSensitivities sensitivity = test.forecastValueSensitivity(RFRA, prov); double eps = 1.e-7; double fdSense = forecastValueFwdSensitivity(RFRA, FORWARD_RATE, eps); ImmutableList<PointSensitivity> sensitivities = sensitivity.Sensitivities; assertEquals(sensitivities.size(), 1); IborRateSensitivity sensitivity0 = (IborRateSensitivity) sensitivities.get(0); assertEquals(sensitivity0.Index, FRA.Index); assertEquals(sensitivity0.Observation.FixingDate, FRA.StartDate); assertEquals(sensitivity0.Sensitivity, fdSense, FRA.Notional * eps); // test via FraTrade DiscountingFraTradePricer testTrade = new DiscountingFraTradePricer(test); assertEquals(testTrade.forecastValueSensitivity(RFRA_TRADE, prov), test.forecastValueSensitivity(RFRA, prov)); }
/// <summary> /// Calculates the forecast value sensitivity of the FRA trade. /// <para> /// The forecast value sensitivity of the product is the sensitivity of the forecast 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 forecast value </returns> public virtual PointSensitivities forecastValueSensitivity(ResolvedFraTrade trade, RatesProvider provider) { return(productPricer.forecastValueSensitivity(trade.Product, provider)); }