# Class DiscountCurveInterpolation

All Implemented Interfaces:
Serializable, Cloneable, ParameterObject, Curve, DiscountCurve

public class DiscountCurveInterpolation extends CurveInterpolation implements Serializable, DiscountCurve
Implementation of a discount factor curve based on CurveInterpolation. The discount curve is based on the CurveInterpolation class. It thus features all interpolation and extrapolation methods and interpolation entities as CurveInterpolation and implements the DiscountCurve. Note that this version of the DiscountCurveInterpolation will no longer make the assumption that at t=0 its value is 1.0. Such a norming is not necessary since valuation will always divide by the corresponding discount factor at evaluation time. See the implementation of SwapLeg for an example.
Version:
1.0
Author:
Christian Fries
SwapLeg, CurveInterpolation, Serialized Form

## Nested classes/interfaces inherited from class net.finmath.marketdata.model.curves.CurveInterpolation

CurveInterpolation.Builder, CurveInterpolation.ExtrapolationMethod, CurveInterpolation.InterpolationEntity, CurveInterpolation.InterpolationMethod, CurveInterpolation.Point
• ## Method Summary

Modifier and Type
Method
Description
protected void
addDiscountFactor​(double maturity, double discountFactor, boolean isParameter)

static DiscountCurveInterpolation
createDiscountCurveFromAnnualizedZeroRates​(String name, LocalDate referenceDate, double[] times, double[] givenAnnualizedZeroRates, boolean[] isParameter, CurveInterpolation.InterpolationMethod interpolationMethod, CurveInterpolation.ExtrapolationMethod extrapolationMethod, CurveInterpolation.InterpolationEntity interpolationEntity)
Create a discount curve from given times and given annualized zero rates using given interpolation and extrapolation methods.
static DiscountCurveInterpolation
createDiscountCurveFromAnnualizedZeroRates​(String name, LocalDate referenceDate, double[] times, double[] givenAnnualizedZeroRates, CurveInterpolation.InterpolationMethod interpolationMethod, CurveInterpolation.ExtrapolationMethod extrapolationMethod, CurveInterpolation.InterpolationEntity interpolationEntity)
Create a discount curve from given times and given annualized zero rates using given interpolation and extrapolation methods.
static DiscountCurveInterpolation
createDiscountCurveFromDiscountFactors​(String name, double[] times, double[] givenDiscountFactors)
Create a discount curve from given times and given discount factors using default interpolation and extrapolation methods.
static DiscountCurveInterpolation
createDiscountCurveFromDiscountFactors​(String name, double[] times, double[] givenDiscountFactors, boolean[] isParameter, CurveInterpolation.InterpolationMethod interpolationMethod, CurveInterpolation.ExtrapolationMethod extrapolationMethod, CurveInterpolation.InterpolationEntity interpolationEntity)
Create a discount curve from given times and given discount factors using given interpolation and extrapolation methods.
static DiscountCurveInterpolation
createDiscountCurveFromDiscountFactors​(String name, double[] times, double[] givenDiscountFactors, CurveInterpolation.InterpolationMethod interpolationMethod, CurveInterpolation.ExtrapolationMethod extrapolationMethod, CurveInterpolation.InterpolationEntity interpolationEntity)
Create a discount curve from given times and given discount factors using given interpolation and extrapolation methods.
static DiscountCurveInterpolation
createDiscountCurveFromDiscountFactors​(String name, LocalDate referenceDate, double[] times, double[] givenDiscountFactors, boolean[] isParameter, CurveInterpolation.InterpolationMethod interpolationMethod, CurveInterpolation.ExtrapolationMethod extrapolationMethod, CurveInterpolation.InterpolationEntity interpolationEntity)
Create a discount curve from given times and given discount factors using given interpolation and extrapolation methods.
static DiscountCurveInterpolation
createDiscountCurveFromZeroRates​(String name, double[] times, double[] givenZeroRates)
Create a discount curve from given times and given zero rates using default interpolation and extrapolation methods.
static DiscountCurveInterpolation
createDiscountCurveFromZeroRates​(String name, double[] times, double[] givenZeroRates, boolean[] isParameter, CurveInterpolation.InterpolationMethod interpolationMethod, CurveInterpolation.ExtrapolationMethod extrapolationMethod, CurveInterpolation.InterpolationEntity interpolationEntity)
Deprecated.
Initializing a curve without reference date is deprecated.
static DiscountCurveInterpolation
createDiscountCurveFromZeroRates​(String name, LocalDate referenceDate, double[] times, double[] givenZeroRates, boolean[] isParameter, CurveInterpolation.InterpolationMethod interpolationMethod, CurveInterpolation.ExtrapolationMethod extrapolationMethod, CurveInterpolation.InterpolationEntity interpolationEntity)
Create a discount curve from given times and given zero rates using given interpolation and extrapolation methods.
static DiscountCurveInterpolation
createDiscountCurveFromZeroRates​(String name, LocalDate referenceDate, double[] times, double[] givenZeroRates, CurveInterpolation.InterpolationMethod interpolationMethod, CurveInterpolation.ExtrapolationMethod extrapolationMethod, CurveInterpolation.InterpolationEntity interpolationEntity)
Create a discount curve from given times and given zero rates using given interpolation and extrapolation methods.
static DiscountCurveInterpolation
createDiscountCurveFromZeroRates​(String name, Date referenceDate, double[] times, double[] givenZeroRates, boolean[] isParameter, CurveInterpolation.InterpolationMethod interpolationMethod, CurveInterpolation.ExtrapolationMethod extrapolationMethod, CurveInterpolation.InterpolationEntity interpolationEntity)
Create a discount curve from given times and given zero rates using given interpolation and extrapolation methods.
static DiscountCurve
createDiscountFactorsFromForwardRates​(String name, TimeDiscretization tenor, double[] forwardRates)
Create a discount curve from given time discretization and forward rates.
double
getDiscountFactor​(double maturity)
Returns the discount factor for the corresponding maturity.
double
getDiscountFactor​(AnalyticModel model, double maturity)
Returns the discount factor for the corresponding maturity.
double
getZeroRate​(double maturity)
Returns the zero rate for a given maturity, i.e., -ln(df(T)) / T where T is the given maturity and df(T) is the discount factor at time $T$.
double[]
getZeroRates​(double[] maturities)
Returns the zero rates for a given vector maturities.
String
toString()

