Class DiscountCurveFromForwardCurve

java.lang.Object
net.finmath.marketdata.model.curves.AbstractCurve
net.finmath.marketdata.model.curves.DiscountCurveFromForwardCurve
All Implemented Interfaces:
Serializable, Cloneable, ParameterObject, Curve, DiscountCurve

public class DiscountCurveFromForwardCurve extends AbstractCurve implements Serializable, DiscountCurve
A discount curve derived from a given forward curve. The discount factors df(t) are defined at t = k * d for integers k via df(t+d) = df(t) / (1 + f(t) * d) and for t = k * d and 0 < r < d via df(t+r) = df(t) / (1 + f(t) * r) where d is a given the payment offset and f(t) is the forward curve.

Note that a special interpolation is performed for in-between points. Hence, creating a ForwardCurveFromDiscountCurve and from it a DiscountCurveFromForwardCurve will not recover the original curve since interpolation points may be lost.

Version:
1.0
Author:
Christian Fries
See Also:
  • Constructor Details

    • DiscountCurveFromForwardCurve

      public DiscountCurveFromForwardCurve(String forwardCurveName, double periodLengthTimeScaling)
      Create a discount curve using a given forward curve. The discount factors df(t) are defined at t = k * d for integers k via df(t+d) = df(t) / (1 + f(t) * d) and for t = k * d and 0 < r < d via df(t+r) = df(t) / (1 + f(t) * r) where d is a given the payment offset and f(t) is the forward curve.
      Parameters:
      forwardCurveName - The name of the forward curve used for calculation of the discount factors.
      periodLengthTimeScaling - A scaling factor applied to d, adjusting for the internal double time to the period length daycount fraction (note that this may only be an approximate solution to capture daycount effects).
    • DiscountCurveFromForwardCurve

      public DiscountCurveFromForwardCurve(ForwardCurve forwardCurve, double periodLengthTimeScaling)
      Create a discount curve using a given forward curve. The discount factors df(t) are defined at t = k * d for integers k via df(t+d) = df(t) / (1 + f(t) * d) and for t = k * d and 0 < r < d via df(t+r) = df(t) / (1 + f(t) * r) where d is a given the payment offset and f(t) is the forward curve.
      Parameters:
      forwardCurve - The forward curve used for calculation of the discount factors.
      periodLengthTimeScaling - A scaling factor applied to d, adjusting for the internal double time to the period length daycount fraction (note that this may only be an approximate solution to capture daycount effects).
    • DiscountCurveFromForwardCurve

      public DiscountCurveFromForwardCurve(String forwardCurveName)
      Create a discount curve using a given forward curve. The discount factors df(t) are defined at t = k * d for integers k via df(t+d) = df(t) / (1 + f(t) * d) and for t = k * d and 0 < r < d via df(t+r) = df(t) / (1 + f(t) * r) where d is a given the payment offset and f(t) is the forward curve.
      Parameters:
      forwardCurveName - The name of the forward curve used for calculation of the discount factors.
    • DiscountCurveFromForwardCurve

      public DiscountCurveFromForwardCurve(ForwardCurve forwardCurve)
      Create a discount curve using a given forward curve. The discount factors df(t) are defined at t = k * d for integers k via df(t+d) = df(t) / (1 + f(t) * d) and for t = k * d and 0 < r < d via df(t+r) = df(t) / (1 + f(t) * r) where d is a given the payment offset and f(t) is the forward curve.
      Parameters:
      forwardCurve - The forward curve used for calculation of the discount factors.
  • Method Details

    • getDiscountFactor

      public double getDiscountFactor(double maturity)
      Description copied from interface: DiscountCurve
      Returns the discount factor for the corresponding maturity. This getter is not optimized for performance.
      Specified by:
      getDiscountFactor in interface DiscountCurve
      Parameters:
      maturity - The maturity for which the discount factor is requested.
      Returns:
      The discount factor (i.e., price of the zero coupon bond with given maturity and notional 1.
    • getDiscountFactor

      public double getDiscountFactor(AnalyticModel model, double maturity)
      Description copied from interface: DiscountCurve
      Returns the discount factor for the corresponding maturity. This getter is not optimized for performance.
      Specified by:
      getDiscountFactor in interface DiscountCurve
      Parameters:
      model - An analytic model providing a context. Some curves do not need this (can be null).
      maturity - The maturity for which the discount factor is requested.
      Returns:
      The discount factor (i.e., price of the zero coupon bond with given maturity and notional 1.
    • 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.
    • 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.
    • getCloneBuilder

      public CurveBuilder getCloneBuilder() throws CloneNotSupportedException
      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.
      Throws:
      CloneNotSupportedException - Thrown, when this curve could not be cloned.
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object