Class MertonModel

  • All Implemented Interfaces:
    CharacteristicFunctionModel, Model

    public class MertonModel
    extends Object
    implements CharacteristicFunctionModel
    Implements the characteristic function of a Merton jump diffusion model. The model is \[ dS = \mu S dt + \sigma S dW + S dJ, \quad S(0) = S_{0}, \] \[ dN = r N dt, \quad N(0) = N_{0}, \] where \( W \) is Brownian motion and \( J \) is a jump process (compound Poisson process). The process \( J \) is given by \( J(t) = \sum_{i=1}^{N(t)} (Y_{i}-1) \), where \( \log(Y_{i}) \) are i.i.d. normals with mean \( a - \frac{1}{2} b^{2} \) and standard deviation \( b \). Here \( a \) is the jump size mean and \( b \) is the jump size std. dev.
    Version:
    1.0
    Author:
    Alessandro Gnoatto
    • Constructor Detail

      • MertonModel

        public MertonModel​(LocalDate referenceDate,
                           double initialValue,
                           DiscountCurve discountCurveForForwardRate,
                           DiscountCurve discountCurveForDiscountRate,
                           double volatility,
                           double jumpIntensity,
                           double jumpSizeMean,
                           double jumpSizeStdDev)
        Construct a Merton jump diffusion model with discount curves for the forward price (i.e. repo rate minus dividend yield) and for discounting.
        Parameters:
        referenceDate - The date representing the time t = 0. All other double times are following FloatingpointDate.
        initialValue - \( S_{0} \) - spot - initial value of S
        discountCurveForForwardRate - The curve specifying \( t \mapsto exp(- r^{\text{c}}(t) \cdot t) \) - with \( r^{\text{c}}(t) \) the risk free rate
        volatility - \( \sigma \) the initial volatility level
        jumpIntensity - Coefficients of for the jump intensity.
        jumpSizeMean - Jump size mean
        jumpSizeStdDev - Jump size variance.
        discountCurveForDiscountRate - The curve specifying \( t \mapsto exp(- r^{\text{d}}(t) \cdot t) \) - with \( r^{\text{d}}(t) \) the discount rate
      • MertonModel

        public MertonModel​(double initialValue,
                           double riskFreeRate,
                           double discountRate,
                           double volatility,
                           double jumpIntensity,
                           double jumpSizeMean,
                           double jumpSizeStdDev)
        Construct a Merton jump diffusion model with constant rates for the forward price (i.e. repo rate minus dividend yield) and for the discount curve.
        Parameters:
        initialValue - \( S_{0} \) - spot - initial value of S
        riskFreeRate - The constant risk free rate for the drift (repo rate of the underlying).
        volatility - \( \sigma \) the initial volatility level
        jumpIntensity - Coefficients of for the jump intensity.
        jumpSizeMean - Jump size mean
        jumpSizeStdDev - Jump size variance.
        discountRate - The constant rate used for discounting.
      • MertonModel

        public MertonModel​(double initialValue,
                           double riskFreeRate,
                           double volatility,
                           double jumpIntensity,
                           double jumpSizeMean,
                           double jumpSizeStdDev)
        Construct a single curve Merton jump diffusion model.
        Parameters:
        initialValue - \( S_{0} \) - spot - initial value of S
        riskFreeRate - The constant risk free rate for the drift (repo rate of the underlying). It is also used for discounting.
        volatility - \( \sigma \) the initial volatility level
        jumpIntensity - Coefficients of for the jump intensity.
        jumpSizeMean - Jump size mean
        jumpSizeStdDev - Jump size variance.
    • Method Detail

      • getReferenceDate

        public LocalDate getReferenceDate()
        Returns:
        the referenceDate
      • getInitialValue

        public double getInitialValue()
        Returns:
        the initialValue
      • getDiscountCurveForForwardRate

        public DiscountCurve getDiscountCurveForForwardRate()
        Returns:
        the discountCurveForForwardRate
      • getRiskFreeRate

        public double getRiskFreeRate()
        Returns:
        the riskFreeRate
      • getDiscountCurveForDiscountRate

        public DiscountCurve getDiscountCurveForDiscountRate()
        Returns:
        the discountCurveForDiscountRate
      • getDiscountRate

        public double getDiscountRate()
        Returns:
        the discountRate
      • getVolatility

        public double getVolatility()
        Returns:
        the volatility
      • getJumpIntensity

        public double getJumpIntensity()
        Returns:
        the jumpIntensity
      • getJumpSizeMean

        public double getJumpSizeMean()
        Returns:
        the jumpSizeMean
      • getJumpSizeStdDev

        public double getJumpSizeStdDev()
        Returns:
        the jumpSizeStdDev