Exemple #1
0
        public virtual void presentValueSensitivity_buySell()
        {
            PointSensitivityBuilder        pvBuy  = PRICER_CMS.presentValueSensitivity(COUPON, RATES_PROVIDER);
            PointSensitivityBuilder        pvSell = PRICER_CMS.presentValueSensitivity(COUPON_SELL, RATES_PROVIDER);
            CurrencyParameterSensitivities ps     = RATES_PROVIDER.parameterSensitivity(pvBuy.combinedWith(pvSell).build());

            assertTrue(ps.equalWithTolerance(CurrencyParameterSensitivities.empty(), TOLERANCE_DELTA));
        }
        //-------------------------------------------------------------------------
        public virtual void test_defaultMethods()
        {
            SwaptionVolatilities test = new TestingSwaptionVolatilities();

            assertEquals(test.ValuationDate, DATE_TIME.toLocalDate());
            assertEquals(test.volatility(DATE_TIME, 1, 2, 3), 6d);
            assertEquals(test.parameterSensitivity(), CurrencyParameterSensitivities.empty());
        }
        public virtual void test_parSpreadSensitivity_ended()
        {
            ResolvedFxSwap                 product  = ResolvedFxSwap.ofForwardPoints(CurrencyAmount.of(USD, NOMINAL_USD), KRW, FX_RATE, FX_FWD_POINTS, PAYMENT_DATE_LONG_PAST, PAYMENT_DATE_PAST);
            PointSensitivities             pts      = PRICER.parSpreadSensitivity(product, PROVIDER);
            CurrencyParameterSensitivities computed = PROVIDER.parameterSensitivity(pts);

            assertTrue(computed.equalWithTolerance(CurrencyParameterSensitivities.empty(), TOLERANCE_SPREAD_DELTA));
        }
Exemple #4
0
        public virtual void test_curveParameterSensitivity_noSensi()
        {
            ImmutableLegalEntityDiscountingProvider test = ImmutableLegalEntityDiscountingProvider.builder().issuerCurves(ImmutableMap.of(Pair.of(GROUP_ISSUER, GBP), DSC_FACTORS_ISSUER)).issuerCurveGroups(ImmutableMap.of(ID_ISSUER, GROUP_ISSUER)).repoCurves(ImmutableMap.of(Pair.of(GROUP_REPO_ISSUER, GBP), DSC_FACTORS_REPO)).repoCurveGroups(ImmutableMap.of(ID_ISSUER, GROUP_REPO_ISSUER)).valuationDate(DATE).build();
            ZeroRateSensitivity            sensi         = ZeroRateSensitivity.of(USD, DSC_FACTORS_ISSUER.relativeYearFraction(date(2018, 11, 24)), 25d);
            CurrencyParameterSensitivities computed      = test.parameterSensitivity(sensi.build());

            assertEquals(computed, CurrencyParameterSensitivities.empty());
        }
        public virtual void test_presentValueSensitivityModelParamsVolatility_after()
        {
            PointSensitivityBuilder        capComputed   = PRICER.presentValueSensitivityModelParamsVolatility(CAP, RATES_AFTER, VOLS_AFTER);
            PointSensitivityBuilder        floorComputed = PRICER.presentValueSensitivityModelParamsVolatility(FLOOR, RATES_AFTER, VOLS_AFTER);
            CurrencyParameterSensitivities capExpected   = CurrencyParameterSensitivities.empty();
            CurrencyParameterSensitivities floorExpected = CurrencyParameterSensitivities.empty();
            int nPeriods = CAP.CapletFloorletPeriods.size();

            for (int i = 3; i < nPeriods; ++i)
            {
                capExpected   = capExpected.combinedWith(VOLS_AFTER.parameterSensitivity(PRICER_PERIOD.presentValueSensitivityModelParamsVolatility(CAP.CapletFloorletPeriods.get(i), RATES_AFTER, VOLS_AFTER).build()));
                floorExpected = floorExpected.combinedWith(VOLS_AFTER.parameterSensitivity(PRICER_PERIOD.presentValueSensitivityModelParamsVolatility(FLOOR.CapletFloorletPeriods.get(i), RATES_AFTER, VOLS_AFTER).build()));
            }
            CurrencyParameterSensitivities capSensiComputed   = VOLS_AFTER.parameterSensitivity(capComputed.build());
            CurrencyParameterSensitivities floorSensiComputed = VOLS_AFTER.parameterSensitivity(floorComputed.build());

            assertTrue(capSensiComputed.equalWithTolerance(capExpected, TOL * NOTIONAL_VALUE));
            assertTrue(floorSensiComputed.equalWithTolerance(floorExpected, TOL * NOTIONAL_VALUE));
        }
