/// <summary>
	  /// Test par spread sensitivity for ISDA FRA Discounting method.
	  /// </summary>
	  public virtual void test_parSpreadSensitivity_ISDA()
	  {
		PointSensitivities sensiSpread = DEFAULT_PRICER.parSpreadSensitivity(RFRA, IMM_PROV);
		CurrencyParameterSensitivities sensiComputed = IMM_PROV.parameterSensitivity(sensiSpread);
		CurrencyParameterSensitivities sensiExpected = CAL_FD.sensitivity(IMM_PROV, (p) => CurrencyAmount.of(FRA.Currency, DEFAULT_PRICER.parSpread(RFRA, (p))));
		assertTrue(sensiComputed.equalWithTolerance(sensiExpected, EPS_FD));
		PointSensitivities sensiRate = DEFAULT_PRICER.parRateSensitivity(RFRA, IMM_PROV);
		assertTrue(sensiSpread.equalWithTolerance(sensiRate, EPS_FD));

		// test via FraTrade
		assertEquals(DEFAULT_TRADE_PRICER.parRateSensitivity(RFRA_TRADE, IMM_PROV), DEFAULT_PRICER.parRateSensitivity(RFRA, IMM_PROV));
		assertEquals(DEFAULT_TRADE_PRICER.parSpreadSensitivity(RFRA_TRADE, IMM_PROV), DEFAULT_PRICER.parSpreadSensitivity(RFRA, IMM_PROV));
	  }
 /// <summary>
 /// Calculates the par rate curve sensitivity of the FRA trade.
 /// <para>
 /// The par rate curve sensitivity of the product is the sensitivity of the par rate to
 /// the underlying curves.
 ///
 /// </para>
 /// </summary>
 /// <param name="trade">  the trade </param>
 /// <param name="provider">  the rates provider </param>
 /// <returns> the par rate sensitivity </returns>
 public virtual PointSensitivities parRateSensitivity(ResolvedFraTrade trade, RatesProvider provider)
 {
     return(productPricer.parRateSensitivity(trade.Product, provider));
 }