### Methods inherited from class net.finmath.marketdata.model.curves.CurveInterpolation

addPoint, clone, getCloneBuilder, getCloneForParameter, getExtrapolationMethod, getInterpolationEntity, getInterpolationMethod, getParameter, getParameterIndex, getPoints, getTimeIndex, getTimes, getValue, getValue, setParameter

### Methods inherited from class net.finmath.marketdata.model.curves.AbstractCurve

getName, getReferenceDate, getValues

### 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

clone, getCloneBuilder, getCloneForParameter, getName, getReferenceDate, getValue, getValue

### Methods inherited from interface net.finmath.marketdata.calibration.ParameterObject

getParameter, setParameter
• ## Method Details

• ### createDiscountCurveFromDiscountFactors

public static DiscountCurveInterpolation createDiscountCurveFromDiscountFactors(String name, LocalDate referenceDate, double[] times, double[] givenDiscountFactors, boolean[] isParameter, CurveInterpolation.InterpolationMethod interpolationMethod, CurveInterpolation.ExtrapolationMethod extrapolationMethod, CurveInterpolation.InterpolationEntity interpolationEntity)
Create a discount curve from given times and given discount factors using given interpolation and extrapolation methods.
Parameters:
name - The name of this discount curve.
referenceDate - The reference date for this curve, i.e., the date which defined t=0.
times - Array of times as doubles.
givenDiscountFactors - Array of corresponding discount factors.
isParameter - Array of booleans specifying whether this point is served "as as parameter", e.g., whether it is calibrates (e.g. using CalibratedCurves).
interpolationMethod - The interpolation method used for the curve.
extrapolationMethod - The extrapolation method used for the curve.
interpolationEntity - The entity interpolated/extrapolated.
Returns:
A new discount factor object.
• ### createDiscountCurveFromDiscountFactors

public static DiscountCurveInterpolation createDiscountCurveFromDiscountFactors(String name, double[] times, double[] givenDiscountFactors, boolean[] isParameter, CurveInterpolation.InterpolationMethod interpolationMethod, CurveInterpolation.ExtrapolationMethod extrapolationMethod, CurveInterpolation.InterpolationEntity interpolationEntity)
Create a discount curve from given times and given discount factors using given interpolation and extrapolation methods.
Parameters:
name - The name of this discount curve.
times - Array of times as doubles.
givenDiscountFactors - Array of corresponding discount factors.
isParameter - Array of booleans specifying whether this point is served "as as parameter", e.g., whether it is calibrates (e.g. using CalibratedCurves).
interpolationMethod - The interpolation method used for the curve.
extrapolationMethod - The extrapolation method used for the curve.
interpolationEntity - The entity interpolated/extrapolated.
Returns:
A new discount factor object.
• ### createDiscountCurveFromDiscountFactors

