public virtual void test_currentCash_pay() { CurrencyAmount capComputed = PRICER.currentCash(CAP, RATES_PAY, VOLS_PAY); CurrencyAmount floorComputed = PRICER.currentCash(FLOOR, RATES_PAY, VOLS_PAY); double capExpected = 0d; IborCapletFloorletPeriod period = FLOOR.CapletFloorletPeriods.get(1); double floorExpected = -(STRIKE - OBS_INDEX_2) * NOTIONAL_VALUE * period.YearFraction; assertEquals(capComputed.Currency, EUR); assertEquals(capComputed.Amount, capExpected); assertEquals(floorComputed.Currency, EUR); assertEquals(floorComputed.Amount, floorExpected, TOL * NOTIONAL_VALUE); }
public virtual void test_presentValue_after() { CurrencyAmount capComputed = PRICER.presentValue(CAP, RATES_AFTER, VOLS_AFTER); CurrencyAmount floorComputed = PRICER.presentValue(FLOOR, RATES_AFTER, VOLS_AFTER); double capExpected = 0d; IborCapletFloorletPeriod period = FLOOR.CapletFloorletPeriods.get(1); double floorExpected = -(STRIKE - OBS_INDEX_2) * NOTIONAL_VALUE * period.YearFraction * RATES_AFTER.discountFactor(EUR, period.PaymentDate); int nPeriods = CAP.CapletFloorletPeriods.size(); for (int i = 2; i < nPeriods; ++i) { capExpected += PRICER_PERIOD.presentValue(CAP.CapletFloorletPeriods.get(i), RATES_AFTER, VOLS_AFTER).Amount; floorExpected += PRICER_PERIOD.presentValue(FLOOR.CapletFloorletPeriods.get(i), RATES_AFTER, VOLS_AFTER).Amount; } assertEquals(capComputed.Currency, EUR); assertEquals(capComputed.Amount, capExpected, TOL * NOTIONAL_VALUE); assertEquals(floorComputed.Currency, EUR); assertEquals(floorComputed.Amount, floorExpected, TOL * NOTIONAL_VALUE); }
public virtual void test_presentValueSensitivity_after() { PointSensitivityBuilder capComputed = PRICER.presentValueSensitivityRates(CAP, RATES_AFTER, VOLS_AFTER); PointSensitivityBuilder floorComputed = PRICER.presentValueSensitivityRates(FLOOR, RATES_AFTER, VOLS_AFTER); PointSensitivityBuilder capExpected = PointSensitivityBuilder.none(); IborCapletFloorletPeriod period = FLOOR.CapletFloorletPeriods.get(1); PointSensitivityBuilder floorExpected = RATES_AFTER.discountFactors(EUR).zeroRatePointSensitivity(period.PaymentDate).multipliedBy(-(STRIKE - OBS_INDEX_2) * NOTIONAL_VALUE * period.YearFraction); int nPeriods = CAP.CapletFloorletPeriods.size(); for (int i = 2; i < nPeriods; ++i) { capExpected = capExpected.combinedWith(PRICER_PERIOD.presentValueSensitivityRates(CAP.CapletFloorletPeriods.get(i), RATES_AFTER, VOLS_AFTER)); floorExpected = floorExpected.combinedWith(PRICER_PERIOD.presentValueSensitivityRates(FLOOR.CapletFloorletPeriods.get(i), RATES_AFTER, VOLS_AFTER)); } CurrencyParameterSensitivities capSensiComputed = RATES_AFTER.parameterSensitivity(capComputed.build()); CurrencyParameterSensitivities floorSensiComputed = RATES_AFTER.parameterSensitivity(floorComputed.build()); CurrencyParameterSensitivities capSensiExpected = RATES_AFTER.parameterSensitivity(capExpected.build()); CurrencyParameterSensitivities floorSensiExpected = RATES_AFTER.parameterSensitivity(floorExpected.build()); assertTrue(capSensiComputed.equalWithTolerance(capSensiExpected, NOTIONAL_VALUE * TOL)); assertTrue(floorSensiComputed.equalWithTolerance(floorSensiExpected, NOTIONAL_VALUE * TOL)); }