Zero Rates for Nelson–Siegel–Svensson Model
Compute zero yields for Nelson–Siegel (NS)/Nelson–Siegel–Svensson (NSS) model.
NS(param, tm) NSS(param, tm)
param |
a vector. For NS: beta1, beta2, beta3, lambda. For NSS: a vector: beta1, beta2, beta3, beta4, lambda1, lambda2. |
tm |
a vector of maturities |
See Chapter 14 in Gilli/Maringer/Schumann (2011).
Maturities (tm
) need to be given in time (not dates).
The function returns a vector of length length(tm)
.
Enrico Schumann
Gilli, M. and Grosse, S. and Schumann, E. (2010) Calibrating the Nelson-Siegel-Svensson model, COMISEF Working Paper Series No. 031. http://enricoschumann.net/COMISEF/wps031.pdf
Gilli, M., Maringer, D. and Schumann, E. (2019) Numerical Methods and Optimization in Finance. 2nd edition. Elsevier. https://www.elsevier.com/books/numerical-methods-and-optimization-in-finance/gilli/978-0-12-815065-8
Gilli, M. and Schumann, E. (2010) A Note on ‘Good’ Starting Values in Numerical Optimisation, COMISEF Working Paper Series No. 044. http://enricoschumann.net/COMISEF/wps044.pdf
Nelson, C.R. and Siegel, A.F. (1987) Parsimonious Modeling of Yield Curves. Journal of Business, 60(4), pp. 473–489.
Schumann, E. (2019) Financial Optimisation with R (NMOF Manual). http://enricoschumann.net/NMOF.htm#NMOFmanual
Svensson, L.E. (1994) Estimating and Interpreting Forward Interest Rates: Sweden 1992–1994. IMF Working Paper 94/114.
tm <- c(c(1, 3, 6, 9) / 12, 1:10) ## in years param <- c(6, 3, 8, 1) yM <- NS(param, tm) plot(tm, yM, xlab = "maturity in years", ylab = "yield in percent") param <- c(6, 3, 5, -5, 1, 3) yM <- NSS(param, tm) plot(tm, yM, xlab = "maturity in years", ylab = "yield in percent") ## Not run: ## get Bliss/Diebold/Li data (used in some of the papers in References) u <- url("http://www.ssc.upenn.edu/~fdiebold/papers/paper49/FBFITTED.txt") open(u); BliDiLi <- scan(u, skip = 14); close(u) mat <- NULL for (i in 1:372) mat <- rbind(mat,BliDiLi[(19*(i-1)+1):(19*(i-1)+19)]) mats <- c(1,3,6,9,12,15,18,21,24,30,36,48,60,72,84,96,108,120)/12 ## the obligatory perspective plot persp(x = mat[,1], y = mats, mat[ ,-1L], phi = 30, theta = 30, ticktype = "detailed", xlab = "time", ylab = "time to maturity in years", zlab = "zero rates in %") ## End(Not run)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.