finMath lib documentation
net.finmath.montecarlo.interestrate.covariancemodels

## Class LIBORVolatilityModelFourParameterExponentialForm

• public class LIBORVolatilityModelFourParameterExponentialForm
extends LIBORVolatilityModel
Implements the volatility model $\sigma_{i}(t_{j}) = ( a + b (T_{i}-t_{j}) ) exp(-c (T_{i}-t_{j})) + d \text{.}$ The parameters here have some interpretation:
• The parameter a: an initial volatility level.
• The parameter b: the slope at the short end (shortly before maturity).
• The parameter c: exponential decay of the volatility in time-to-maturity.
• The parameter d: if c > 0 this is the very long term volatility level.
Note that this model results in a terminal (Black 76) volatility which is given by $\left( \sigma^{\text{Black}}_{i}(t_{k}) \right)^2 = \frac{1}{t_{k}} \sum_{j=0}^{k-1} \left( ( a + b (T_{i}-t_{j}) ) exp(-c (T_{i}-t_{j})) + d \right)^{2} (t_{j+1}-t_{j})$ i.e., the instantaneous volatility is given by the picewise constant approximation of the function $\sigma_{i}(t) = ( a + b (T_{i}-t) ) exp(-c (T_{i}-t)) + d$ on the time discretization $$\{ t_{j} \}$$. For the exact integration of this formula see LIBORVolatilityModelFourParameterExponentialFormIntegrated.
Version:
1.0
Author:
Christian Fries
• ### Constructor Summary

Constructors
Constructor and Description
LIBORVolatilityModelFourParameterExponentialForm(AbstractRandomVariableFactory randomVariableFactory, TimeDiscretizationInterface timeDiscretization, TimeDiscretizationInterface liborPeriodDiscretization, RandomVariableInterface a, RandomVariableInterface b, RandomVariableInterface c, RandomVariableInterface d, boolean isCalibrateable)
Creates the volatility model σi(tj) = ( a + b * (Ti-tj) ) * exp(-c (Ti-tj)) + d
LIBORVolatilityModelFourParameterExponentialForm(TimeDiscretizationInterface timeDiscretization, TimeDiscretizationInterface liborPeriodDiscretization, RandomVariableInterface a, RandomVariableInterface b, RandomVariableInterface c, RandomVariableInterface d, boolean isCalibrateable)
Creates the volatility model σi(tj) = ( a + b * (Ti-tj) ) * exp(-c (Ti-tj)) + d
• ### Method Summary

All Methods
Modifier and Type Method and Description
Object clone()
RandomVariableInterface[] getParameter()
RandomVariableInterface getVolatility(int timeIndex, int liborIndex)
Implement this method to complete the implementation.
void setParameter(RandomVariableInterface[] parameter)
• ### Methods inherited from class net.finmath.montecarlo.interestrate.covariancemodels.LIBORVolatilityModel

getLiborPeriodDiscretization, getTimeDiscretization
• ### Methods inherited from class java.lang.Object

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

• #### LIBORVolatilityModelFourParameterExponentialForm

public LIBORVolatilityModelFourParameterExponentialForm(AbstractRandomVariableFactory randomVariableFactory,
TimeDiscretizationInterface timeDiscretization,
TimeDiscretizationInterface liborPeriodDiscretization,
RandomVariableInterface a,
RandomVariableInterface b,
RandomVariableInterface c,
RandomVariableInterface d,
boolean isCalibrateable)
Creates the volatility model σi(tj) = ( a + b * (Ti-tj) ) * exp(-c (Ti-tj)) + d
Parameters:
randomVariableFactory - The random variable factor used to construct random variables from the parameters.
timeDiscretization - The simulation time discretization tj.
liborPeriodDiscretization - The period time discretization Ti.
a - The parameter a: an initial volatility level.
b - The parameter b: the slope at the short end (shortly before maturity).
c - The parameter c: exponential decay of the volatility in time-to-maturity.
d - The parameter d: if c > 0 this is the very long term volatility level.
isCalibrateable - Set this to true, if the parameters are available for calibration.
• #### LIBORVolatilityModelFourParameterExponentialForm

public LIBORVolatilityModelFourParameterExponentialForm(TimeDiscretizationInterface timeDiscretization,
TimeDiscretizationInterface liborPeriodDiscretization,
RandomVariableInterface a,
RandomVariableInterface b,
RandomVariableInterface c,
RandomVariableInterface d,
boolean isCalibrateable)
Creates the volatility model σi(tj) = ( a + b * (Ti-tj) ) * exp(-c (Ti-tj)) + d
Parameters:
timeDiscretization - The simulation time discretization tj.
liborPeriodDiscretization - The period time discretization Ti.
a - The parameter a: an initial volatility level.
b - The parameter b: the slope at the short end (shortly before maturity).
c - The parameter c: exponential decay of the volatility in time-to-maturity.
d - The parameter d: if c > 0 this is the very long term volatility level.
isCalibrateable - Set this to true, if the parameters are available for calibration.
• ### Method Detail

• #### getParameter

public RandomVariableInterface[] getParameter()
Specified by:
getParameter in class LIBORVolatilityModel
• #### setParameter

public void setParameter(RandomVariableInterface[] parameter)
Specified by:
setParameter in class LIBORVolatilityModel
• #### getVolatility

public RandomVariableInterface getVolatility(int timeIndex,
int liborIndex)
Description copied from class: LIBORVolatilityModel
Implement this method to complete the implementation.
Specified by:
getVolatility in class LIBORVolatilityModel
Parameters:
timeIndex - The time index (for timeDiscretization)
liborIndex - The libor index (for liborPeriodDiscretization)
Returns:
A random variable (e.g. as a vector of doubles) representing the volatility for each path.
• #### clone

public Object clone()
Specified by:
clone in class LIBORVolatilityModel