//------------------------------------------------------------------------- /// <summary> /// Test par rate for ISDA FRA Discounting method. /// </summary> public virtual void test_parRate_ISDA() { ResolvedFra fraExp = RFRA; SimpleRatesProvider prov = createProvider(fraExp); DiscountingFraProductPricer test = DiscountingFraProductPricer.DEFAULT; double parRate = test.parRate(fraExp, prov); assertEquals(parRate, FORWARD_RATE); ResolvedFra fra = createNewFra(FRA, parRate); CurrencyAmount pv = test.presentValue(fra, prov); assertEquals(pv.Amount, 0.0, TOLERANCE); // test via FraTrade DiscountingFraTradePricer testTrade = new DiscountingFraTradePricer(test); assertEquals(testTrade.parRate(RFRA_TRADE, prov), test.parRate(RFRA, prov)); }
/// <summary> /// Test par rate for AFMA FRA Discounting method. /// </summary> public virtual void test_parRate_AFMA() { ResolvedFra fraExp = RFRA_AFMA; SimpleRatesProvider prov = createProvider(fraExp); DiscountingFraProductPricer test = DiscountingFraProductPricer.DEFAULT; double parRate = test.parRate(fraExp, prov); assertEquals(parRate, FORWARD_RATE); ResolvedFra fra = createNewFra(FRA_AFMA, parRate); CurrencyAmount pv = test.presentValue(fra, prov); assertEquals(pv.Amount, 0.0, TOLERANCE); }
//------------------------------------------------------------------------- /// <summary> /// Calculates the par rate of the FRA trade. /// <para> /// The par rate is the rate for which the FRA present value is 0. /// /// </para> /// </summary> /// <param name="trade"> the trade </param> /// <param name="provider"> the rates provider </param> /// <returns> the par rate </returns> public virtual double parRate(ResolvedFraTrade trade, RatesProvider provider) { return(productPricer.parRate(trade.Product, provider)); }