public virtual void test_recovery01OnSettle() { CurrencyAmount computed = PRICER.recovery01OnSettle(TRADE, RATES_PROVIDER, REF_DATA); CurrencyAmount expected = PRICER_PRODUCT.recovery01(PRODUCT, RATES_PROVIDER, SETTLEMENT_DATE, REF_DATA); CurrencyAmount computedMf = PRICER_MF.recovery01OnSettle(TRADE_NO_SETTLE_DATE, RATES_PROVIDER, REF_DATA); CurrencyAmount expectedMf = PRICER_PRODUCT_MF.recovery01(PRODUCT, RATES_PROVIDER, SETTLEMENT_DATE, REF_DATA); assertEquals(computed.Amount, expected.Amount, TOL); assertEquals(computedMf.Amount, expectedMf.Amount, TOL); }
//------------------------------------------------------------------------- /// <summary> /// Calculates the recovery01 of the underlying product. /// <para> /// The recovery01 is defined as the present value sensitivity to the recovery rate. /// Since the ISDA standard model requires the recovery rate to be constant throughout the lifetime of the CDS, /// one currency amount is returned by this method. /// </para> /// <para> /// This is computed based on the settlement date rather than the valuation date. /// /// </para> /// </summary> /// <param name="trade"> the trade </param> /// <param name="ratesProvider"> the rates provider </param> /// <param name="refData"> the reference data </param> /// <returns> the recovery01 </returns> public virtual CurrencyAmount recovery01OnSettle(ResolvedCdsTrade trade, CreditRatesProvider ratesProvider, ReferenceData refData) { LocalDate settlementDate = calculateSettlementDate(trade, ratesProvider, refData); return(productPricer.recovery01(trade.Product, ratesProvider, settlementDate, refData)); }