Class ForwardCurveNelsonSiegelSvensson

java.lang.Object
net.finmath.marketdata.model.curves.AbstractCurve
net.finmath.marketdata.model.curves.ForwardCurveNelsonSiegelSvensson
All Implemented Interfaces:
Serializable, Cloneable, ParameterObject, Curve, ForwardCurve

public class ForwardCurveNelsonSiegelSvensson extends AbstractCurve implements Serializable, ForwardCurve
Implementation of a forward given by a Nelson-Siegel-Svensson (NSS) parameterization. In the NSS parameterization the zero rate \( r(T) \) is given by \[ r(T) = \beta_0 + \beta_1 \frac{1-x_0}{T/\tau_0} + \beta_2 ( \frac{1-x_0}{T/\tau_0} - x_0) + \beta_3 ( \frac{1-x_1}{T/\tau_1} - x_1) \] where \( x_0 = \exp(-T/\tau_0) \) and \( x_1 = \exp(-T/\tau_1) \). The sub-family of curves with \( \beta_3 = 0 \) is called Nelson-Siegel parameterization.
Version:
1.0
Author:
Christian Fries
See Also:
  • Constructor Details

    • ForwardCurveNelsonSiegelSvensson

      public ForwardCurveNelsonSiegelSvensson(String name, LocalDate referenceDate, String paymentOffsetCode, BusinessdayCalendar paymentBusinessdayCalendar, BusinessdayCalendar.DateRollConvention paymentDateRollConvention, DayCountConvention daycountConvention, double[] parameter, double timeScaling, double periodOffset)
      Parameters:
      name - The name of the curve. The curve can be fetched under this name when being part of an AnalyticModelFromCurvesAndVols.
      referenceDate - The reference date to the curve, i.e., the date associated with t=0.
      paymentOffsetCode - The payment offset code, like 3M, 6M, 12M, etc., used in calculating forwards from discount factors.
      paymentBusinessdayCalendar - The payment businessday calendar.
      paymentDateRollConvention - The payment date roll convention.
      daycountConvention - The daycount convention.
      parameter - The Nelson-Siegel-Svensson parameters in the order \( ( \beta_0, \beta_1, \beta_2, \beta_3, \tau_0, \tau_1 ) \).
      timeScaling - A scaling factor applied to t when converting from global double time to the parametric function argument t.
      periodOffset - An offset in ACT/365 applied to the fixing to construct the period start (the negative of the fixingOffset of the period).
    • ForwardCurveNelsonSiegelSvensson

      public ForwardCurveNelsonSiegelSvensson(String name, LocalDate referenceDate, String paymentOffsetCode, BusinessdayCalendar paymentBusinessdayCalendar, BusinessdayCalendar.DateRollConvention paymentDateRollConvention, DayCountConvention daycountConvention, double[] parameter, double timeScaling)
      Parameters:
      name - The name of the curve. The curve can be fetched under this name when being part of an AnalyticModelFromCurvesAndVols.
      referenceDate - The reference date to the curve, i.e., the date associated with t=0.
      paymentOffsetCode - The payment offset code, like 3M, 6M, 12M, etc., used in calculating forwards from discount factors.
      paymentBusinessdayCalendar - The payment businessday calendar.
      paymentDateRollConvention - The payment date roll convention.
      daycountConvention - The daycount convention.
      parameter - The Nelson-Siegel-Svensson parameters in the order \( ( \beta_0, \beta_1, \beta_2, \beta_3, \tau_0, \tau_1 ) \).
      timeScaling - A scaling factor applied to t when converting from global double time to the parametric function argument t.
  • Method Details

    • getForward

      public double getForward(AnalyticModel model, double fixingTime)
      Description copied from interface: ForwardCurve
      Returns the forward for the corresponding fixing time.
      Specified by:
      getForward in interface ForwardCurve
      Parameters:
      model - An analytic model providing a context. Some curves do not need this (can be null).
      fixingTime - The fixing time of the index associated with this forward curve.
      Returns:
      The forward.
    • getForward

      public double getForward(AnalyticModel model, double fixingTime, double paymentOffset)
      Description copied from interface: ForwardCurve
      Returns the forward for the corresponding fixing time and paymentOffset.
      Specified by:
      getForward in interface ForwardCurve
      Parameters:
      model - An analytic model providing a context. Some curves do not need this (can be null).
      fixingTime - The fixing time of the index associated with this forward curve.
      paymentOffset - The payment offset (as internal day count fraction) specifying the payment of this index. Used only as a fallback and/or consistency check.
      Returns:
      The forward.
    • getDiscountCurveName

      public String getDiscountCurveName()
      Specified by:
      getDiscountCurveName in interface ForwardCurve
      Returns:
      The name of the discount curve associated with this forward curve (e.g. OIS for collateralized forwards)
    • getCloneBuilder

      public CurveBuilder getCloneBuilder()
      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.
    • clone

      Description copied from interface: Curve
      Create a deep copied clone.
      Specified by:
      clone in interface Curve
      Overrides:
      clone in class AbstractCurve
      Returns:
      A clone (deep copied).
      Throws:
      CloneNotSupportedException - Thrown, when the curve could not be cloned.
    • getCloneForParameter

      public ForwardCurveNelsonSiegelSvensson getCloneForParameter(double[] value) throws CloneNotSupportedException
      Description copied from interface: ParameterObject
      Create a clone with a modified parameter.
      Specified by:
      getCloneForParameter in interface Curve
      Specified by:
      getCloneForParameter in interface ParameterObject
      Overrides:
      getCloneForParameter in class AbstractCurve
      Parameters:
      value - The new parameter.
      Returns:
      A clone with an otherwise modified parameter.
      Throws:
      CloneNotSupportedException - Thrown, when the curve could not be cloned.
    • getValue

      public double 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.
    • getParameter

      public double[] getParameter()
      Description copied from interface: ParameterObject
      Get the current parameter associated with the state of the objects.
      Specified by:
      getParameter in interface ParameterObject
      Returns:
      The parameter.
    • getForwards

      public double[] getForwards(AnalyticModel model, double[] fixingTimes)
      Returns the forwards for a given vector fixing times.
      Parameters:
      model - An analytic model providing a context. The discount curve (if needed) is obtained from this model.
      fixingTimes - The given fixing times.
      Returns:
      The forward rates.
    • setParameter

      public void setParameter(double[] 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.
    • getPaymentOffset

      public double getPaymentOffset(double fixingTime)
      Description copied from interface: ForwardCurve
      Returns the payment offset associated with this forward curve and a corresponding fixingTime.
      Specified by:
      getPaymentOffset in interface ForwardCurve
      Parameters:
      fixingTime - The fixing time of the index associated with this forward curve.
      Returns:
      The payment offset associated with this forward curve.