예제 #1
0
 // checks that the volatilities are for SABR
 private static SabrSwaptionVolatilities checkSabr(SwaptionVolatilities volatilities)
 {
     if (volatilities is SabrSwaptionVolatilities)
     {
         return((SabrSwaptionVolatilities)volatilities);
     }
     throw new System.ArgumentException("Swaption volatiliies for pricing CMS must be for SABR model, but was: " + volatilities.VolatilityType);
 }
예제 #2
0
 /// <summary>
 /// Calculates present value for a single set of market data.
 /// </summary>
 /// <param name="trade">  the trade </param>
 /// <param name="ratesProvider">  the market data </param>
 /// <param name="volatilities">  the swaption volatilities </param>
 /// <returns> the present value </returns>
 public virtual MultiCurrencyAmount presentValue(ResolvedCmsTrade trade, RatesProvider ratesProvider, SwaptionVolatilities volatilities)
 {
     return(calc.presentValue(trade, ratesProvider, volatilities));
 }
예제 #3
0
 /// <summary>
 /// Calculates currency exposure for a single set of market data.
 /// <para>
 /// The currency risk, expressed as the equivalent amount in each currency.
 ///
 /// </para>
 /// </summary>
 /// <param name="trade">  the trade </param>
 /// <param name="ratesProvider">  the market data </param>
 /// <param name="volatilities">  the swaption volatilities </param>
 /// <returns> the currency exposure </returns>
 public virtual MultiCurrencyAmount currencyExposure(ResolvedCmsTrade trade, RatesProvider ratesProvider, SwaptionVolatilities volatilities)
 {
     return(calc.currencyExposure(trade, ratesProvider, volatilities));
 }
예제 #4
0
 /// <summary>
 /// Calculates present value sensitivity for a single set of market data.
 /// <para>
 /// This is the sensitivity of present value to a one basis point shift in
 /// the market quotes used to calibrate the curves.
 /// The result is provided for each affected curve and currency, bucketed by curve node.
 ///
 /// </para>
 /// </summary>
 /// <param name="trade">  the trade </param>
 /// <param name="ratesProvider">  the market data </param>
 /// <param name="volatilities">  the swaption volatilities </param>
 /// <returns> the present value sensitivity </returns>
 public virtual CurrencyParameterSensitivities pv01RatesMarketQuoteBucketed(ResolvedCmsTrade trade, RatesProvider ratesProvider, SwaptionVolatilities volatilities)
 {
     return(calc.pv01RatesMarketQuoteBucketed(trade, ratesProvider, volatilities));
 }
예제 #5
0
 /// <summary>
 /// Calculates present value sensitivity for a single set of market data.
 /// <para>
 /// This is the sensitivity of present value to a one basis point shift in
 /// the market quotes used to calibrate the curves.
 /// The result is the sum of the sensitivities of all affected curves.
 ///
 /// </para>
 /// </summary>
 /// <param name="trade">  the trade </param>
 /// <param name="ratesProvider">  the market data </param>
 /// <param name="volatilities">  the swaption volatilities </param>
 /// <returns> the present value sensitivity </returns>
 public virtual MultiCurrencyAmount pv01RatesMarketQuoteSum(ResolvedCmsTrade trade, RatesProvider ratesProvider, SwaptionVolatilities volatilities)
 {
     return(calc.pv01RatesMarketQuoteSum(trade, ratesProvider, volatilities));
 }
예제 #6
0
        // calibrated sum PV01 for one scenario
        internal MultiCurrencyAmount pv01RatesCalibratedSum(ResolvedSwaptionTrade trade, RatesProvider ratesProvider, SwaptionVolatilities volatilities)
        {
            PointSensitivities pointSensitivity = this.pointSensitivity(trade, ratesProvider, volatilities);

            return(ratesProvider.parameterSensitivity(pointSensitivity).total().multipliedBy(ONE_BASIS_POINT));
        }
예제 #7
0
 // present value for one scenario
 internal CurrencyAmount presentValue(ResolvedSwaptionTrade trade, RatesProvider ratesProvider, SwaptionVolatilities volatilities)
 {
     return(tradePricer.presentValue(trade, ratesProvider, volatilities));
 }
