Class 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 see CurveInterpolation.InterpolationMethod. For the extrapolation methods provided see CurveInterpolation.ExtrapolationMethod. For the possible interpolation entities see CurveInterpolation.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
    • 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 interface Curve
        Overrides:
        getValue in class AbstractCurve
        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.
        Specified by:
        getValue in interface Curve
        Parameters:
        model - An analytic model providing a context.
        time - Time for which the value should be returned.
        Returns:
        The value at the give time.
      • 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 via getParameter() and changed via getCloneForParameter(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)
      • 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 interface ParameterObject
        Parameters:
        parameter - The parameter associated with the new state of the objects.
      • 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 interface Curve
        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.