public static DiscountCurveInterpolation createDiscountCurveFromDiscountFactors(String name, double[] times, double[] givenDiscountFactors, CurveInterpolation.InterpolationMethod interpolationMethod, CurveInterpolation.ExtrapolationMethod extrapolationMethod, CurveInterpolation.InterpolationEntity interpolationEntity)
Create a discount curve from given times and given discount factors using given interpolation and extrapolation methods.
Parameters:
name - The name of this discount curve.
times - Array of times as doubles.
givenDiscountFactors - Array of corresponding discount factors.
interpolationMethod - The interpolation method used for the curve.
extrapolationMethod - The extrapolation method used for the curve.
interpolationEntity - The entity interpolated/extrapolated.
Returns:
A new discount factor object.
• ### createDiscountCurveFromDiscountFactors

public static DiscountCurveInterpolation createDiscountCurveFromDiscountFactors(String name, double[] times, double[] givenDiscountFactors)
Create a discount curve from given times and given discount factors using default interpolation and extrapolation methods.
Parameters:
name - The name of this discount curve.
times - Array of times as doubles.
givenDiscountFactors - Array of corresponding discount factors.
Returns:
A new discount factor object.
• ### createDiscountCurveFromZeroRates

public static DiscountCurveInterpolation createDiscountCurveFromZeroRates(String name, LocalDate referenceDate, double[] times, double[] givenZeroRates, boolean[] isParameter, CurveInterpolation.InterpolationMethod interpolationMethod, CurveInterpolation.ExtrapolationMethod extrapolationMethod, CurveInterpolation.InterpolationEntity interpolationEntity)
Create a discount curve from given times and given zero rates using given interpolation and extrapolation methods. The discount factor is determined by  givenDiscountFactors[timeIndex] = Math.exp(- givenZeroRates[timeIndex] * times[timeIndex]); 
Parameters:
name - The name of this discount curve.
referenceDate - The reference date for this curve, i.e., the date which defined t=0.
times - Array of times as doubles.
givenZeroRates - Array of corresponding zero rates.
isParameter - Array of booleans specifying whether this point is served "as as parameter", e.g., whether it is calibrates (e.g. using CalibratedCurves).
interpolationMethod - The interpolation method used for the curve.
extrapolationMethod - The extrapolation method used for the curve.
interpolationEntity - The entity interpolated/extrapolated.
Returns:
A new discount factor object.
• ### createDiscountCurveFromZeroRates

public static DiscountCurveInterpolation createDiscountCurveFromZeroRates(String name, Date referenceDate, double[] times, double[] givenZeroRates, boolean[] isParameter, CurveInterpolation.InterpolationMethod interpolationMethod, CurveInterpolation.ExtrapolationMethod extrapolationMethod, CurveInterpolation.InterpolationEntity interpolationEntity)
Create a discount curve from given times and given zero rates using given interpolation and extrapolation methods. The discount factor is determined by  givenDiscountFactors[timeIndex] = Math.exp(- givenZeroRates[timeIndex] * times[timeIndex]); 
Parameters:
name - The name of this discount curve.
referenceDate - The reference date for this curve, i.e., the date which defined t=0.
times - Array of times as doubles.
givenZeroRates - Array of corresponding zero rates.
isParameter - Array of booleans specifying whether this point is served "as as parameter", e.g., whether it is calibrates (e.g. using CalibratedCurves).
interpolationMethod - The interpolation method used for the curve.
extrapolationMethod - The extrapolation method used for the curve.
interpolationEntity - The entity interpolated/extrapolated.
Returns:
A new discount factor object.
• ### createDiscountCurveFromZeroRates

public static DiscountCurveInterpolation createDiscountCurveFromZeroRates(String name, double[] times, double[] givenZeroRates, boolean[] isParameter, CurveInterpolation.InterpolationMethod interpolationMethod, CurveInterpolation.ExtrapolationMethod extrapolationMethod, CurveInterpolation.InterpolationEntity interpolationEntity)
Deprecated.
Initializing a curve without reference date is deprecated.
Create a discount curve from given times and given zero rates using given interpolation and extrapolation methods. The discount factor is determined by  givenDiscountFactors[timeIndex] = Math.exp(- givenZeroRates[timeIndex] * times[timeIndex]); 
Parameters:
name - The name of this discount curve.
times - Array of times as doubles.
givenZeroRates - Array of corresponding zero rates.
isParameter - Array of booleans specifying whether this point is served "as as parameter", e.g., whether it is calibrates (e.g. using CalibratedCurves).
interpolationMethod - The interpolation method used for the curve.
extrapolationMethod - The extrapolation method used for the curve.
interpolationEntity - The entity interpolated/extrapolated.
Returns:
A new discount factor object.
• ### createDiscountCurveFromZeroRates

