## Class 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
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. The model can be rewritten as $$S = \exp(X)$$, where $dX = \mu dt + \sqrt{V(t)} dW + dJ^{X}, \quad X(0) = \log(S_{0}),$ with $J^{X}(t) = \sum_{i=1}^{N(t)} \log(Y_{i})$ with $$\mu = r - \frac{1}{2} \sigma^2 - (exp(a)-1) \lambda$$.
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
Modifier and Type Method Description
CharacteristicFunction apply​(double time)
Returns the characteristic function of X(t), where X is this 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()
• ### Methods inherited from class java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
• ### 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 following FloatingpointDate.
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 rate
discountCurveForDiscountRate - The curve specifying $$t \mapsto exp(- r^{\text{d}}(t) \cdot t)$$ - with $$r^{\text{d}}(t)$$ the discount 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).
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 rate
discountCurveForDiscountRate - The curve specifying $$t \mapsto exp(- r^{\text{d}}(t) \cdot t)$$ - with $$r^{\text{d}}(t)$$ the discount 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).
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 is this stochastic process.
Specified by:
apply in interface CharacteristicFunctionModel
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
• #### toString

public String toString()
Overrides:
toString in class Object