//------------------------------------------------------------------------- public virtual void test_parSpread() { double psTrade = PRICER_TRADE.parSpread(RDEPOSIT_TRADE, IMM_PROV); double psProduct = PRICER_PRODUCT.parSpread(RDEPOSIT_PRODUCT, IMM_PROV); assertEquals(psTrade, psProduct, TOLERANCE_RATE); }
public virtual void test_parSpread() { SimpleRatesProvider prov = provider(VAL_DATE, DF_START, DF_END); double parSpread = PRICER.parSpread(RTERM_DEPOSIT, prov); TermDeposit depositPar = TermDeposit.builder().buySell(BuySell.BUY).startDate(START_DATE).endDate(END_DATE).businessDayAdjustment(BD_ADJ).dayCount(ACT_360).notional(NOTIONAL).currency(EUR).rate(RATE + parSpread).build(); double pvPar = PRICER.presentValue(depositPar.resolve(REF_DATA), prov).Amount; assertEquals(pvPar, 0.0, NOTIONAL * TOLERANCE); }
//------------------------------------------------------------------------- /// <summary> /// Calculates the spread to be added to the deposit rate to have a zero present value. /// <para> /// The calculation is based on both the initial and final payments. /// Thus the resulting number 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 </returns> public virtual double parSpread(ResolvedTermDepositTrade trade, RatesProvider provider) { return(productPricer.parSpread(trade.Product, provider)); }