Class SABRVolatilityCube

  • All Implemented Interfaces:
    Serializable, VolatilityCube

    public class SABRVolatilityCube
    extends Object
    implements VolatilityCube, Serializable
    A volatility cube that uses a grid of SABR models for the calculation of the volatility with different strikes. The SABR parameters \( \beta \) and displacement are globally set for the entire cube. For the other SABR parameters the cube stores a grid of maturity x termination and a set of parameters for each node of this grid. Between the nodes of this grid, the SABR parameters are interpolated.
    Author:
    Christian Fries, Roland Bachl
    See Also:
    Serialized Form
    • Constructor Detail

      • SABRVolatilityCube

        public SABRVolatilityCube​(String name,
                                  LocalDate referenceDate,
                                  DataTable swapRateTable,
                                  double sabrDisplacement,
                                  double sabrBeta,
                                  DataTable rhoTable,
                                  DataTable baseVolTable,
                                  DataTable volvolTable,
                                  double correlationDecay)
        Create the cube. With ibor ois decorrelation set to 1.0.
        Parameters:
        name - The name of the cube.
        referenceDate - The reference date of the cube.
        swapRateTable - Table containing base swap rates.
        sabrDisplacement - Displacement for the entire cube.
        sabrBeta - Beta for the entire cube.
        rhoTable - Table containing rhos.
        baseVolTable - Table containing initial volatilities.
        volvolTable - Table containing volvols.
        correlationDecay - The correlation decay parameters of this cube.
      • SABRVolatilityCube

        public SABRVolatilityCube​(String name,
                                  LocalDate referenceDate,
                                  DataTable swapRateTable,
                                  double sabrDisplacement,
                                  double sabrBeta,
                                  DataTable rhoTable,
                                  DataTable baseVolTable,
                                  DataTable volvolTable,
                                  double correlationDecay,
                                  double iborOisDecorrelation)
        Create the cube.
        Parameters:
        name - The name of the cube.
        referenceDate - The reference date of the cube.
        swapRateTable - Table containing base swap rates.
        sabrDisplacement - Displacement for the entire cube.
        sabrBeta - Beta for the entire cube.
        rhoTable - Table containing rhos.
        baseVolTable - Table containing initial volatilities.
        volvolTable - Table containing volvols.
        correlationDecay - The correlation decay parameters of this cube.
        iborOisDecorrelation - The ibor ois decorrelation parameter of this cube.
    • Method Detail

      • getValue

        public double getValue​(VolatilityCubeModel model,
                               double termination,
                               double maturity,
                               double strike,
                               VolatilitySurface.QuotingConvention quotingConvention)
        Description copied from interface: VolatilityCube
        Return the volatility at the specified coordinates in the desired quotation.
        Specified by:
        getValue in interface VolatilityCube
        Parameters:
        model - A model providing context.
        termination - End date of the underlying.
        maturity - Maturity date of the option.
        strike - Strike rate of the option.
        quotingConvention - Desired quoting convention.
        Returns:
        The volatility.
      • getValue

        public double getValue​(double termination,
                               double maturity,
                               double strike,
                               VolatilitySurface.QuotingConvention quotingConvention)
        Description copied from interface: VolatilityCube
        Return the volatility at the specified coordinates in the desired quotation.
        Specified by:
        getValue in interface VolatilityCube
        Parameters:
        termination - End date of the underlying.
        maturity - Maturity date of the option.
        strike - Strike rate of the option.
        quotingConvention - Desired quoting convention.
        Returns:
        The volatility.
      • getName

        public String getName()
        Description copied from interface: VolatilityCube
        Returns the name of the volatility cube.
        Specified by:
        getName in interface VolatilityCube
        Returns:
        The name of the volatility cube.
      • getReferenceDate

        public LocalDate getReferenceDate()
        Description copied from interface: VolatilityCube
        Return the reference date of this cube, i.e. the date associated with t=0.
        Specified by:
        getReferenceDate in interface VolatilityCube
        Returns:
        The date identified as t=0.
      • getCorrelationDecay

        public double getCorrelationDecay()
        Description copied from interface: VolatilityCube
        Return the correlation decay parameter of the cube. This is used to determine the correlation between tenors in a derived volvol cube.
        Specified by:
        getCorrelationDecay in interface VolatilityCube
        Returns:
        The correlation decay parameter.
      • getParameters

        public Map<String,​Object> getParameters()
        Description copied from interface: VolatilityCube
        Returns a map with all implementation dependent parameters of this volatility cube.
        Specified by:
        getParameters in interface VolatilityCube
        Returns:
        A map of all parameters.
      • getLowestStrike

        public double getLowestStrike​(VolatilityCubeModel model)
        Description copied from interface: VolatilityCube
        Returns the lowest possible value of strike that can be evaluated by this cube. This is relevant for instance when an implementation uses a SABR model with displacement.
        Specified by:
        getLowestStrike in interface VolatilityCube
        Parameters:
        model - A model for context.
        Returns:
        Lowest possible strike this volatility cube supports.
      • getIborOisDecorrelation

        public double getIborOisDecorrelation()
        Description copied from interface: VolatilityCube
        Return the IBOR vs OIS decorrelation parameter. This parameter scales the convexity adjustment in a multi curve model, using different curves for forward rates and discounting.
        Specified by:
        getIborOisDecorrelation in interface VolatilityCube
        Returns:
        The IBOR vs OIS decorrelation parameter.
      • getUnderlyingTable

        public DataTable getUnderlyingTable()
        Returns:
        The table of swap rates.
      • getRhoTable

        public DataTable getRhoTable()
        Returns:
        The table of rhos.
      • getBaseVolTable

        public DataTable getBaseVolTable()
        Returns:
        The table containing initial volatilities.
      • getVolvolTable

        public DataTable getVolvolTable()
        Returns:
        The table containing volvols.