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 ForwardCurveNelsonSiegelSvensson
clone()
Create a deep copied clone.CurveBuilder
getCloneBuilder()
Returns a curve builder bases on a clone of this curve.ForwardCurveNelsonSiegelSvensson
getCloneForParameter(double[] value)
Create a clone with a modified parameter.String
getDiscountCurveName()
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[]
getParameter()
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 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: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
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 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:
getDiscountCurveName
in 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: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
public ForwardCurveNelsonSiegelSvensson clone() throws CloneNotSupportedException
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 CloneNotSupportedException
Description 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
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.
-
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
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 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.
-
-