DiscountCurve {RQuantLib} | R Documentation |
Returns the discount curve (with zero rates and forwards) given times
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
DiscountCurve(params, tsQuotes, times, legparams)
Arguments
params |
A list specifying the | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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:
Here rates are expected as fractions (so 5% means .05).
If | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
legparams |
A list specifying the |
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 t_1
to t_2
is determined by the
relation
d_1/d_2 = e^{f (t_2 - t_1)},
where d_1
and d_2
are discount factors
corresponding to the two times. In the case of the zero rate
t_1
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 |
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
Examples
## Not run:
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)
## End(Not run)