DiscountCurve: Returns the discount curve (with zero rates and forwards)...

Description Usage Arguments Details Value Author(s) References See Also Examples

View source: R/discount.R

Description

DiscountCurve constructs the spot term structure of interest rates based on input market data including the settlement date, deposit rates, futures prices, FRA rates, or swap rates, in various combinations. It returns the corresponding discount factors, zero rates, and forward rates for a vector of times that is specified as input.

Usage

1
DiscountCurve(params, tsQuotes, times, legparams)

Arguments

params

A list specifying the tradeDate (month/day/year), settleDate, forward rate time span dt, and two curve construction options: interpWhat (with possible values discount, forward, and zero) and interpHow (with possible values linear, loglinear, and spline). spline here means cubic spline interpolation of the interpWhat value.

tsQuotes

Market quotes used to construct the spot term structure of interest rates. Must be a list of name/value pairs, where the currently recognized names are:

flat rate for a flat yield curve
d1w 1-week deposit rate
d1m 1-month deposit rate
d3m 3-month deposit rate
d6m 6-month deposit rate
d9m 9-month deposit rate
d1y 1-year deposit rate
s2y 2-year swap rate
s3y 3-year swap rate
s4y 4-year swap rate
s5y 5-year swap rate
s6y 6-year swap rate
s7y 7-year swap rate
s8y 8-year swap rate
s9y 9-year swap rate
s10y 10-year swap rate
s12y 12-year swap rate
s15y 15-year swap rate
s20y 20-year swap rate
s25y 25-year swap rate
s30y 30-year swap rate
s40y 40-year swap rate
s50y 50-year swap rate
s60y 60-year swap rate
s70y 70-year swap rate
s80y 80-year swap rate
s90y 90-year swap rate
s100y 100-year swap rate
fut1--fut8 3-month futures contracts
fra3x6 3x6 FRA
fra6x9 6x9 FRA
fra6x12 6x12 FRA

Here rates are expected as fractions (so 5% means .05). If flat is specified it must be the first and only item in the list. The eight futures correspond to the first eight IMM dates. The maturity dates of the instruments specified need not be ordered, but they must be distinct.

times

A vector of times at which to return the discount factors, forward rates, and zero rates. Times must be specified such that the largest time plus dt does not exceed the longest maturity of the instruments used for calibration (no extrapolation).

legparams

A list specifying the dayCounter the day count convention for the fixed leg (default is Thirty360), and fixFreq, fixed coupon frequecny (defualt is Annual), floatFreq, floating leg reset frequency (default is Semiannual).

Details

This function is based on QuantLib Version 0.3.10. It introduces support for fixed-income instruments in RQuantLib.

Forward rates and zero rates are computed assuming continuous compounding, so the forward rate f over the period from t1 to t2 is determined by the relation

d1/d2 = exp(f(t2 - t1)),

where d1 and d2 are discount factors corresponding to the two times. In the case of the zero rate t1 is the current time (the spot date).

Curve construction can be a delicate problem and the algorithms may fail for some input data sets and/or some combinations of the values for interpWhat and interpHow. Fortunately, the C++ exception mechanism seems to work well with the R interface, and QuantLib exceptions are propagated back to the R user, usually with a message that indicates what went wrong. (The first part of the message contains technical information about the precise location of the problem in the QuantLib code. Scroll to the end to find information that is meaningful to the R user.)

Value

DiscountCurve returns a list containing:

times

Vector of input times

discounts

Corresponding discount factors

forwards

Corresponding forward rates with time span dt

zerorates

Corresponding zero coupon rates

flatQuotes

True if a flat quote was used, False otherwise

params

The input parameter list

Author(s)

Dominick Samperi

References

Brigo, D. and Mercurio, F. (2001) Interest Rate Models: Theory and Practice, Springer-Verlag, New York.

For information about QuantLib see https://www.quantlib.org/.

For information about RQuantLib see http://dirk.eddelbuettel.com/code/rquantlib.html.

See Also

BermudanSwaption

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
savepar <- par(mfrow=c(3,3), mar=c(4,4,2,0.5))

## This data is taken from sample code shipped with QuantLib 0.9.7
## from the file Examples/Swap/swapvaluation
params <- list(tradeDate=as.Date('2004-09-20'),
               settleDate=as.Date('2004-09-22'),
               dt=.25,
               interpWhat="discount",
               interpHow="loglinear")
setEvaluationDate(as.Date("2004-09-20"))

## We get numerical issue for the spline interpolation if we add
## any on of these three extra futures -- the original example
## creates different curves based on different deposit, fra, futures
## and swap data
## Removing s2y helps, as kindly pointed out by Luigi Ballabio
tsQuotes <- list(d1w = 0.0382,
                 d1m = 0.0372,
                 d3m = 0.0363,
                 d6m = 0.0353,
                 d9m = 0.0348,
                 d1y = 0.0345,
                 fut1=96.2875,
                 fut2=96.7875,
                 fut3=96.9875,
                 fut4=96.6875,
                 fut5=96.4875,
                 fut6=96.3875,
                 fut7=96.2875,
                 fut8=96.0875,
#                 s2y = 0.037125,
                 s3y = 0.0398,
                 s5y = 0.0443,
                 s10y = 0.05165,
                 s15y = 0.055175)

times <- seq(0,10,.1)

# Loglinear interpolation of discount factors
curves <- DiscountCurve(params, tsQuotes, times)
plot(curves,setpar=FALSE)

# Linear interpolation of discount factors
params$interpHow="linear"
curves <- DiscountCurve(params, tsQuotes, times)
plot(curves,setpar=FALSE)

# Spline interpolation of discount factors
params$interpHow="spline"
curves <- DiscountCurve(params, tsQuotes, times)
plot(curves,setpar=FALSE)

par(savepar)
 

RQuantLib documentation built on Oct. 6, 2021, 5:06 p.m.