create new zero curve based on the specified discount factors
DiscountCurve(times, rates, opts)
DiscountCurve(dates, rates, opts)
real constant, algebraic expression, or a procedure; discount factor
list or Vector of non-negative constants; times (in years)
list or Vector of non-negative constants; discount factors
list of dates in one of the formats recognized by the ParseDate command; dates
equations of the form option = value where option is one of daycounter, interpolation, or referencedate; specify options for the DiscountCurve command
compounding = Simple, Continuous, Annual, Semiannual, EveryFourthMonth, Quarterly, Bimonthly, Monthly, SimpleThenAnnual, SimpleThenSemiannual, SimpleThenEveryFourthMonth, SimpleThenQuarterly, SimpleThenBimonthly, or SimpleThenMonthly -- This option specifies the compounding type for the given discount factor(s).
daycounter = Actual360, Actual365Fixed, AFB, Bond, Euro, Historical, ISDA, ISMA, OneDay, Simple, Thirty360BondBasis, Thirty360EuroBondBasis, Thirty360European, Thirty360Italian, Thirty360USA, or a day counter data structure -- This option specifies the convention used to convert the amount of time between two dates to year fractions.
interpolation = BackwardFlat, Cubic, ForwardFlat, Linear, or LogLinear -- This option specifies the type of interpolation used to build a discount curve from a discrete set of discount factors. The LogLinear interpolation is used by default.
referencedate = date in any of the formats recognized by the ParseDate command -- This option specifies the reference date (when the discount factor is equal to 1).
The DiscountCurve command creates a new yield curve based on the specified discount factors; the resulting curve is represented as a module. This module can be passed to other commands of the Finance package that expect a yield term structure as one of the parameters; it can also be used as if it were a procedure. Assume for example that the module returned by DiscountCurve was assigned to the name R. Then for any positive constant t, R⁡t will return a discount factor for the maturity t based on the term structure R. If d is a date given in any of the formats recognized by the ParseDate command, then the R⁡d command will return the discount factor for the corresponding maturity.
The DiscountCurve(rate, opts) command creates a zero curve based on the specified interest rate. The parameter rate can be either a real constant, a Maple procedure or an algebraic expression. If rate is a real constant then the DiscountCurve command contracts a flat term structure based on the specified interest rate. If rate is a procedure it should accept one parameter (the time) and return the corresponding rate as a floating-point number. Finally, if rate is an algebraic expression, it should depend on a single variable. This variable will be taken as time.
The DiscountCurve(times, rates, opts) and DiscountCurve(dates, rates, opts) commands create a term structure based on piecewise interpolation of specified discount factors. The parameters rates and times can be either a list or a Vector containing numeric values and must have the same number of elements. The parameter dates is a list of dates in one of the formats recognized by ParseDate.
Objects created using the DiscountCurve command will be of Maple type YieldTermStructure.
SetEvaluationDate("November 25, 2006"):
In this example create a discount curve based on a piecewise interpolation of discount rates. Use the linear interpolation.
discountfactors := [1., 0.995, 0.989, 0.981, 0.975, 0.964, 0.944, 0.930, 0.914, 0.886, 0.860, 0.842, 0.832, 0.831, 0.827, 0.823, 0.815, 0.795, 0.778, 0.770]:
times := [.25, .50, .75, 1.0, 1.2, 1.5, 1.8, 2.0, 2.2, 2.5, 2.8, 3.0, 3.2, 3.5, 3.8, 4.0, 4.2, 4.5, 4.8, 5.0]:
discountcurve := DiscountCurve(times, discountfactors):
date2 := AdvanceDate(6, Months);
date2≔May 25, 2007
time2 := YearFraction(date2);
Construct discount curves based on different types of interpolation of the given rates.
discountcurve2 := DiscountCurve(times, discountfactors, interpolation = BackwardFlat):
discountcurve3 := DiscountCurve(times, discountfactors, interpolation = ForwardFlat):
discountcurve4 := DiscountCurve(times, discountfactors, interpolation = Cubic):
plot([discountcurve, discountcurve2, discountcurve3, discountcurve4], 0..5, color = [red, blue, green, cyan], thickness = 2, axes = BOXED, gridlines = true);
Construct a discount yield term structure based on a Maple function.
f := CurveFitting:-Spline(times, discountfactors, t, degree = 4);
discountcurve5 := DiscountCurve(f):
plot([discountcurve, discountcurve5], 0..2, color = [red, blue], thickness = 2, axes = BOXED, gridlines = true);
Brigo, D., Mercurio, F., Interest Rate Models: Theory and Practice. New York: Springer-Verlag, 2001.
Hull, J., Options, Futures, and Other Derivatives, 5th. edition. Upper Saddle River, New Jersey: Prentice Hall, 2003.
The Finance[DiscountCurve] command was introduced in Maple 15.
For more information on Maple 15 changes, see Updates in Maple 15.
Download Help Document
What kind of issue would you like to report? (Optional)