- java.lang.Object
-
- net.finmath.fouriermethod.models.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 Summary
Constructors Constructor Description MertonModel(double initialValue, double riskFreeRate, double volatility, double jumpIntensity, double jumpSizeMean, double jumpSizeStdDev)
Construct a single curve Merton jump diffusion model.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.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.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description CharacteristicFunction
apply(double time)
Returns the characteristic function of X(t), where X isthis
stochastic process.DiscountCurve
getDiscountCurveForDiscountRate()
DiscountCurve
getDiscountCurveForForwardRate()
double
getDiscountRate()
double
getInitialValue()
double
getJumpIntensity()
double
getJumpSizeMean()
double
getJumpSizeStdDev()
LocalDate
getReferenceDate()
double
getRiskFreeRate()
double
getVolatility()
String
toString()
-
-
-
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 followingFloatingpointDate
.initialValue
- \( S_{0} \) - spot - initial value of SdiscountCurveForForwardRate
- The curve specifying \( t \mapsto exp(- r^{\text{c}}(t) \cdot t) \) - with \( r^{\text{c}}(t) \) the risk free ratevolatility
- \( \sigma \) the initial volatility leveljumpIntensity
- Coefficients of for the jump intensity.jumpSizeMean
- Jump size meanjumpSizeStdDev
- 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 SriskFreeRate
- The constant risk free rate for the drift (repo rate of the underlying).volatility
- \( \sigma \) the initial volatility leveljumpIntensity
- Coefficients of for the jump intensity.jumpSizeMean
- Jump size meanjumpSizeStdDev
- 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 SriskFreeRate
- The constant risk free rate for the drift (repo rate of the underlying). It is also used for discounting.volatility
- \( \sigma \) the initial volatility leveljumpIntensity
- Coefficients of for the jump intensity.jumpSizeMean
- Jump size meanjumpSizeStdDev
- Jump size variance.
-
-
Method Detail
-
apply
public CharacteristicFunction apply(double time)
Description copied from interface:CharacteristicFunctionModel
Returns the characteristic function of X(t), where X isthis
stochastic process.- Specified by:
apply
in interfaceCharacteristicFunctionModel
- Parameters:
time
- The time at which the stochastic process is observed.- Returns:
- The characteristic function of X(t).
-
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
-
-