- java.lang.Object
-
- net.finmath.marketdata2.model.curves.AbstractCurve
-
- net.finmath.marketdata2.model.curves.CurveInterpolation
-
- All Implemented Interfaces:
Serializable
,Cloneable
,ParameterObject
,Curve
- Direct Known Subclasses:
AbstractForwardCurve
,DiscountCurveInterpolation
public class CurveInterpolation extends AbstractCurve implements Serializable, Cloneable
This class represents a curveFromInterpolationPoints build from a set of points in 2D. It provides different interpolation and extrapolation methods applied to a transformation of the input point, examples are- linear interpolation of the input points
- linear interpolation of the log of the input points
- linear interpolation of the log of the input points divided by their respective time
- cubic spline interpolation of the input points (or a function of the input points) (the curveFromInterpolationPoints will be C1).
- Akima interpolation of the input points (or a function of the input points).
- etc.
For the interpolation methods provided seeCurveInterpolation.InterpolationMethod
. For the extrapolation methods provided seeCurveInterpolation.ExtrapolationMethod
. For the possible interpolation entities seeCurveInterpolation.InterpolationEntity
. To construct the curveFromInterpolationPoints, please use the inner class CurveBuilder (a builder pattern). For a demo on how to construct and/or calibrate a curveFromInterpolationPoints see, e.g. net.finmath.tests.marketdata.curves.CurveTest.- Version:
- 1.0
- Author:
- Christian Fries
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
CurveInterpolation.Builder
A builder (following the builder pattern) for CurveFromInterpolationPoints objects.static class
CurveInterpolation.ExtrapolationMethod
Possible extrapolation methods.static class
CurveInterpolation.InterpolationEntity
Possible interpolation entities.static class
CurveInterpolation.InterpolationMethod
Possible interpolation methods.
-
Constructor Summary
Constructors Modifier Constructor Description protected
CurveInterpolation(String name, LocalDate referenceDate, CurveInterpolation.InterpolationMethod interpolationMethod, CurveInterpolation.ExtrapolationMethod extrapolationMethod, CurveInterpolation.InterpolationEntity interpolationEntity)
Create a curveFromInterpolationPoints with a given name, reference date and an interpolation method.CurveInterpolation(String name, LocalDate referenceDate, CurveInterpolation.InterpolationMethod interpolationMethod, CurveInterpolation.ExtrapolationMethod extrapolationMethod, CurveInterpolation.InterpolationEntity interpolationEntity, double[] times, RandomVariable[] values)
Create a curveFromInterpolationPoints with a given name, reference date and an interpolation method from given points
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
addPoint(double time, RandomVariable value, boolean isParameter)
Add a point to this curveFromInterpolationPoints.CurveInterpolation
clone()
Create a deep copied clone.CurveBuilder
getCloneBuilder()
Returns a curve builder bases on a clone of this curve.Curve
getCloneForParameter(RandomVariable[] parameter)
Create a clone with a modified parameter.CurveInterpolation.ExtrapolationMethod
getExtrapolationMethod()
Returns the extrapolation method used by this curveFromInterpolationPoints.CurveInterpolation.InterpolationEntity
getInterpolationEntity()
Returns the interpolation entity used by this curveFromInterpolationPoints.CurveInterpolation.InterpolationMethod
getInterpolationMethod()
Returns the interpolation method used by this curveFromInterpolationPoints.RandomVariable[]
getParameter()
Get the current parameter associated with the state of the objects.protected int
getParameterIndex(double time)
protected int
getTimeIndex(double time)
RandomVariable
getValue(double time)
Returns the value for the time using the interpolation method associated with this curve.RandomVariable
getValue(AnalyticModel model, double time)
Returns the value for the time using the interpolation method associated with this curve within a given context, i.e., a model.void
setParameter(RandomVariable[] parameter)
Set the current parameter and change the state of the objects.String
toString()
-
Methods inherited from class net.finmath.marketdata2.model.curves.AbstractCurve
getName, getReferenceDate, getValues
-
-
-
-
Constructor Detail
-
CurveInterpolation
public CurveInterpolation(String name, LocalDate referenceDate, CurveInterpolation.InterpolationMethod interpolationMethod, CurveInterpolation.ExtrapolationMethod extrapolationMethod, CurveInterpolation.InterpolationEntity interpolationEntity, double[] times, RandomVariable[] values)
Create a curveFromInterpolationPoints with a given name, reference date and an interpolation method from given points- Parameters:
name
- The name of this curveFromInterpolationPoints.referenceDate
- The reference date for this curveFromInterpolationPoints, i.e., the date which defined t=0.interpolationMethod
- The interpolation method used for the curveFromInterpolationPoints.extrapolationMethod
- The extrapolation method used for the curveFromInterpolationPoints.interpolationEntity
- The entity interpolated/extrapolated.times
- A vector of times.values
- A vector of corresponding values.
-
CurveInterpolation
protected CurveInterpolation(String name, LocalDate referenceDate, CurveInterpolation.InterpolationMethod interpolationMethod, CurveInterpolation.ExtrapolationMethod extrapolationMethod, CurveInterpolation.InterpolationEntity interpolationEntity)
Create a curveFromInterpolationPoints with a given name, reference date and an interpolation method.- Parameters:
name
- The name of this curveFromInterpolationPoints.referenceDate
- The reference date for this curveFromInterpolationPoints, i.e., the date which defined t=0.interpolationMethod
- The interpolation method used for the curveFromInterpolationPoints.extrapolationMethod
- The extrapolation method used for the curveFromInterpolationPoints.interpolationEntity
- The entity interpolated/extrapolated.
-
-
Method Detail
-
getValue
public RandomVariable getValue(double time)
Description copied from interface:Curve
Returns the value for the time using the interpolation method associated with this curve.- Specified by:
getValue
in interfaceCurve
- Overrides:
getValue
in classAbstractCurve
- Parameters:
time
- Time for which the value should be returned.- Returns:
- The value at the give time.
-
getValue
public RandomVariable getValue(AnalyticModel model, double time)
Description copied from interface:Curve
Returns the value for the time using the interpolation method associated with this curve within a given context, i.e., a model. The model (context) is needed only if the curve relies on another curve. Examples are a forward curve which relies on a discount curve or a discount curve which is defined via a spread over another curve.
-
addPoint
protected void addPoint(double time, RandomVariable value, boolean isParameter)
Add a point to this curveFromInterpolationPoints. The method will throw an exception if the point is already part of the curveFromInterpolationPoints.- Parameters:
time
- The xi in i = f(xi).value
- The yi in i = f(xi).isParameter
- If true, then this point is served viagetParameter()
and changed viagetCloneForParameter(RandomVariable[])
, i.e., it can be calibrated.
-
getInterpolationMethod
public CurveInterpolation.InterpolationMethod getInterpolationMethod()
Returns the interpolation method used by this curveFromInterpolationPoints.- Returns:
- The interpolation method used by this curveFromInterpolationPoints.
-
getExtrapolationMethod
public CurveInterpolation.ExtrapolationMethod getExtrapolationMethod()
Returns the extrapolation method used by this curveFromInterpolationPoints.- Returns:
- The extrapolation method used by this curveFromInterpolationPoints.
-
getInterpolationEntity
public CurveInterpolation.InterpolationEntity getInterpolationEntity()
Returns the interpolation entity used by this curveFromInterpolationPoints.- Returns:
- The interpolation entity used by this curveFromInterpolationPoints.
-
getTimeIndex
protected int getTimeIndex(double time)
-
getParameterIndex
protected int getParameterIndex(double time)
-
getParameter
public RandomVariable[] getParameter()
Description copied from interface:ParameterObject
Get the current parameter associated with the state of the objects.- Specified by:
getParameter
in interfaceParameterObject
- Returns:
- The parameter.
-
setParameter
public void setParameter(RandomVariable[] parameter)
Description copied from interface:ParameterObject
Set the current parameter and change the state of the objects.- Specified by:
setParameter
in interfaceParameterObject
- Parameters:
parameter
- The parameter associated with the new state of the objects.
-
clone
public CurveInterpolation clone() throws CloneNotSupportedException
Description copied from interface:Curve
Create a deep copied clone.- Specified by:
clone
in interfaceCurve
- Overrides:
clone
in classAbstractCurve
- Returns:
- A clone (deep copied).
- Throws:
CloneNotSupportedException
- Thrown, when the curve could not be cloned.
-
getCloneForParameter
public Curve getCloneForParameter(RandomVariable[] parameter) throws CloneNotSupportedException
Description copied from interface:ParameterObject
Create a clone with a modified parameter.- Specified by:
getCloneForParameter
in interfaceCurve
- Specified by:
getCloneForParameter
in interfaceParameterObject
- Overrides:
getCloneForParameter
in classAbstractCurve
- Parameters:
parameter
- The new parameter.- Returns:
- A clone with an otherwise modified parameter.
- Throws:
CloneNotSupportedException
- Thrown, when the curve could not be cloned.
-
getCloneBuilder
public CurveBuilder getCloneBuilder() throws CloneNotSupportedException
Description copied from interface:Curve
Returns a curve builder bases on a clone of this curve. Using that curve builder you may create a new curve from this curve by adding points or changing properties. Note: The clone has the same name than this one.- Specified by:
getCloneBuilder
in interfaceCurve
- Returns:
- An object implementing the CurveBuilderInterface where the underlying curve is a clone of this curve.
- Throws:
CloneNotSupportedException
- Thrown, when this curve could not be cloned.
-
toString
public String toString()
- Overrides:
toString
in classAbstractCurve
-
-