
Calling Sequence


ForwardCurve(rate, opts)
ForwardCurve(times, rates, opts)
ForwardCurve(dates, rates, opts)


Parameters


rate



real constant, algebraic expression, or a procedure; forward rate

times



list or Vector; times (in years)

rates



list or Vector; forward rates

dates



list; dates

opts



equations of the form option = value where option is one of compounding, daycounter, interpolation, or referencedate; specify options for the ForwardCurve command





Options


•

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 interest rate(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 forward curve from a discrete set of rates. 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).



Description


•

The ForwardCurve command creates a new yield curve based on the specified instantaneous forward rates; 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 ForwardCurve was assigned to the name R. Then for any positive constant t, $R\left(t\right)$ will return a zero rate 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\left(d\right)$ command will return the forward rate for the corresponding maturity.

•

The ForwardCurve(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 ForwardCurve 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 floatingpoint number. Finally, if rate is an algebraic expression, it should depend on a single variable. This variable will be taken as time.

•

The ForwardCurve(times, rates, opts) and ForwardCurve(dates, rates, opts) commands create a term structure based on piecewise interpolation of specified forward rates. 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.

•

By default all rates are assumed to be based on continuous compounding. The compounding option can be used to specify the desired compounding type for the given rates. If the value of the compounding option is different from Continuous, all the given rates will be converted to the corresponding continuous rates.

•

Objects created using the ForwardCurve command will be of Maple type YieldTermStructure.



Examples


In this example, create a flat forward curve with reference date set to January 5, 2005.
>

forwardcurve1 := ForwardCurve(0.05, referencedate = "Jan052006"):

>

forwardcurve1("Jan052007");

In this example, create a forward curve with the same parameters as above but assume that the interest rate is based on the monthly compounding.
>

forwardcurve2 := ForwardCurve(0.05, compounding = Monthly, referencedate = "Jan052005"):

Note that in the previous example only the rates passed to the ZeroCurve constructor are assumed to be monthly compounded. Whenever we evaluate forwardcurve2, the returned rate is always continuous.
>

forwardcurve2("Jan052005");

>

EquivalentRate(forwardcurve2(1.0), Continuous, Monthly, 1.0);

>

DiscountFactor(forwardcurve2, "Jan052005");

In this example, create a forward curve based on a piecewise interpolation of forward rates. Use the default interpolation.
>

rates := [0.02, 0.01, 0.04, 0.06, 0.07]:

>

times := [0.0, 0.5, 1.0, 1.5, 2.0]:

>

forwardcurve3 := ForwardCurve(times, rates):

>

forwardcurve4 := ForwardCurve(times, rates, interpolation = BackwardFlat):

>

forwardcurve5 := ForwardCurve(times, rates, interpolation = Linear):

>

forwardcurve6 := ForwardCurve(times, rates, interpolation = ForwardFlat):

>

forwardcurve7 := ForwardCurve(times, rates, interpolation = Cubic):

>

plot([forwardcurve3, forwardcurve4, forwardcurve5, forwardcurve6, forwardcurve7], 0..2, color = [red, blue, green, yellow, cyan], thickness = 2, axes = BOXED, gridlines = true);

Construct a forward yield term structure based on a Maple function.
>

f := CurveFitting:Spline(times, rates, t, degree = 4);

${f}{\u2254}\left\{\begin{array}{cc}{0.1631507971}{}{{t}}^{{4}}{+}{0.02}{}{0.03776323341}{}{t}& {t}{<}{0.2500000000}\\ {}{0.1735680803}{}{{t}}^{{4}}{+}{0.3367188774}{}{{t}}^{{3}}{}{0.1262695790}{}{{t}}^{{2}}{}{0.01671830357}{}{t}{+}{0.01868469189}& {t}{<}{0.7500000000}\\ {0.1214446482}{}{{t}}^{{4}}{}{0.5483193081}{}{{t}}^{{3}}{+}{0.8693983798}{}{{t}}^{{2}}{}{0.5145522824}{}{t}{+}{0.1120285630}& {t}{<}{1.250000000}\\ {}{0.02763974508}{}{{t}}^{{4}}{+}{0.1971026584}{}{{t}}^{{3}}{}{0.5282678071}{}{{t}}^{{2}}{+}{0.6501695396}{}{t}{}{0.2519470064}& {t}{<}{1.750000000}\\ {}{0.003624442908}{}{{t}}^{{4}}{+}{0.02899554326}{}{{t}}^{{3}}{}{0.08698662976}{}{{t}}^{{2}}{+}{0.1353414990}{}{t}{}{0.02670973855}& {\mathrm{otherwise}}\end{array}\right.$
 (11) 
>

forwardcurve4 := ForwardCurve(f):

>

plot([forwardcurve3, forwardcurve4, forwardcurve7], 0..2, color = [red, blue, cyan], thickness = 2, axes = BOXED, gridlines = true);



References



Brigo, D., Mercurio, F., Interest Rate Models: Theory and Practice. New York: SpringerVerlag, 2001.


Hull, J., Options, Futures, and Other Derivatives, 5th. edition. Upper Saddle River, New Jersey: Prentice Hall, 2003.



Compatibility


•

The Finance[ForwardCurve] command was introduced in Maple 15.



