java.lang.Object
net.finmath.fouriermethod.models.BatesModel
- All Implemented Interfaces:
CharacteristicFunctionModel
,Model
Implements the characteristic function of a Bates model.
The Bates model for an underlying \( S \) is given by
\[
dS(t) = r^{\text{c}} S(t) dt + \sqrt{V(t)} S(t) dW_{1}(t) + S dJ, \quad S(0) = S_{0},
\]
\[
dV(t) = \kappa ( \theta - V(t) ) dt + \xi \sqrt{V(t)} dW_{2}(t), \quad V(0) = \sigma^2,
\]
\[
dW_{1} dW_{2} = \rho dt
\]
\[
dN(t) = r^{\text{d}} N(t) dt, \quad N(0) = N_{0},
\]
where \( W \) is Brownian motion and \( J \) is a jump process (compound Poisson process).
The free parameters of this model are:
- \( S_{0} \)
- spot - initial value of S
- \( r \)
- the risk free rate
- \( \sigma \)
- the initial volatility level
- \( \xi \)
- the volatility of volatility
- \( \theta \)
- the mean reversion level of the stochastic volatility
- \( \kappa \)
- the mean reversion speed of the stochastic volatility
- \( \rho \)
- the correlation of the Brownian drivers
- \( a \)
- the jump size mean
- \( b \)
- the jump size standard deviation
- Version:
- 1.0
- Author:
- Christian Fries, Andy Graf, Lorenzo Toricelli
-
Constructor Summary
ConstructorsConstructorDescriptionBatesModel(double initialValue, double riskFreeRate, double discountRate, double[] volatility, double[] alpha, double[] beta, double[] sigma, double[] rho, double[] lambda, double k, double delta)
Create a two factor Bates model.BatesModel(double initialValue, double riskFreeRate, double volatility, double alpha, double beta, double sigma, double rho, double lambdaZero, double lambdaOne, double k, double delta)
Create a one factor Bates model.BatesModel(double initialValue, DiscountCurve discountCurveForForwardRate, DiscountCurve discountCurveForDiscountRate, double[] volatility, double[] alpha, double[] beta, double[] sigma, double[] rho, double[] lambda, double k, double delta)
Create a two factor Bates model.BatesModel(LocalDate referenceDate, double initialValue, DiscountCurve discountCurveForForwardRate, DiscountCurve discountCurveForDiscountRate, double[] volatility, double[] alpha, double[] beta, double[] sigma, double[] rho, double[] lambda, double k, double delta)
Create a two factor Bates model. -
Method Summary
Modifier and TypeMethodDescriptionapply(double time)
Returns the characteristic function of X(t), where X isthis
stochastic process.double[]
getAlpha()
double[]
getBeta()
double
getDelta()
double
double
double
getK()
double[]
int
double[]
getRho()
double
double[]
getSigma()
double[]
toString()
-
Constructor Details
-
BatesModel
public BatesModel(LocalDate referenceDate, double initialValue, DiscountCurve discountCurveForForwardRate, DiscountCurve discountCurveForDiscountRate, double[] volatility, double[] alpha, double[] beta, double[] sigma, double[] rho, double[] lambda, double k, double delta)Create a two factor Bates model.- Parameters:
referenceDate
- The date representing the time t = 0. All other double times are followingFloatingpointDate
.initialValue
- 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 ratediscountCurveForDiscountRate
- The curve specifying \( t \mapsto exp(- r^{\text{d}}(t) \cdot t) \) - with \( r^{\text{d}}(t) \) the discount ratevolatility
- Square root of initial value of the stochastic variance process V.alpha
- The parameter alpha/beta is the mean reversion level of the variance process V.beta
- Mean reversion speed of variance process V.sigma
- Volatility of volatility.rho
- Correlations of the Brownian drives (underlying, variance).lambda
- Coefficients of for the jump intensity.k
- Jump size mean.delta
- Jump size variance.
-
BatesModel
public BatesModel(double initialValue, DiscountCurve discountCurveForForwardRate, DiscountCurve discountCurveForDiscountRate, double[] volatility, double[] alpha, double[] beta, double[] sigma, double[] rho, double[] lambda, double k, double delta)Create a two factor Bates model.- Parameters:
initialValue
- 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 ratediscountCurveForDiscountRate
- The curve specifying \( t \mapsto exp(- r^{\text{d}}(t) \cdot t) \) - with \( r^{\text{d}}(t) \) the discount ratevolatility
- Square root of initial value of the stochastic variance process V.alpha
- The parameter alpha/beta is the mean reversion level of the variance process V.beta
- Mean reversion speed of variance process V.sigma
- Volatility of volatility.rho
- Correlations of the Brownian drives (underlying, variance).lambda
- Coefficients of for the jump intensity.k
- Jump size mean.delta
- Jump size variance.
-
BatesModel
public BatesModel(double initialValue, double riskFreeRate, double discountRate, double[] volatility, double[] alpha, double[] beta, double[] sigma, double[] rho, double[] lambda, double k, double delta)Create a two factor Bates model.- Parameters:
initialValue
- Initial value of S.riskFreeRate
- Risk free rate.discountRate
- The rate used for discounting.volatility
- Square root of initial value of the stochastic variance process V.alpha
- The parameter alpha/beta is the mean reversion level of the variance process V.beta
- Mean reversion speed of variance process V.sigma
- Volatility of volatility.rho
- Correlations of the Brownian drives (underlying, variance).lambda
- Coefficients of for the jump intensity.k
- Jump size mean.delta
- Jump size variance.
-
BatesModel
public BatesModel(double initialValue, double riskFreeRate, double volatility, double alpha, double beta, double sigma, double rho, double lambdaZero, double lambdaOne, double k, double delta)Create a one factor Bates model.- Parameters:
initialValue
- Initial value of S.riskFreeRate
- Risk free rate.volatility
- Square root of initial value of the stochastic variance process V.alpha
- The parameter alpha/beta is the mean reversion level of the variance process V.beta
- Mean reversion speed of variance process V.sigma
- Volatility of volatility.rho
- Correlations of the Brownian drives (underlying, variance).lambdaZero
- Constant part of the jump intensity.lambdaOne
- Coefficients of the jump intensity, linear in variance.k
- Jump size mean.delta
- 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
-
getRiskFreeRate
public double getRiskFreeRate()- Returns:
- the riskFreeRate
-
getVolatility
public double[] getVolatility()- Returns:
- the volatility
-
getDiscountRate
public double getDiscountRate()- Returns:
- the discountRate
-
getAlpha
public double[] getAlpha()- Returns:
- the alpha
-
getBeta
public double[] getBeta()- Returns:
- the beta
-
getSigma
public double[] getSigma()- Returns:
- the sigma
-
getRho
public double[] getRho()- Returns:
- the rho
-
getLambda
public double[] getLambda()- Returns:
- the lambda
-
getK
public double getK()- Returns:
- the k
-
getDelta
public double getDelta()- Returns:
- the delta
-
getNumberOfFactors
public int getNumberOfFactors()- Returns:
- the numberOfFactors
-
toString
-