Class LIBORVolatilityModelFourParameterExponentialForm

java.lang.Object
net.finmath.montecarlo.interestrate.models.covariance.LIBORVolatilityModel
net.finmath.montecarlo.interestrate.models.covariance.LIBORVolatilityModelFourParameterExponentialForm
All Implemented Interfaces:
Serializable

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
See Also:
  • Constructor Details

    • LIBORVolatilityModelFourParameterExponentialForm

      public LIBORVolatilityModelFourParameterExponentialForm(RandomVariableFactory randomVariableFactory, TimeDiscretization timeDiscretization, TimeDiscretization liborPeriodDiscretization, RandomVariable a, RandomVariable b, RandomVariable c, RandomVariable 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(TimeDiscretization timeDiscretization, TimeDiscretization liborPeriodDiscretization, RandomVariable a, RandomVariable b, RandomVariable c, RandomVariable 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.
    • LIBORVolatilityModelFourParameterExponentialForm

      public LIBORVolatilityModelFourParameterExponentialForm(RandomVariableFactory randomVariableFactory, TimeDiscretization timeDiscretization, TimeDiscretization liborPeriodDiscretization, double a, double b, double c, double 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(TimeDiscretization timeDiscretization, TimeDiscretization liborPeriodDiscretization, double a, double b, double c, double 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 Details

    • getParameter

      public RandomVariable[] getParameter()
      Specified by:
      getParameter in class LIBORVolatilityModel
    • getCloneWithModifiedParameter

      public LIBORVolatilityModelFourParameterExponentialForm getCloneWithModifiedParameter(RandomVariable[] parameter)
      Specified by:
      getCloneWithModifiedParameter in class LIBORVolatilityModel
    • getVolatility

      public RandomVariable 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 timeDiscretizationFromArray)
      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
    • getCloneWithModifiedData

      public LIBORVolatilityModel getCloneWithModifiedData(Map<String,Object> dataModified)
      Description copied from class: LIBORVolatilityModel
      Returns a clone of this model where the specified properties have been modified. Note that there is no guarantee that a model reacts on a specification of a properties in the parameter map dataModified. If data is provided which is ignored by the model no exception may be thrown. Furthermore the structure of the correlation model has to match changed data. A change of the time discretizations may requires a change in the parameters but this function will just insert the new time discretization without changing the parameters. An exception may not be thrown.
      Specified by:
      getCloneWithModifiedData in class LIBORVolatilityModel
      Parameters:
      dataModified - Key-value-map of parameters to modify.
      Returns:
      A clone of this model (or a new instance of this model if no parameter was modified).