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
ConstructorsConstructorDescriptionForwardCurveNelsonSiegelSvensson(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
Modifier and TypeMethodDescriptionclone()Create a deep copied clone.Returns a curve builder bases on a clone of this curve.getCloneForParameter(double[] value)Create a clone with a modified parameter.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[]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, toStringMethods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface net.finmath.marketdata.model.curves.Curve
getName, getReferenceDate, getValue
-
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 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 Details
-
getForward
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
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
- Specified by:
getDiscountCurveNamein interfaceForwardCurve- Returns:
- The name of the discount curve associated with this forward curve (e.g. OIS for collateralized forwards)
-
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
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 CloneNotSupportedExceptionDescription 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
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
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.
-