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. repo rate minus dividend yield) and for the discount curve.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. -
Method Summary
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 Details
-
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 Details
-
apply
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
- Returns:
- the referenceDate
-
getInitialValue
public double getInitialValue()- Returns:
- the initialValue
-
getDiscountCurveForForwardRate
- Returns:
- the discountCurveForForwardRate
-
getRiskFreeRate
public double getRiskFreeRate()- Returns:
- the riskFreeRate
-
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
-
toString
-