Module net.finmath.lib
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:
DiscountCurveNelsonSiegelSvensson, Serialized Form
-
-
Constructor Summary
Constructors Constructor Description ForwardCurveNelsonSiegelSvensson(String name, LocalDate referenceDate, String paymentOffsetCode, BusinessdayCalendar paymentBusinessdayCalendar, BusinessdayCalendar.DateRollConvention paymentDateRollConvention, DayCountConvention daycountConvention, double[] parameter, double timeScaling)ForwardCurveNelsonSiegelSvensson(String name, LocalDate referenceDate, String paymentOffsetCode, BusinessdayCalendar paymentBusinessdayCalendar, BusinessdayCalendar.DateRollConvention paymentDateRollConvention, DayCountConvention daycountConvention, double[] parameter, double timeScaling, double periodOffset)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ForwardCurveNelsonSiegelSvenssonclone()Create a deep copied clone.CurveBuildergetCloneBuilder()Returns a curve builder bases on a clone of this curve.ForwardCurveNelsonSiegelSvenssongetCloneForParameter(double[] value)Create a clone with a modified parameter.StringgetDiscountCurveName()doublegetForward(AnalyticModel model, double fixingTime)Returns the forward for the corresponding fixing time.doublegetForward(AnalyticModel model, double fixingTime, double paymentOffset)Returns the forward for the corresponding fixing time and paymentOffset.double[]getForwards(AnalyticModel model, double[] fixingTimes)Returns the forwards for a given vector fixing times.double[]getParameter()Get the current parameter associated with the state of the objects.doublegetPaymentOffset(double fixingTime)Returns the payment offset associated with this forward curve and a corresponding fixingTime.doublegetValue(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.voidsetParameter(double[] parameter)Set the current parameter and change the state of the objects.-
Methods inherited from class net.finmath.marketdata.model.curves.AbstractCurve
getName, getReferenceDate, getValue, getValues, toString
-
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface net.finmath.marketdata.model.curves.Curve
getName, getReferenceDate, getValue
-
-
-
-
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 anAnalyticModelFromCurvesAndVols.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 anAnalyticModelFromCurvesAndVols.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:ForwardCurveReturns the forward for the corresponding fixing time.- Specified by:
getForwardin interfaceForwardCurve- 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:ForwardCurveReturns the forward for the corresponding fixing time and paymentOffset.- Specified by:
getForwardin interfaceForwardCurve- 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:
getDiscountCurveNamein interfaceForwardCurve- 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:CurveReturns 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:
getCloneBuilderin interfaceCurve- Returns:
- An object implementing the CurveBuilderInterface where the underlying curve is a clone of this curve.
-
clone
public ForwardCurveNelsonSiegelSvensson clone() throws CloneNotSupportedException
Description copied from interface:CurveCreate a deep copied clone.- Specified by:
clonein interfaceCurve- Overrides:
clonein classAbstractCurve- 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:ParameterObjectCreate a clone with a modified parameter.- Specified by:
getCloneForParameterin interfaceCurve- Specified by:
getCloneForParameterin interfaceParameterObject- Overrides:
getCloneForParameterin classAbstractCurve- 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:CurveReturns 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.
-
getParameter
public double[] getParameter()
Description copied from interface:ParameterObjectGet the current parameter associated with the state of the objects.- Specified by:
getParameterin interfaceParameterObject- 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:ParameterObjectSet the current parameter and change the state of the objects.- Specified by:
setParameterin interfaceParameterObject- Parameters:
parameter- The parameter associated with the new state of the objects.
-
getPaymentOffset
public double getPaymentOffset(double fixingTime)
Description copied from interface:ForwardCurveReturns the payment offset associated with this forward curve and a corresponding fixingTime.- Specified by:
getPaymentOffsetin interfaceForwardCurve- Parameters:
fixingTime- The fixing time of the index associated with this forward curve.- Returns:
- The payment offset associated with this forward curve.
-
-