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.double
getForward(AnalyticModel model, double fixingTime)
Returns the forward for the corresponding fixing time.double
getForward(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.double
getPaymentOffset(double fixingTime)
Returns the payment offset associated with this forward curve and a corresponding fixingTime.double
getValue(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.void
setParameter(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 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:ForwardCurve
Returns the forward for the corresponding fixing time.- Specified by:
getForward
in 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:ForwardCurve
Returns the forward for the corresponding fixing time and paymentOffset.- Specified by:
getForward
in 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:
getDiscountCurveName
in interfaceForwardCurve
- Returns:
- The name of the discount curve associated with this forward curve (e.g. OIS for collateralized forwards)
-
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 interfaceCurve
- 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 interfaceCurve
- Overrides:
clone
in 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:ParameterObject
Create a clone with a modified parameter.- Specified by:
getCloneForParameter
in interfaceCurve
- Specified by:
getCloneForParameter
in interfaceParameterObject
- Overrides:
getCloneForParameter
in 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: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. -
getParameter
public double[] getParameter()Description copied from interface:ParameterObject
Get the current parameter associated with the state of the objects.- Specified by:
getParameter
in 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:ParameterObject
Set the current parameter and change the state of the objects.- Specified by:
setParameter
in interfaceParameterObject
- 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 interfaceForwardCurve
- Parameters:
fixingTime
- The fixing time of the index associated with this forward curve.- Returns:
- The payment offset associated with this forward curve.
-