## Class HestonModel

• All Implemented Interfaces:
CharacteristicFunctionModel, Model

public class HestonModel
extends Object
implements CharacteristicFunctionModel
Implements the characteristic function of a Heston model. The model is $dS(t) = r^{\text{c}}(t) S(t) dt + \sqrt{V(t)} S(t) dW_{1}(t), \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}}(t) N(t) dt, \quad N(0) = N_{0},$ where $$W$$ is a Brownian motion. The model allows to specify two independent rate for forwarding ($$r^{\text{c}}$$) and discounting ($$r^{\text{d}}$$). It thus allow for a simple modelling of a funding / collateral curve (via ($$r^{\text{d}}$$) and/or the specification of a dividend yield. The free parameters of this model are:
$$S_{0}$$
spot - initial value of S
$$r^{\text{c}}$$
the risk free rate (may be provided as a curve or a constant)
$$\sigma$$
the initial volatility level
$$r^{\text{d}}$$
the discount rate (may be provided as a curve or a constant)
$$\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
Version:
1.0
Author:
Christian Fries, Andy Graf, Lorenzo Toricelli
• ### Constructor Summary

Constructors
Constructor Description
HestonModel​(double initialValue, double riskFreeRate, double volatility, double theta, double kappa, double xi, double rho)
HestonModel​(double initialValue, double riskFreeRate, double volatility, double discountRate, double theta, double kappa, double xi, double rho)
Create a Heston model (characteristic function)
HestonModel​(double initialValue, DiscountCurve discountCurveForForwardRate, DiscountCurve discountCurveForDiscountRate, double volatility, double theta, double kappa, double xi, double rho)
Create a Heston model (characteristic function)
HestonModel​(LocalDate referenceDate, double initialValue, DiscountCurve discountCurveForForwardRate, DiscountCurve discountCurveForDiscountRate, double volatility, double theta, double kappa, double xi, double rho)
Create a Heston model (characteristic function)
• ### 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.
DiscountCurve getDiscountCurveForDiscountRate()
DiscountCurve getDiscountCurveForForwardRate()
double getDiscountRate()
double getInitialValue()
double getKappa()
LocalDate getReferenceDate()
double getRho()
double getRiskFreeRate()
double getTheta()
double getVolatility()
double getXi()
String toString()
• ### Methods inherited from class java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
• ### Constructor Detail

• #### HestonModel

public HestonModel​(LocalDate referenceDate,
double initialValue,
DiscountCurve discountCurveForForwardRate,
DiscountCurve discountCurveForDiscountRate,
double volatility,
double theta,
double kappa,
double xi,
double rho)
Create a Heston model (characteristic function)
Parameters:
referenceDate - The date representing the time t = 0. All other double times are following FloatingpointDate.
initialValue - $$S_{0}$$ - spot - 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 - $$\sigma$$ the initial volatility level
theta - $$\theta$$ - the mean reversion level of the stochastic volatility
kappa - $$\kappa$$ - the mean reversion speed of the stochastic volatility
xi - $$\xi$$ - the volatility of volatility
rho - $$\rho$$ - the correlation of the Brownian drivers
• #### HestonModel

public HestonModel​(double initialValue,
DiscountCurve discountCurveForForwardRate,
DiscountCurve discountCurveForDiscountRate,
double volatility,
double theta,
double kappa,
double xi,
double rho)
Create a Heston model (characteristic function)
Parameters:
initialValue - $$S_{0}$$ - spot - 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 - $$\sigma$$ the initial volatility level
theta - $$\theta$$ - the mean reversion level of the stochastic volatility
kappa - $$\kappa$$ - the mean reversion speed of the stochastic volatility
xi - $$\xi$$ - the volatility of volatility
rho - $$\rho$$ - the correlation of the Brownian drivers
• #### HestonModel

public HestonModel​(double initialValue,
double riskFreeRate,
double volatility,
double discountRate,
double theta,
double kappa,
double xi,
double rho)
Create a Heston model (characteristic function)
Parameters:
initialValue - $$S_{0}$$ - spot - initial value of S
riskFreeRate - $$r^{\text{c}}$$ - the risk free rate
volatility - $$\sigma$$ the initial volatility level
discountRate - $$r^{\text{d}}$$ - the discount rate
theta - $$\theta$$ - the mean reversion level of the stochastic volatility
kappa - $$\kappa$$ - the mean reversion speed of the stochastic volatility
xi - $$\xi$$ - the volatility of volatility
rho - $$\rho$$ - the correlation of the Brownian drivers
• #### HestonModel

public HestonModel​(double initialValue,
double riskFreeRate,
double volatility,
double theta,
double kappa,
double xi,
double rho)
• ### 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
• #### 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
• #### getTheta

public double getTheta()
Returns:
the theta
• #### getKappa

public double getKappa()
Returns:
the kappa
• #### getXi

public double getXi()
Returns:
the xi
• #### getRho

public double getRho()
Returns:
the rho
• #### toString

public String toString()
Overrides:
toString in class Object