public static DiscountCurveInterpolation createDiscountCurveFromZeroRates(String name, LocalDate referenceDate, double[] times, double[] givenZeroRates, CurveInterpolation.InterpolationMethod interpolationMethod, CurveInterpolation.ExtrapolationMethod extrapolationMethod, CurveInterpolation.InterpolationEntity interpolationEntity)
Create a discount curve from given times and given zero rates using given interpolation and extrapolation methods. The discount factor is determined by  givenDiscountFactors[timeIndex] = Math.exp(- givenZeroRates[timeIndex] * times[timeIndex]); 
Parameters:
name - The name of this discount curve.
referenceDate - The reference date for this curve, i.e., the date which defined t=0.
times - Array of times as doubles.
givenZeroRates - Array of corresponding zero rates.
interpolationMethod - The interpolation method used for the curve.
extrapolationMethod - The extrapolation method used for the curve.
interpolationEntity - The entity interpolated/extrapolated.
Returns:
A new discount factor object.
• ### createDiscountCurveFromZeroRates

public static DiscountCurveInterpolation createDiscountCurveFromZeroRates(String name, double[] times, double[] givenZeroRates)
Create a discount curve from given times and given zero rates using default interpolation and extrapolation methods. The discount factor is determined by  givenDiscountFactors[timeIndex] = Math.exp(- givenZeroRates[timeIndex] * times[timeIndex]); 
Parameters:
name - The name of this discount curve.
times - Array of times as doubles.
givenZeroRates - Array of corresponding zero rates.
Returns:
A new discount factor object.
• ### createDiscountCurveFromAnnualizedZeroRates

public static DiscountCurveInterpolation createDiscountCurveFromAnnualizedZeroRates(String name, LocalDate referenceDate, double[] times, double[] givenAnnualizedZeroRates, boolean[] isParameter, CurveInterpolation.InterpolationMethod interpolationMethod, CurveInterpolation.ExtrapolationMethod extrapolationMethod, CurveInterpolation.InterpolationEntity interpolationEntity)
Create a discount curve from given times and given annualized zero rates using given interpolation and extrapolation methods. The discount factor is determined by  givenDiscountFactors[timeIndex] = Math.pow(1.0 + givenAnnualizedZeroRates[timeIndex], -times[timeIndex]); 
Parameters:
name - The name of this discount curve.
referenceDate - The reference date for this curve, i.e., the date which defined t=0.
times - Array of times as doubles.
givenAnnualizedZeroRates - Array of corresponding zero rates.
isParameter - Array of booleans specifying whether this point is served "as as parameter", e.g., whether it is calibrates (e.g. using CalibratedCurves).
interpolationMethod - The interpolation method used for the curve.
extrapolationMethod - The extrapolation method used for the curve.
interpolationEntity - The entity interpolated/extrapolated.
Returns:
A new discount factor object.
• ### createDiscountCurveFromAnnualizedZeroRates

public static DiscountCurveInterpolation createDiscountCurveFromAnnualizedZeroRates(String name, LocalDate referenceDate, double[] times, double[] givenAnnualizedZeroRates, CurveInterpolation.InterpolationMethod interpolationMethod, CurveInterpolation.ExtrapolationMethod extrapolationMethod, CurveInterpolation.InterpolationEntity interpolationEntity)
Create a discount curve from given times and given annualized zero rates using given interpolation and extrapolation methods. The discount factor is determined by  givenDiscountFactors[timeIndex] = Math.pow(1.0 + givenAnnualizedZeroRates[timeIndex], -times[timeIndex]); 
Parameters:
name - The name of this discount curve.
referenceDate - The reference date for this curve, i.e., the date which defined t=0.
times - Array of times as doubles.
givenAnnualizedZeroRates - Array of corresponding zero rates.
interpolationMethod - The interpolation method used for the curve.
extrapolationMethod - The extrapolation method used for the curve.
interpolationEntity - The entity interpolated/extrapolated.
Returns:
A new discount factor object.
• ### createDiscountFactorsFromForwardRates

public static DiscountCurve createDiscountFactorsFromForwardRates(String name, TimeDiscretization tenor, double[] forwardRates)
Create a discount curve from given time discretization and forward rates. This function is provided for "single interest rate curve" frameworks.
Parameters:
name - The name of this discount curve.
tenor - Time discretization for the forward rates
forwardRates - Array of forward rates.
Returns:
A new discount curve object.
• ### 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.
• ### getZeroRate

public double getZeroRate(double maturity)
Returns the zero rate for a given maturity, i.e., -ln(df(T)) / T where T is the given maturity and df(T) is the discount factor at time $T$.
Parameters:
maturity - The given maturity.
Returns:
The zero rate.
• ### getZeroRates

public double[] getZeroRates(double[] maturities)
Returns the zero rates for a given vector maturities.
Parameters:
maturities - The given maturities.
Returns:
The zero rates.
toString in class CurveInterpolation