Module net.finmath.lib
Class DiscountCurveInterpolation
java.lang.Object
net.finmath.marketdata2.model.curves.AbstractCurve
net.finmath.marketdata2.model.curves.CurveInterpolation
net.finmath.marketdata2.model.curves.DiscountCurveInterpolation
- All Implemented Interfaces:
Serializable
,Cloneable
,ParameterObject
,Curve
,DiscountCurveInterface
public class DiscountCurveInterpolation
extends CurveInterpolation
implements Serializable, DiscountCurveInterface
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
- See Also:
SwapLeg
,CurveInterpolation
, Serialized Form
-
Nested Class Summary
Nested classes/interfaces inherited from class net.finmath.marketdata2.model.curves.CurveInterpolation
CurveInterpolation.Builder, CurveInterpolation.ExtrapolationMethod, CurveInterpolation.InterpolationEntity, CurveInterpolation.InterpolationMethod
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
addDiscountFactor(double maturity, RandomVariable discountFactor, boolean isParameter)
static DiscountCurveInterpolation
createDiscountCurveFromAnnualizedZeroRates(String name, LocalDate referenceDate, double[] times, RandomVariable[] 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, RandomVariable[] 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)
static DiscountCurveInterpolation
createDiscountCurveFromDiscountFactors(String name, double[] times, double[] givenDiscountFactors, CurveInterpolation.InterpolationMethod interpolationMethod, CurveInterpolation.ExtrapolationMethod extrapolationMethod, CurveInterpolation.InterpolationEntity interpolationEntity)
static DiscountCurveInterpolation
createDiscountCurveFromDiscountFactors(String name, double[] times, RandomVariable[] 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, RandomVariable[] 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, RandomVariable[] 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, RandomVariable[] 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 DiscountCurveInterface
createDiscountCurveFromMonteCarloLiborModel(String forwardCurveName, LIBORModelMonteCarloSimulationModel model, double startTime)
Create a discount curve from forwards given by a LIBORMonteCarloModel.static DiscountCurveInterpolation
createDiscountCurveFromZeroRates(String name, double[] times, RandomVariable[] givenZeroRates)
Create a discount curve from given times and given zero rates using default interpolation and extrapolation methods.static DiscountCurveInterpolation
createDiscountCurveFromZeroRates(String name, LocalDate referenceDate, double[] times, RandomVariable[] 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, RandomVariable[] 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, RandomVariable[] 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 DiscountCurveInterface
createDiscountFactorsFromForwardRates(String name, TimeDiscretization tenor, RandomVariable[] forwardRates)
Create a discount curve from given time discretization and forward rates.static RandomVariable[]
createZeroRates(double time, double[] maturities, LIBORModelMonteCarloSimulationModel model)
getDiscountFactor(double maturity)
Returns the discount factor for the corresponding maturity.getDiscountFactor(AnalyticModel model, double maturity)
Returns the discount factor for the corresponding maturity.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$.getZeroRates(double[] maturities)
Returns the zero rates for a given vector maturities.toString()
Methods inherited from class net.finmath.marketdata2.model.curves.CurveInterpolation
addPoint, clone, getCloneBuilder, getCloneForParameter, getExtrapolationMethod, getInterpolationEntity, getInterpolationMethod, getParameter, getParameterIndex, getTimeIndex, getValue, getValue, setParameter
Methods inherited from class net.finmath.marketdata2.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.marketdata2.model.curves.Curve
clone, getCloneBuilder, getCloneForParameter, getName, getReferenceDate, getValue, getValue
Methods inherited from interface net.finmath.marketdata2.calibration.ParameterObject
getParameter, setParameter
-
Method Details
-
createDiscountCurveFromDiscountFactors
public static DiscountCurveInterpolation createDiscountCurveFromDiscountFactors(String name, LocalDate referenceDate, double[] times, RandomVariable[] 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, RandomVariable[] 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, RandomVariable[] 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, CurveInterpolation.InterpolationMethod interpolationMethod, CurveInterpolation.ExtrapolationMethod extrapolationMethod, CurveInterpolation.InterpolationEntity interpolationEntity) -
createDiscountCurveFromDiscountFactors
public static DiscountCurveInterpolation createDiscountCurveFromDiscountFactors(String name, double[] times, RandomVariable[] 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.
-
createDiscountCurveFromDiscountFactors
public static DiscountCurveInterpolation createDiscountCurveFromDiscountFactors(String name, double[] times, double[] givenDiscountFactors) -
createDiscountCurveFromZeroRates
public static DiscountCurveInterpolation createDiscountCurveFromZeroRates(String name, LocalDate referenceDate, double[] times, RandomVariable[] 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 bygivenDiscountFactors[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, RandomVariable[] 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 bygivenDiscountFactors[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, LocalDate referenceDate, double[] times, RandomVariable[] 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 bygivenDiscountFactors[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, RandomVariable[] givenZeroRates)Create a discount curve from given times and given zero rates using default interpolation and extrapolation methods. The discount factor is determined bygivenDiscountFactors[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, RandomVariable[] 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 bygivenDiscountFactors[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, RandomVariable[] 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 bygivenDiscountFactors[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 DiscountCurveInterface createDiscountFactorsFromForwardRates(String name, TimeDiscretization tenor, RandomVariable[] 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 ratesforwardRates
- Array of forward rates.- Returns:
- A new discount factor object.
-
createDiscountCurveFromMonteCarloLiborModel
public static DiscountCurveInterface createDiscountCurveFromMonteCarloLiborModel(String forwardCurveName, LIBORModelMonteCarloSimulationModel model, double startTime) throws CalculationExceptionCreate a discount curve from forwards given by a LIBORMonteCarloModel. If the model uses multiple curves, return its discount curve.- Parameters:
forwardCurveName
- name of the forward curve.model
- Monte Carlo model providing the forwards.startTime
- time at which the curve starts, i.e. zero time for the curve- Returns:
- a discount curve from forwards given by a LIBORMonteCarloModel.
- Throws:
CalculationException
- Thrown if the model failed to provide the forward rates.
-
createZeroRates
public static RandomVariable[] createZeroRates(double time, double[] maturities, LIBORModelMonteCarloSimulationModel model) throws CalculationException- Throws:
CalculationException
-
getZeroRate
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
Returns the zero rates for a given vector maturities.- Parameters:
maturities
- The given maturities.- Returns:
- The zero rates.
-
addDiscountFactor
protected void addDiscountFactor(double maturity, RandomVariable discountFactor, boolean isParameter) -
toString
- Overrides:
toString
in classCurveInterpolation
-
getDiscountFactor
Description copied from interface:DiscountCurveInterface
Returns the discount factor for the corresponding maturity. This getter is not optimized for performance.- Specified by:
getDiscountFactor
in interfaceDiscountCurveInterface
- 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
Description copied from interface:DiscountCurveInterface
Returns the discount factor for the corresponding maturity. This getter is not optimized for performance.- Specified by:
getDiscountFactor
in interfaceDiscountCurveInterface
- 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.
-