Class HullWhiteLocalVolatilityModel

All Implemented Interfaces:
Serializable, LIBORCovarianceModel, LIBORCovarianceModelCalibrateable

public class HullWhiteLocalVolatilityModel extends AbstractLIBORCovarianceModelParametric
Special variant of a blended model (or displaced diffusion model) build on top of a standard covariance model using the special function corresponding to the Hull-White local volatility. The model constructed for the i-th factor loading is (1+Li(t) d) Fi(t) where d is a constant (the period length), Li is the realization of the i-th component of the stochastic process and Fi is the factor loading from the given covariance model. If this model is combined with an exponential decay volatility model LIBORVolatilityModelTwoParameterExponentialForm, then the resulting LIBOR Market model corresponds to a Hull-White short rate model (with constant short rate volatility and mean reversion). The parameter of this model is the parameter vector of the given base covariance model.
Version:
1.0
Author:
Christian Fries
See Also:
  • Constructor Details

    • HullWhiteLocalVolatilityModel

      public HullWhiteLocalVolatilityModel(AbstractLIBORCovarianceModelParametric covarianceModel, double periodLength)
      The model constructed for the i-th factor loading is (1+Li(t) d) Fi(t) where d is a constant (the period length), Li is the realization of the i-th component of the stochastic process and Fi is the factor loading from the given covariance model. The parameter of this model is the parameter vector of the given base covariance model.
      Parameters:
      covarianceModel - The given covariance model specifying the factor loadings F.
      periodLength - The parameter d in the formula above.
  • Method Details

    • clone

      public Object clone()
      Specified by:
      clone in class AbstractLIBORCovarianceModelParametric
    • getBaseCovarianceModel

      public AbstractLIBORCovarianceModelParametric getBaseCovarianceModel()
      Returns the base covariance model, i.e., the model providing the factor loading F.
      Returns:
      The base covariance model.
    • getParameterAsDouble

      public double[] getParameterAsDouble()
      Description copied from class: AbstractLIBORCovarianceModelParametric
      Get the parameters of determining this parametric covariance model. The parameters are usually free parameters which may be used in calibration.
      Specified by:
      getParameterAsDouble in class AbstractLIBORCovarianceModelParametric
      Returns:
      Parameter vector.
    • getCloneWithModifiedParameters

      public AbstractLIBORCovarianceModelParametric getCloneWithModifiedParameters(double[] parameters)
      Description copied from class: AbstractLIBORCovarianceModelParametric
      Return an instance of this model using a new set of parameters. Note: To improve performance it is admissible to return the same instance of the object given that the parameters have not changed. Models should be immutable.
      Specified by:
      getCloneWithModifiedParameters in class AbstractLIBORCovarianceModelParametric
      Parameters:
      parameters - The new set of parameters.
      Returns:
      An instance of AbstractLIBORCovarianceModelParametric with modified parameters.
    • getFactorLoading

      public RandomVariable[] getFactorLoading(int timeIndex, int component, RandomVariable[] realizationAtTimeIndex)
      Description copied from interface: LIBORCovarianceModel
      Return the factor loading for a given time index and component index. The factor loading is the vector fi such that the scalar product
      fjfk = fj,1fk,1 + ... + fj,mfk,m
      is the instantaneous covariance of the component j and k.
      Specified by:
      getFactorLoading in interface LIBORCovarianceModel
      Specified by:
      getFactorLoading in class AbstractLIBORCovarianceModel
      Parameters:
      timeIndex - The time index at which factor loading is requested.
      component - The index of the component i.
      realizationAtTimeIndex - The realization of the stochastic process (may be used to implement local volatility/covariance/correlation models).
      Returns:
      The factor loading fi(t).
    • getFactorLoadingPseudoInverse

      public RandomVariable getFactorLoadingPseudoInverse(int timeIndex, int component, int factor, RandomVariable[] realizationAtTimeIndex)
      Description copied from interface: LIBORCovarianceModel
      Returns the pseudo inverse of the factor matrix.
      Specified by:
      getFactorLoadingPseudoInverse in interface LIBORCovarianceModel
      Specified by:
      getFactorLoadingPseudoInverse in class AbstractLIBORCovarianceModel
      Parameters:
      timeIndex - The time index at which factor loading inverse is requested.
      component - The index of the component i.
      factor - The index of the factor j.
      realizationAtTimeIndex - The realization of the stochastic process (may be used to implement local volatility/covariance/correlation models).
      Returns:
      The entry of the pseudo-inverse of the factor loading matrix.
    • getCloneWithModifiedData

      public AbstractLIBORCovarianceModelParametric getCloneWithModifiedData(Map<String,Object> dataModified) throws CalculationException
      Description copied from interface: LIBORCovarianceModel
      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 covariance 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 interface LIBORCovarianceModel
      Specified by:
      getCloneWithModifiedData in class AbstractLIBORCovarianceModel
      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).
      Throws:
      CalculationException - Thrown when the model could not be created.