public virtual void test_tenor() { double test1 = VOLS.tenor(VAL_DATE, VAL_DATE); assertEquals(test1, 0d); double test2 = VOLS.tenor(VAL_DATE, date(2018, 2, 28)); assertEquals(test2, 3d); double test3 = VOLS.tenor(VAL_DATE, date(2018, 2, 10)); assertEquals(test3, 3d); }
public virtual void test_presentValue() { CurrencyAmount computedRec = PRICER.presentValue(SWAPTION_REC_LONG, RATE_PROVIDER, VOLS); CurrencyAmount computedPay = PRICER.presentValue(SWAPTION_PAY_SHORT, RATE_PROVIDER, VOLS); double forward = SWAP_PRICER.parRate(RSWAP_REC, RATE_PROVIDER); double annuityCash = SWAP_PRICER.LegPricer.annuityCash(RFIXED_LEG_REC, forward); double expiry = VOLS.relativeTime(SWAPTION_REC_LONG.Expiry); double tenor = VOLS.tenor(SETTLE, END); double volatility = SURFACE.zValue(expiry, tenor); double settle = ACT_ACT_ISDA.relativeYearFraction(VAL_DATE, SETTLE); double df = Math.Exp(-DSC_CURVE.yValue(settle) * settle); double expectedRec = df * annuityCash * BlackFormulaRepository.price(forward, RATE, expiry, volatility, false); double expectedPay = -df *annuityCash *BlackFormulaRepository.price(forward, RATE, expiry, volatility, true); assertEquals(computedRec.Currency, EUR); assertEquals(computedRec.Amount, expectedRec, NOTIONAL * TOL); assertEquals(computedPay.Currency, EUR); assertEquals(computedPay.Amount, expectedPay, NOTIONAL * TOL); }