Exemple #1
0
        public virtual void test_presentValueSensitivityRatesStickyModel()
        {
            PointSensitivityBuilder computed1 = PRICER.presentValueSensitivityRatesStickyModel(CAP_ONE_LEG, RATES, VOLS);
            PointSensitivityBuilder computed2 = PRICER.presentValueSensitivityRatesStickyModel(CAP_TWO_LEGS, RATES, VOLS);
            PointSensitivityBuilder cap       = PRICER_CAP_LEG.presentValueSensitivityRatesStickyModel(CAP_LEG, RATES, VOLS);
            PointSensitivityBuilder pay       = PRICER_PAY_LEG.presentValueSensitivity(PAY_LEG, RATES);

            assertEquals(computed1, cap);
            assertEquals(computed2, cap.combinedWith(pay));
        }
Exemple #2
0
        public virtual void test_presentValueSensitivityRatesStickyModel()
        {
            PointSensitivities computedWithPayLeg  = PRICER.presentValueSensitivityRatesStickyModel(TRADE_PAYLEG, RATES, VOLS);
            PointSensitivities computedWithPremium = PRICER.presentValueSensitivityRatesStickyModel(TRADE_PREMIUM, RATES, VOLS);
            PointSensitivities pvOneLeg            = PRICER_PRODUCT.presentValueSensitivityRatesStickyModel(CAP_ONE_LEG, RATES, VOLS).build();
            PointSensitivities pvTwoLegs           = PRICER_PRODUCT.presentValueSensitivityRatesStickyModel(CAP_TWO_LEGS, RATES, VOLS).build();
            PointSensitivities pvPrem = PRICER_PREMIUM.presentValueSensitivity(PREMIUM, RATES).build();

            assertEquals(computedWithPayLeg, pvTwoLegs);
            assertEquals(computedWithPremium, pvOneLeg.combinedWith(pvPrem));
        }
Exemple #3
0
        //-------------------------------------------------------------------------
        /// <summary>
        /// Calculates the present value rates sensitivity of the Ibor cap/floor trade.
        /// <para>
        /// The present value sensitivity is computed in a "sticky model parameter" style, i.e. the sensitivity to the
        /// curve nodes with the SABR model parameters unchanged. This sensitivity does not include a potential
        /// re-calibration of the model parameters to the raw market data.
        ///
        /// </para>
        /// </summary>
        /// <param name="trade">  the Ibor cap/floor trade </param>
        /// <param name="ratesProvider">  the rates provider </param>
        /// <param name="volatilities">  the volatilities </param>
        /// <returns> the present value sensitivity </returns>
        public virtual PointSensitivities presentValueSensitivityRatesStickyModel(ResolvedIborCapFloorTrade trade, RatesProvider ratesProvider, SabrIborCapletFloorletVolatilities volatilities)
        {
            PointSensitivityBuilder pvSensiProduct = productPricer.presentValueSensitivityRatesStickyModel(trade.Product, ratesProvider, volatilities);

            if (!trade.Premium.Present)
            {
                return(pvSensiProduct.build());
            }
            PointSensitivityBuilder pvSensiPremium = PaymentPricer.presentValueSensitivity(trade.Premium.get(), ratesProvider);

            return(pvSensiProduct.combinedWith(pvSensiPremium).build());
        }