예제 #1
0
        public virtual void endedTest()
        {
            LocalDate           valuationDate = PRODUCT.ProtectionEndDate.plusDays(1);
            CreditRatesProvider provider      = createCreditRatesProviderSingle(valuationDate, false);
            double price = PRICER.price(PRODUCT, provider, SETTLEMENT_STD, CLEAN, REF_DATA);

            assertEquals(price, 0d);
            CurrencyAmount pv = PRICER.presentValue(PRODUCT, provider, SETTLEMENT_STD, CLEAN, REF_DATA);

            assertEquals(pv, CurrencyAmount.zero(USD));
            assertThrowsIllegalArg(() => PRICER.parSpread(PRODUCT, provider, SETTLEMENT_STD, REF_DATA));
            CurrencyAmount rpv01 = PRICER.rpv01(PRODUCT, provider, SETTLEMENT_STD, CLEAN, REF_DATA);

            assertEquals(rpv01, CurrencyAmount.zero(USD));
            CurrencyAmount recovery01 = PRICER.recovery01(PRODUCT, provider, SETTLEMENT_STD, REF_DATA);

            assertEquals(recovery01, CurrencyAmount.zero(USD));
            PointSensitivityBuilder sensi = PRICER.presentValueSensitivity(PRODUCT, provider, SETTLEMENT_STD, REF_DATA);

            assertEquals(sensi, PointSensitivityBuilder.none());
            PointSensitivityBuilder sensiPrice = PRICER.priceSensitivity(PRODUCT, provider, SETTLEMENT_STD, REF_DATA);

            assertEquals(sensiPrice, PointSensitivityBuilder.none());
            assertThrowsIllegalArg(() => PRICER.parSpreadSensitivity(PRODUCT, provider, SETTLEMENT_STD, REF_DATA));
            JumpToDefault jumpToDefault = PRICER.jumpToDefault(PRODUCT, provider, SETTLEMENT_STD, REF_DATA);

            assertEquals(jumpToDefault, JumpToDefault.of(USD, ImmutableMap.of(INDEX_ID, 0d)));
            CurrencyAmount expectedLoss = PRICER.expectedLoss(PRODUCT, provider);

            assertEquals(expectedLoss, CurrencyAmount.zero(USD));
        }
예제 #2
0
        public virtual void test_presentValueSensitivity()
        {
            PointSensitivities computed   = PRICER.presentValueSensitivity(TRADE, RATES_PROVIDER, REF_DATA);
            PointSensitivities expected   = PRICER_PRODUCT.presentValueSensitivity(PRODUCT, RATES_PROVIDER, VALUATION_DATE, REF_DATA).combinedWith(PRICER_PAYMENT.presentValueSensitivity(UPFRONT, YIELD_CRVE.toDiscountFactors())).build();
            PointSensitivities computedMf = PRICER_MF.presentValueSensitivity(TRADE_NO_SETTLE_DATE, RATES_PROVIDER, REF_DATA);
            PointSensitivities expectedMf = PRICER_PRODUCT_MF.presentValueSensitivity(PRODUCT, RATES_PROVIDER, VALUATION_DATE, REF_DATA).build();

            assertTrue(computed.equalWithTolerance(expected, TOL));
            assertTrue(computedMf.equalWithTolerance(expectedMf, TOL));
        }
        /// <summary>
        /// Calculates the present value sensitivity of the trade.
        /// <para>
        /// The present value sensitivity of the trade is the sensitivity of present value to the underlying curves.
        ///
        /// </para>
        /// </summary>
        /// <param name="trade">  the trade </param>
        /// <param name="ratesProvider">  the rates provider </param>
        /// <param name="refData">  the reference data </param>
        /// <returns> the present value sensitivity </returns>
        public virtual PointSensitivities presentValueSensitivity(ResolvedCdsIndexTrade trade, CreditRatesProvider ratesProvider, ReferenceData refData)
        {
            PointSensitivityBuilder pvSensiProduct = productPricer.presentValueSensitivity(trade.Product, ratesProvider, ratesProvider.ValuationDate, refData);

            if (!trade.UpfrontFee.Present)
            {
                return(pvSensiProduct.build());
            }
            Payment upfront = trade.UpfrontFee.get();
            PointSensitivityBuilder pvUpfront = upfrontPricer.presentValueSensitivity(upfront, ratesProvider.discountFactors(upfront.Currency).toDiscountFactors());

            return(pvSensiProduct.combinedWith(pvUpfront).build());
        }
예제 #4
0
        //-------------------------------------------------------------------------
        public virtual void pvSensitivityTest()
        {
            PointSensitivityBuilder        point = PRICER.presentValueSensitivity(PRODUCT, RATES_PROVIDER, SETTLEMENT_STD, REF_DATA);
            CurrencyParameterSensitivities res   = RATES_PROVIDER.parameterSensitivity(point.build());
            CurrencyParameterSensitivities exp   = CALC_FD.sensitivity(RATES_PROVIDER, p => PRICER.presentValue(PRODUCT, p, SETTLEMENT_STD, CLEAN, REF_DATA));

            equalWithRelativeTolerance(res, exp, NOTIONAL * EPS);
            PointSensitivityBuilder        pointMarkit = PRICER_MARKIT.presentValueSensitivity(PRODUCT, RATES_PROVIDER, SETTLEMENT_STD, REF_DATA);
            CurrencyParameterSensitivities resMarkit   = RATES_PROVIDER.parameterSensitivity(pointMarkit.build());
            CurrencyParameterSensitivities expMarkit   = CALC_FD.sensitivity(RATES_PROVIDER, p => PRICER_MARKIT.presentValue(PRODUCT, p, SETTLEMENT_STD, CLEAN, REF_DATA));

            equalWithRelativeTolerance(resMarkit, expMarkit, NOTIONAL * EPS);
            PointSensitivityBuilder        pointOg = PRICER_OG.presentValueSensitivity(PRODUCT, RATES_PROVIDER, SETTLEMENT_STD, REF_DATA);
            CurrencyParameterSensitivities resOg   = RATES_PROVIDER.parameterSensitivity(pointOg.build());
            CurrencyParameterSensitivities expOg   = CALC_FD.sensitivity(RATES_PROVIDER, p => PRICER_OG.presentValue(PRODUCT, p, SETTLEMENT_STD, CLEAN, REF_DATA));

            equalWithRelativeTolerance(resOg, expOg, NOTIONAL * EPS);
        }