public virtual void test_priceSensitivity()
        {
            PointSensitivities computed   = PRICER.priceSensitivity(TRADE, RATES_PROVIDER, REF_DATA);
            PointSensitivities expected   = PRICER_PRODUCT.priceSensitivity(PRODUCT, RATES_PROVIDER, SETTLEMENT_DATE, REF_DATA).build();
            PointSensitivities computedMf = PRICER_MF.priceSensitivity(TRADE_NO_SETTLE_DATE, RATES_PROVIDER, REF_DATA);
            PointSensitivities expectedMf = PRICER_PRODUCT_MF.priceSensitivity(PRODUCT, RATES_PROVIDER, SETTLEMENT_DATE, REF_DATA).build();

            assertTrue(computed.equalWithTolerance(expected, TOL));
            assertTrue(computedMf.equalWithTolerance(expectedMf, TOL));
        }
        /// <summary>
        /// Calculates the price sensitivity of the product.
        /// <para>
        /// The price sensitivity of the product is the sensitivity of price to the underlying curves.
        ///
        /// </para>
        /// </summary>
        /// <param name="cdsIndex">  the product </param>
        /// <param name="ratesProvider">  the rates provider </param>
        /// <param name="referenceDate">  the reference date </param>
        /// <param name="refData">  the reference data </param>
        /// <returns> the present value sensitivity </returns>
        public virtual PointSensitivityBuilder priceSensitivity(ResolvedCdsIndex cdsIndex, CreditRatesProvider ratesProvider, LocalDate referenceDate, ReferenceData refData)
        {
            ResolvedCds cds = cdsIndex.toSingleNameCds();

            return(underlyingPricer.priceSensitivity(cds, ratesProvider, referenceDate, refData));
        }
        /// <summary>
        /// Calculates the price sensitivity of the underlying product.
        /// <para>
        /// The price sensitivity of the product is the sensitivity of price to the underlying curves.
        ///
        /// </para>
        /// </summary>
        /// <param name="trade">  the trade </param>
        /// <param name="ratesProvider">  the rates provider </param>
        /// <param name="refData">  the reference data </param>
        /// <returns> the present value sensitivity </returns>
        public virtual PointSensitivities priceSensitivity(ResolvedCdsTrade trade, CreditRatesProvider ratesProvider, ReferenceData refData)
        {
            LocalDate settlementDate = calculateSettlementDate(trade, ratesProvider, refData);

            return(productPricer.priceSensitivity(trade.Product, ratesProvider, settlementDate, refData).build());
        }