- java.lang.Object
-
- net.finmath.fouriermethod.models.BatesModel
-
- All Implemented Interfaces:
CharacteristicFunctionModel
,Model
public class BatesModel extends Object implements CharacteristicFunctionModel
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
Constructors Constructor Description 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.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
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.double[]
getAlpha()
double[]
getBeta()
double
getDelta()
double
getDiscountRate()
double
getInitialValue()
double
getK()
double[]
getLambda()
int
getNumberOfFactors()
LocalDate
getReferenceDate()
double[]
getRho()
double
getRiskFreeRate()
double[]
getSigma()
double[]
getVolatility()
String
toString()
-
-
-
Constructor Detail
-
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 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
-
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
-
-