Class 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:
    DiscountCurveNelsonSiegelSvensson, Serialized Form
    • Constructor Detail

      • 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 Detail

      • 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.
      • 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.