Class CmsTradeCalculations


  • public class CmsTradeCalculations
    extends java.lang.Object
    Calculates pricing and risk measures for constant maturity swap (CMS) trades.

    This provides a high-level entry point for CMS pricing and risk measures. CMS pricing uses swaption volatilities with the SABR model. Additional model parameters must be specified using CmsSabrExtrapolationParams.

    Each method takes a ResolvedCmsTrade, whereas application code will typically work with CmsTrade. Call CmsTrade::resolve(ReferenceData) to convert CmsTrade to ResolvedCmsTrade.

    • Method Detail

      • of

        public static CmsTradeCalculations of​(CmsSabrExtrapolationParams cmsParams)
        Obtains an instance specifying the SABR extrapolation parameters.
        Parameters:
        cmsParams - the parameters for SABR pricing of CMS
        Returns:
        the trade calculations
      • pv01RatesCalibratedSum

        public MultiCurrencyScenarioArray pv01RatesCalibratedSum​(ResolvedCmsTrade trade,
                                                                 RatesMarketDataLookup ratesLookup,
                                                                 SwaptionMarketDataLookup swaptionLookup,
                                                                 ScenarioMarketData marketData)
        Calculates present value sensitivity across one or more scenarios.

        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.

        Parameters:
        trade - the trade
        ratesLookup - the lookup used to query the market data
        swaptionLookup - the lookup used to query the swaption market data
        marketData - the market data
        Returns:
        the present value sensitivity, one entry per scenario
      • pv01RatesCalibratedSum

        public MultiCurrencyAmount pv01RatesCalibratedSum​(ResolvedCmsTrade trade,
                                                          RatesProvider ratesProvider,
                                                          SwaptionVolatilities volatilities)
        Calculates present value sensitivity for a single set of market data.

        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.

        Parameters:
        trade - the trade
        ratesProvider - the market data
        volatilities - the swaption volatilities
        Returns:
        the present value sensitivity
      • pv01RatesCalibratedBucketed

        public ScenarioArray<CurrencyParameterSensitivities> pv01RatesCalibratedBucketed​(ResolvedCmsTrade trade,
                                                                                         RatesMarketDataLookup ratesLookup,
                                                                                         SwaptionMarketDataLookup swaptionLookup,
                                                                                         ScenarioMarketData marketData)
        Calculates present value sensitivity across one or more scenarios.

        This is the sensitivity of present value to a one basis point shift in the calibrated curves. The result is provided for each affected curve and currency, bucketed by curve node.

        Parameters:
        trade - the trade
        ratesLookup - the lookup used to query the market data
        swaptionLookup - the lookup used to query the swaption market data
        marketData - the market data
        Returns:
        the present value sensitivity, one entry per scenario
      • pv01RatesCalibratedBucketed

        public CurrencyParameterSensitivities pv01RatesCalibratedBucketed​(ResolvedCmsTrade trade,
                                                                          RatesProvider ratesProvider,
                                                                          SwaptionVolatilities volatilities)
        Calculates present value sensitivity for a single set of market data.

        This is the sensitivity of present value to a one basis point shift in the calibrated curves. The result is provided for each affected curve and currency, bucketed by curve node.

        Parameters:
        trade - the trade
        ratesProvider - the market data
        volatilities - the swaption volatilities
        Returns:
        the present value sensitivity
      • pv01RatesMarketQuoteSum

        public MultiCurrencyScenarioArray pv01RatesMarketQuoteSum​(ResolvedCmsTrade trade,
                                                                  RatesMarketDataLookup ratesLookup,
                                                                  SwaptionMarketDataLookup swaptionLookup,
                                                                  ScenarioMarketData marketData)
        Calculates present value sensitivity across one or more scenarios.

        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.

        Parameters:
        trade - the trade
        ratesLookup - the lookup used to query the market data
        swaptionLookup - the lookup used to query the swaption market data
        marketData - the market data
        Returns:
        the present value sensitivity, one entry per scenario
      • pv01RatesMarketQuoteSum

        public MultiCurrencyAmount pv01RatesMarketQuoteSum​(ResolvedCmsTrade trade,
                                                           RatesProvider ratesProvider,
                                                           SwaptionVolatilities volatilities)
        Calculates present value sensitivity for a single set of market data.

        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.

        Parameters:
        trade - the trade
        ratesProvider - the market data
        volatilities - the swaption volatilities
        Returns:
        the present value sensitivity
      • pv01RatesMarketQuoteBucketed

        public ScenarioArray<CurrencyParameterSensitivities> pv01RatesMarketQuoteBucketed​(ResolvedCmsTrade trade,
                                                                                          RatesMarketDataLookup ratesLookup,
                                                                                          SwaptionMarketDataLookup swaptionLookup,
                                                                                          ScenarioMarketData marketData)
        Calculates present value sensitivity across one or more scenarios.

        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.

        Parameters:
        trade - the trade
        ratesLookup - the lookup used to query the market data
        marketData - the market data
        swaptionLookup - the lookup used to query the swaption market data
        Returns:
        the present value sensitivity, one entry per scenario
      • pv01RatesMarketQuoteBucketed

        public CurrencyParameterSensitivities pv01RatesMarketQuoteBucketed​(ResolvedCmsTrade trade,
                                                                           RatesProvider ratesProvider,
                                                                           SwaptionVolatilities volatilities)
        Calculates present value sensitivity for a single set of market data.

        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.

        Parameters:
        trade - the trade
        ratesProvider - the market data
        volatilities - the swaption volatilities
        Returns:
        the present value sensitivity
      • currencyExposure

        public MultiCurrencyScenarioArray currencyExposure​(ResolvedCmsTrade trade,
                                                           RatesMarketDataLookup ratesLookup,
                                                           SwaptionMarketDataLookup swaptionLookup,
                                                           ScenarioMarketData marketData)
        Calculates currency exposure across one or more scenarios.

        The currency risk, expressed as the equivalent amount in each currency.

        Parameters:
        trade - the trade
        ratesLookup - the lookup used to query the market data
        swaptionLookup - the lookup used to query the swaption market data
        marketData - the market data
        Returns:
        the currency exposure, one entry per scenario
      • currencyExposure

        public MultiCurrencyAmount currencyExposure​(ResolvedCmsTrade trade,
                                                    RatesProvider ratesProvider,
                                                    SwaptionVolatilities volatilities)
        Calculates currency exposure for a single set of market data.

        The currency risk, expressed as the equivalent amount in each currency.

        Parameters:
        trade - the trade
        ratesProvider - the market data
        volatilities - the swaption volatilities
        Returns:
        the currency exposure
      • currentCash

        public MultiCurrencyScenarioArray currentCash​(ResolvedCmsTrade trade,
                                                      RatesMarketDataLookup ratesLookup,
                                                      SwaptionMarketDataLookup swaptionLookup,
                                                      ScenarioMarketData marketData)
        Calculates current cash across one or more scenarios.

        The sum of all cash flows paid on the valuation date.

        Parameters:
        trade - the trade
        ratesLookup - the lookup used to query the market data
        swaptionLookup - the lookup used to query the swaption market data
        marketData - the market data
        Returns:
        the current cash, one entry per scenario
      • currentCash

        public MultiCurrencyAmount currentCash​(ResolvedCmsTrade trade,
                                               RatesProvider ratesProvider,
                                               SwaptionVolatilities volatilities)
        Calculates current cash for a single set of market data.

        The sum of all cash flows paid on the valuation date.

        Parameters:
        trade - the trade
        ratesProvider - the market data
        volatilities - the swaption volatilities
        Returns:
        the current cash