コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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));
        }