Exemple #6
0
        //-------------------------------------------------------------------------
        public virtual void test_presentValueSensitivityVolatility()
        {
            PointSensitivityBuilder        capComputed   = PRICER.presentValueSensitivityModelParamsVolatility(CAP, RATES, VOLS);
            PointSensitivityBuilder        floorComputed = PRICER.presentValueSensitivityModelParamsVolatility(FLOOR, RATES, VOLS);
            CurrencyParameterSensitivities capExpected   = CurrencyParameterSensitivities.empty();
            CurrencyParameterSensitivities floorExpected = CurrencyParameterSensitivities.empty();
            int nPeriods = CAP.CapletFloorletPeriods.size();

            for (int i = 0; i < nPeriods; ++i)
            {
                capExpected   = capExpected.combinedWith(VOLS.parameterSensitivity(PRICER_PERIOD.presentValueSensitivityModelParamsVolatility(CAP.CapletFloorletPeriods.get(i), RATES, VOLS).build()));
                floorExpected = floorExpected.combinedWith(VOLS.parameterSensitivity(PRICER_PERIOD.presentValueSensitivityModelParamsVolatility(FLOOR.CapletFloorletPeriods.get(i), RATES, VOLS).build()));
            }
            CurrencyParameterSensitivities capSensiComputed   = VOLS.parameterSensitivity(capComputed.build());
            CurrencyParameterSensitivities floorSensiComputed = VOLS.parameterSensitivity(floorComputed.build());
            CurrencyParameterSensitivity   capSensiExpected   = capExpected.Sensitivities.get(0);
            CurrencyParameterSensitivity   floorSensiExpected = floorExpected.Sensitivities.get(0);

            assertTrue(DoubleArrayMath.fuzzyEquals(capSensiComputed.Sensitivities.get(0).Sensitivity.toArray(), capSensiExpected.Sensitivity.toArray(), TOL * NOTIONAL_VALUE));
            assertTrue(DoubleArrayMath.fuzzyEquals(floorSensiComputed.Sensitivities.get(0).Sensitivity.toArray(), floorSensiExpected.Sensitivity.toArray(), TOL * NOTIONAL_VALUE));
        }
Exemple #7
0
        public virtual void presentValueSensitivity_onPayment()
        {
            PointSensitivities ptsCpn         = PRICER_CMS.presentValueSensitivity(COUPON, RATES_PROVIDER_ON_PAY).build();
            PointSensitivities ptsCapletOtm   = PRICER_CMS.presentValueSensitivity(CAPLET, RATES_PROVIDER_ON_PAY).build();
            PointSensitivities ptsCapletItm   = PRICER_CMS.presentValueSensitivity(CAPLET_NEGATIVE, RATES_PROVIDER_ON_PAY).build();
            PointSensitivities ptsFloorletItm = PRICER_CMS.presentValueSensitivity(FLOORLET, RATES_PROVIDER_ON_PAY).build();
            PointSensitivities ptsFloorletOtm = PRICER_CMS.presentValueSensitivity(FLOORLET_NEGATIVE, RATES_PROVIDER_ON_PAY).build();

            assertTrue(RATES_PROVIDER_ON_PAY.parameterSensitivity(ptsCpn).equalWithTolerance(CurrencyParameterSensitivities.empty(), TOLERANCE_DELTA));
            assertTrue(RATES_PROVIDER_ON_PAY.parameterSensitivity(ptsCapletOtm).equalWithTolerance(CurrencyParameterSensitivities.empty(), TOLERANCE_DELTA));
            assertTrue(RATES_PROVIDER_ON_PAY.parameterSensitivity(ptsCapletItm).equalWithTolerance(CurrencyParameterSensitivities.empty(), TOLERANCE_DELTA));
            assertTrue(RATES_PROVIDER_ON_PAY.parameterSensitivity(ptsFloorletItm).equalWithTolerance(CurrencyParameterSensitivities.empty(), TOLERANCE_DELTA));
            assertTrue(RATES_PROVIDER_ON_PAY.parameterSensitivity(ptsFloorletOtm).equalWithTolerance(CurrencyParameterSensitivities.empty(), TOLERANCE_DELTA));
        }
 public virtual CurrencyParameterSensitivities parameterSensitivity(PointSensitivities pointSensitivities)
 {
     return(CurrencyParameterSensitivities.empty());
 }