Module net.finmath.lib
Class AbstractLIBORCovarianceModelParametric
java.lang.Object
net.finmath.montecarlo.interestrate.models.covariance.AbstractLIBORCovarianceModel
net.finmath.montecarlo.interestrate.models.covariance.AbstractLIBORCovarianceModelParametric
- All Implemented Interfaces:
Serializable
,LIBORCovarianceModel
,LIBORCovarianceModelCalibrateable
- Direct Known Subclasses:
BlendedLocalVolatilityModel
,DisplacedLocalVolatilityModel
,ExponentialDecayLocalVolatilityModel
,HullWhiteLocalVolatilityModel
,LIBORCovarianceModelBH
,LIBORCovarianceModelExponentialForm5Param
,LIBORCovarianceModelExponentialForm7Param
,LIBORCovarianceModelFromVolatilityAndCorrelation
,LIBORCovarianceModelStochasticHestonVolatility
,LIBORCovarianceModelStochasticVolatility
public abstract class AbstractLIBORCovarianceModelParametric
extends AbstractLIBORCovarianceModel
implements LIBORCovarianceModelCalibrateable
Base class for parametric covariance models, see also
AbstractLIBORCovarianceModel
.
Parametric models feature a parameter vector which can be inspected
and modified for calibration purposes.
The parameter vector may have zero length, which indicated that the model
is not calibrateable.
This class includes the implementation of a generic calibration algorithm.
If you provide an arbitrary list of calibration products, the class can return
a new instance where the parameters are chosen such that the (weighted) root-mean-square
error of the difference of the value of the calibration products and given target
values is minimized.- Version:
- 1.1
- Author:
- Christian Fries
- See Also:
- Serialized Form
- Date:
- 20.05.2006, 23.02.2014
-
Constructor Summary
ConstructorsConstructorDescriptionAbstractLIBORCovarianceModelParametric(TimeDiscretization timeDiscretization, TimeDiscretization liborPeriodDiscretization, int numberOfFactors)
Constructor consuming time discretizations, which are handled by the super class. -
Method Summary
Modifier and TypeMethodDescriptionabstract Object
clone()
getCloneCalibrated(LIBORMarketModel calibrationModel, CalibrationProduct[] calibrationProducts)
getCloneCalibrated(LIBORMarketModel calibrationModel, CalibrationProduct[] calibrationProducts, Map<String,Object> calibrationParameters)
Performs a generic calibration of the parametric model by trying to match a given vector of calibration product to a given vector of target values using a given vector of weights.getCloneCalibratedLegazy(LIBORMarketModel calibrationModel, CalibrationProduct[] calibrationProducts, Map<String,Object> calibrationParameters)
getCloneWithModifiedParameters(double[] parameters)
Return an instance of this model using a new set of parameters.getCloneWithModifiedParameters(RandomVariable[] parameters)
Return an instance of this model using a new set of parameters.Get the parameters of determining this parametric covariance model.abstract double[]
Get the parameters of determining this parametric covariance model.toString()
Methods inherited from class net.finmath.montecarlo.interestrate.models.covariance.AbstractLIBORCovarianceModel
getCloneWithModifiedData, getCovariance, getCovariance, getFactorLoading, getFactorLoading, getFactorLoading, getFactorLoadingPseudoInverse, getLiborPeriodDiscretization, getNumberOfFactors, getTimeDiscretization
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface net.finmath.montecarlo.interestrate.models.covariance.LIBORCovarianceModel
getCloneWithModifiedData, getCovariance, getCovariance, getFactorLoading, getFactorLoading, getFactorLoading, getFactorLoadingPseudoInverse, getLiborPeriodDiscretization, getNumberOfFactors, getTimeDiscretization
-
Constructor Details
-
AbstractLIBORCovarianceModelParametric
public AbstractLIBORCovarianceModelParametric(TimeDiscretization timeDiscretization, TimeDiscretization liborPeriodDiscretization, int numberOfFactors)Constructor consuming time discretizations, which are handled by the super class.- Parameters:
timeDiscretization
- The vector of simulation time discretization points.liborPeriodDiscretization
- The vector of tenor discretization points.numberOfFactors
- The number of factors to use (a factor reduction is performed)
-
-
Method Details
-
getParameter
Get the parameters of determining this parametric covariance model. The parameters are usually free parameters which may be used in calibration.- Returns:
- Parameter vector.
-
getParameterAsDouble
public abstract double[] getParameterAsDouble()Get the parameters of determining this parametric covariance model. The parameters are usually free parameters which may be used in calibration.- Returns:
- Parameter vector.
-
clone
-
getCloneWithModifiedParameters
public AbstractLIBORCovarianceModelParametric getCloneWithModifiedParameters(RandomVariable[] parameters)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.- Parameters:
parameters
- The new set of parameters.- Returns:
- An instance of AbstractLIBORCovarianceModelParametric with modified parameters.
-
getCloneWithModifiedParameters
public abstract AbstractLIBORCovarianceModelParametric getCloneWithModifiedParameters(double[] parameters)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.- Parameters:
parameters
- The new set of parameters.- Returns:
- An instance of AbstractLIBORCovarianceModelParametric with modified parameters.
-
getCloneCalibrated
public AbstractLIBORCovarianceModelParametric getCloneCalibrated(LIBORMarketModel calibrationModel, CalibrationProduct[] calibrationProducts) throws CalculationException- Throws:
CalculationException
-
getCloneCalibrated
public AbstractLIBORCovarianceModelParametric getCloneCalibrated(LIBORMarketModel calibrationModel, CalibrationProduct[] calibrationProducts, Map<String,Object> calibrationParameters) throws CalculationExceptionPerforms a generic calibration of the parametric model by trying to match a given vector of calibration product to a given vector of target values using a given vector of weights. Optional calibration parameters may be passed using the map calibrationParameters. The keys are (String
s):brownianMotion
: Under this key an object implementingBrownianMotion
may be provided. If so, this Brownian motion is used to build the valuation model.maxIterations
: Under this key an object of type Integer may be provided specifying the maximum number of iterations.accuracy
: Under this key an object of type Double may be provided specifying the desired accuracy. Note that this is understood in the sense that the solver will stop if the iteration does not improve by more than this number.
- Specified by:
getCloneCalibrated
in interfaceLIBORCovarianceModelCalibrateable
- Parameters:
calibrationModel
- The LIBOR market model to be used for calibrations (specifies forward curve and tenor discretization).calibrationProducts
- The array of calibration products.calibrationParameters
- A map of type Map<String, Object> specifying some (optional) calibration parameters.- Returns:
- A new parametric model of the same type than
this
one, but with calibrated parameters. - Throws:
CalculationException
- Thrown if calibration has failed.
-
getCloneCalibratedLegazy
public AbstractLIBORCovarianceModelParametric getCloneCalibratedLegazy(LIBORMarketModel calibrationModel, CalibrationProduct[] calibrationProducts, Map<String,Object> calibrationParameters) throws CalculationException- Throws:
CalculationException
-
toString
-