Finance
DiscountCurve
create new zero curve based on the specified discount factors
Calling Sequence
Parameters
Options
Description
Examples
References
Compatibility
DiscountCurve(rate, opts)
DiscountCurve(times, rates, opts)
DiscountCurve(dates, rates, opts)
rate
-
real constant, algebraic expression, or a procedure; discount factor
times
list or Vector of non-negative constants; times (in years)
rates
list or Vector of non-negative constants; discount factors
dates
list of dates in one of the formats recognized by the ParseDate command; dates
opts
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.
with(Finance):
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):
ZeroRate(discountcurve, .5);
0.01002508365
ForwardRate(discountcurve, .5);
0.02419362214
DiscountFactor(discountcurve, .5);
0.9950000000
date2 := AdvanceDate(6, Months);
date2≔May 25, 2007
time2 := YearFraction(date2);
time2≔0.4958904110
discountcurve(date2);
0.9950819893
discountcurve(time2);
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);
f≔−0.01189941604⁢t4+0.01189941604⁢t3−0.004462281015⁢t2−0.01905099728⁢t+1.004902195t<0.3750000000−0.03172492545⁢t4+0.04163768016⁢t3−0.02119005458⁢t2−0.01486905389⁢t+1.004510138t<0.62500000000.1039594708⁢t4−0.2975733104⁢t3+0.2968202491⁢t2−0.1473733471⁢t+1.025213935t<0.8750000000−0.08853890118⁢t4+0.3761709898⁢t3−0.5874691433⁢t2+0.3684621307⁢t+0.9123749242t<1.100000000−0.1197353883⁢t4+0.5134355333⁢t3−0.813955640⁢t2+0.5345522282⁢t+0.8667001473t<1.3500000000.2499934793⁢t4−1.483100351⁢t3+3.229029530⁢t2−3.104134427⁢t+2.094756886t<1.650000000−0.2653533436⁢t4+1.918188680⁢t3−5.189160821⁢t2+6.155874957⁢t−1.724996984t<1.9000000000.0787759053⁢t4−0.6971936111⁢t3+2.264678708⁢t2−3.285655115⁢t+2.759729805t<2.1000000000.1910343021⁢t4−1.640164145⁢t3+5.235035885⁢t2−7.444155159⁢t+4.942942325t<2.350000000−0.2857346683⁢t4+2.841464179⁢t3−10.56270395⁢t2+17.30563722⁢t−9.59756069t<2.6500000000.5174704068⁢t4−5.672509617⁢t3+23.28034189⁢t2−42.48374377⁢t+30.01290422t<2.900000000−0.4144089660⁢t4+5.137291107⁢t3−23.74229127⁢t2+48.42668042⁢t−35.89715344t<3.100000000−0.2814239993⁢t4+3.488277521⁢t3−16.07437810⁢t2+32.57965988⁢t−23.61571253t<3.3500000000.3604175437⁢t4−5.112399153⁢t3+27.14402216⁢t2−63.94143401⁢t+57.22070354t<3.650000000−0.2866325131⁢t4+4.334531678⁢t3−24.57792413⁢t2+61.91530196⁢t−57.62356812t<3.9000000000.1353767710⁢t4−2.248813156⁢t3+13.93464317⁢t2−38.21737304⁢t+40.00579001t<4.1000000000.1815123228⁢t4−3.005436205⁢t3+18.58787492⁢t2−50.93620650⁢t+53.04259433t<4.350000000−0.1245093110⁢t4+2.319340223⁢t3−16.15629127⁢t2+49.82187548⁢t−56.53181988t<4.650000000−0.09220898271⁢t4+1.718554117⁢t3−11.96580818⁢t2+36.83137790⁢t−41.43036638t<4.9000000000.2218548599⁢t4−4.437097198⁢t3+33.27822899⁢t2−110.9658102⁢t+139.6211887otherwise
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.
See Also
Finance[BlackScholesProcess]
Finance[DiscountFactor]
Finance[ForwardCurve]
Finance[ForwardRate]
Finance[MertonJumpDiffusion]
Finance[ParRate]
Finance[ZeroCurve]
Finance[ZeroRate]
Download Help Document
What kind of issue would you like to report? (Optional)