예제 #8
0
 // currency exposure for one scenario
 internal MultiCurrencyAmount currencyExposure(ResolvedSwaptionTrade trade, RatesProvider ratesProvider, SwaptionVolatilities volatilities)
 {
     return(tradePricer.currencyExposure(trade, ratesProvider, volatilities));
 }
예제 #9
0
 // point sensitivity
 private PointSensitivities pointSensitivity(ResolvedSwaptionTrade trade, RatesProvider ratesProvider, SwaptionVolatilities volatilities)
 {
     if (volatilities is SabrSwaptionVolatilities)
     {
         return(sabrTradePricer.presentValueSensitivityRatesStickyModel(trade, ratesProvider, (SabrSwaptionVolatilities)volatilities));
     }
     return(tradePricer.presentValueSensitivityRatesStickyStrike(trade, ratesProvider, volatilities));
 }
예제 #10
0
        // market quote bucketed PV01 for one scenario
        internal CurrencyParameterSensitivities pv01RatesMarketQuoteBucketed(ResolvedSwaptionTrade trade, RatesProvider ratesProvider, SwaptionVolatilities volatilities)
        {
            PointSensitivities             pointSensitivity     = this.pointSensitivity(trade, ratesProvider, volatilities);
            CurrencyParameterSensitivities parameterSensitivity = ratesProvider.parameterSensitivity(pointSensitivity);

            return(MARKET_QUOTE_SENS.sensitivity(parameterSensitivity, ratesProvider).multipliedBy(ONE_BASIS_POINT));
        }
 /// <summary>
 /// Calculates current cash for a single set of market data.
 /// <para>
 /// The sum of all cash flows paid on the valuation date.
 ///
 /// </para>
 /// </summary>
 /// <param name="trade">  the trade </param>
 /// <param name="ratesProvider">  the market data </param>
 /// <param name="volatilities">  the swaption volatilities </param>
 /// <returns> the current cash </returns>
 public virtual CurrencyAmount currentCash(ResolvedSwaptionTrade trade, RatesProvider ratesProvider, SwaptionVolatilities volatilities)
 {
     return(calc.currentCash(trade, ratesProvider.ValuationDate));
 }
 /// <summary>
 /// Calculates present value sensitivity for a single set of market data.
 /// <para>
 /// This is the sensitivity of present value to a one basis point shift in the calibrated curves.
 /// The result is the sum of the sensitivities of all affected curves.
 ///
 /// </para>
 /// </summary>
 /// <param name="trade">  the trade </param>
 /// <param name="ratesProvider">  the market data </param>
 /// <param name="volatilities">  the swaption volatilities </param>
 /// <returns> the present value sensitivity </returns>
 public virtual MultiCurrencyAmount pv01RatesCalibratedSum(ResolvedSwaptionTrade trade, RatesProvider ratesProvider, SwaptionVolatilities volatilities)
 {
     return(calc.pv01RatesCalibratedSum(trade, ratesProvider, volatilities));
 }
예제 #13
0
 // present value for one scenario
 internal MultiCurrencyAmount presentValue(ResolvedCmsTrade trade, RatesProvider ratesProvider, SwaptionVolatilities volatilities)
 {
     return(tradePricer.presentValue(trade, ratesProvider, checkSabr(volatilities)));
 }
예제 #14
0
 // point sensitivity
 private PointSensitivities pointSensitivity(ResolvedCmsTrade trade, RatesProvider ratesProvider, SwaptionVolatilities volatilities)
 {
     return(tradePricer.presentValueSensitivityRates(trade, ratesProvider, checkSabr(volatilities)));
 }
예제 #15
0
        // calibrated bucketed PV01 for one scenario
        internal CurrencyParameterSensitivities pv01RatesCalibratedBucketed(ResolvedCmsTrade trade, RatesProvider ratesProvider, SwaptionVolatilities volatilities)
        {
            PointSensitivities pointSensitivity = this.pointSensitivity(trade, ratesProvider, volatilities);

            return(ratesProvider.parameterSensitivity(pointSensitivity).multipliedBy(ONE_BASIS_POINT));
        }