예제 #1
0
        /// <summary>
        /// Calculates the present value sensitivity of the FX swap product.
        /// <para>
        /// The present value sensitivity of the product is the sensitivity of the present value to
        /// the underlying curves.
        ///
        /// </para>
        /// </summary>
        /// <param name="swap">  the product </param>
        /// <param name="provider">  the rates provider </param>
        /// <returns> the present value sensitivity </returns>
        public virtual PointSensitivities presentValueSensitivity(ResolvedFxSwap swap, RatesProvider provider)
        {
            PointSensitivities nearSens = fxPricer.presentValueSensitivity(swap.NearLeg, provider);
            PointSensitivities farSens  = fxPricer.presentValueSensitivity(swap.FarLeg, provider);

            return(nearSens.combinedWith(farSens));
        }
        public virtual void test_presentValueSensitivity()
        {
            PointSensitivities             point       = PRICER.presentValueSensitivity(FWD, PROVIDER);
            CurrencyParameterSensitivities computed    = PROVIDER.parameterSensitivity(point);
            CurrencyParameterSensitivities expectedUsd = CAL_FD.sensitivity(PROVIDER, (p) => PRICER.presentValue(FWD, (p)).getAmount(USD));
            CurrencyParameterSensitivities expectedKrw = CAL_FD.sensitivity(PROVIDER, (p) => PRICER.presentValue(FWD, (p)).getAmount(KRW));

            assertTrue(computed.equalWithTolerance(expectedUsd.combinedWith(expectedKrw), NOMINAL_USD * FX_RATE * EPS_FD));
        }
        // Checks that the NDF present value sensitivity is coherent with the standard FX forward present value.
        public virtual void test_presentValueCurveSensitivityVsForex()
        {
            PointSensitivities             pvcsNDF  = PRICER.presentValueSensitivity(NDF, PROVIDER).normalized();
            CurrencyParameterSensitivities sensiNDF = PROVIDER.parameterSensitivity(pvcsNDF);
            PointSensitivities             pvcsFX   = PRICER_FX.presentValueSensitivity(FOREX, PROVIDER).normalized();
            CurrencyParameterSensitivities sensiFX  = PROVIDER.parameterSensitivity(pvcsFX);

            assertTrue(sensiNDF.equalWithTolerance(sensiFX.convertedTo(USD, PROVIDER), NOMINAL_USD * TOL));
        }
 public virtual void test_presentValueSensitivity()
 {
     assertEquals(TRADE_PRICER.presentValueSensitivity(TRADE, PROVIDER), PRODUCT_PRICER.presentValueSensitivity(PRODUCT, PROVIDER));
 }
예제 #5
0
 /// <summary>
 /// Calculates the present value curve sensitivity of the trade.
 /// <para>
 /// The present value sensitivity of the trade is the sensitivity of the present value to
 /// the underlying curves.
 ///
 /// </para>
 /// </summary>
 /// <param name="trade">  the trade </param>
 /// <param name="provider">  the rates provider </param>
 /// <returns> the point sensitivity of the present value </returns>
 public virtual PointSensitivities presentValueSensitivity(ResolvedFxSingleTrade trade, RatesProvider provider)
 {
     return(productPricer.presentValueSensitivity(trade.Product, provider));
 }