Los conceptos pueden verse en el libro “Introducción al riesgo financiero” que puede obtenerse en https://1drv.ms/b/s!Aj-hHTVbsx01h4JmNiA9O57JQuANWg?e=l4IFbm
Se presenta el rendimiento (r: tasa) de títulos de tesorería (TES) emitidos por el gobierno colombiano y los años que faltan para el vencimiento (t)
t<-c(0.808,2.586,4.811,6.153,6.901,8.575,10.967,12.751,15.052)
r<-c(0.0425,0.0473,0.0503,0.0536,0.0547,0.0576,0.0597,0.0613,0.0623)
La estructura intertemporal de las tasas de interés representa la relación, en un momento dado, entre el plazo de vencimiento y el rendimiento al vencimiento del instrumento dentro de un nivel de riesgo dado.
La representación gráfica de la relación entre la tasa de rendimiento de un bono de la misma calidad crediticia en diferentes plazos de maduración en distintos momentos se denomina .
La representación gráfica está basada en el rendimiento de bonos a la par, o sea, utilizando el rendimiento al vencimiento de bonos con un cupón cercano a su vencimiento. Se suelen tomar bonos emitidos recientemente a 2, 5, 6 y 8 años y bonos a 20 años para inferir los rendimientos en el intervalo 2 a 20 años. Una razón para utilizar este método es que los bonos tienden a presentar alta liquidez en el mercado y sus precios reflejan las condiciones del mercado.
La curva de rendimiento se utiliza:
Para la valoración de instrumentos de renta fija.
Para la valoración de productos derivados.
Para la medición del riesgo de tasa de interés.
Para obtener información sobre las expectativas de los agentes económicos respecto a la evolución de la economía.
Las curvas de rendimiento pueden adoptar diferentes formas, pero las más típicas son las siguientes:
Curva ascendente.
Curva descendente.
Curva horizontal.
Curva ascendente y luego descendente.
Para estimar la tasa de interés para todos los plazos de vencimiento existen varias metodologías para ajustar la curva de rendimiento, entre ellas:
Modelo de spline
Modelo de Nelson-Siegel.
Modelo de Svenson.
Cuando se observa que una variable presenta diferente comportamiento en diversos tramos de su dominio, un método usual es dividirlo en segmentos y ajustar la curva adecuada en cada segmento. Las funciones spline ofrecen una forma sencilla y útil para realizar un ajuste por segmentos.
Los splines son polinomios de orden \(k\) por segmentos. Los puntos de unión de los segmentos se llaman “nudos”. Generalmente se requiere que los valores de la función y de las primeras \(k-1\) derivadas concuerden con los nudos, para que el spline sea una función continua con \(k-1\) derivadas continuas. La spline cúbica suele ser muy adecuada para muchos problemas prácticos.
Una función cúbica con \(h\) nudos, \(t_{1}<t_{2}<t_{3}<\cdots t_{h}\), con primeras y segundas derivadas continuas se puede expresar: \[\begin{equation*} E(y)=S(x)=\displaystyle\sum_{j=0}^{3}\beta_{0}x^{j}+\displaystyle\sum_{i=1}^{h}\beta_{i}(x-t_{i})^{*} \end{equation*}\]
en donde:
\[\begin{equation*} (x-t_{i})^{*}= \begin{cases} (x-t_{i}) &\text{si $ x-t_{i}>0 $}\\ 0 & \text{si $ x-t_{i}\leq 0 $} \end{cases} \end{equation*}\]
Se parte de que se conocen las posiciones de los nudos, pero si ellos son parámetros que se deben estimar, el problema resultante lleva a una regresión no lineal; sin embargo, si se conocen las posiciones de los nudos, la ecuación puede ser estimada aplicando mínimos cuadrados ordinarios en forma directa.
plot(t,r,main="Splines",pch=16)
grid()
fit1<-lm(r~bs(t ,knots =c(6.90) ))
fit1
##
## Call:
## lm(formula = r ~ bs(t, knots = c(6.9)))
##
## Coefficients:
## (Intercept) bs(t, knots = c(6.9))1 bs(t, knots = c(6.9))2
## 0.042690 0.004768 0.014175
## bs(t, knots = c(6.9))3 bs(t, knots = c(6.9))4
## 0.019135 0.019572
pre1<-predict(fit1)
pre1
## 1 2 3 4 5 6 7
## 0.04269042 0.04667301 0.05110519 0.05347414 0.05469309 0.05714656 0.05991535
## 8 9
## 0.06133976 0.06226249
lines(t,pre1,lty=1,lwd=2,col="red")
Charles Nelson y Andrew Siegel (1987) introdujeron un modelo paramétrico para el ajuste de los rendimientos que se caracteriza por ser flexible para modelar cualquiera de las formas que adquiere la curva de rendimientos. El modelo es:
\[\begin{equation*} Y=\beta_{0}+\beta_{1}\left( \dfrac{1-exp(-\lambda \cdot t)}{\lambda\cdot t}\right) +\beta_{2}\left(\dfrac{1-exp(-\lambda \cdot t)}{\lambda\cdot t}-exp(-\lambda\cdot t) \right) \end{equation*}\]
\(\beta_{0}:\) representa la contribución del componente de largo plazo sobre el rendimiento al momento del vencimiento.
\(\beta_{1}:\) corresponde a la contribución del componente de corto plazo.
\(\beta_{2}:\) representa la contribución del componente de mediano plazo.
\(\lambda :\) velocidad del decaimiento de los componentes de corto y mediano plazo. Si \(\lambda\) es pequeño, supone una rápida disminución en los regresores, lo que permite un mejor ajuste de la curvatuta en el corto plazo.
NS <- Nelson.Siegel(rate=r,maturity=t)
NS
## beta_0 beta_1 beta_2 lambda
## [1,] 0.0716673 -0.03058181 -0.02091702 0.3729853
y1<-function(t){
NS[1]+NS[2]*((1-exp(-t*NS[4]))/(t*NS[4])) +NS[3]*((1-exp(-t*NS[4]))/(t*NS[4])-exp(-t*NS[4]))
}
pre2<-NS[1]+NS[2]*((1-exp(-t*NS[4]))/(t*NS[4])) +NS[3]*((1-exp(-t*NS[4]))/(t*NS[4])-exp(-t*NS[4]))
pre2
## [1] 0.04267889 0.04659874 0.05121537 0.05359630 0.05477953 0.05707706 0.05963811
## [8] 0.06111200 0.06260400
plot(t,r,main="Nelson-Siegel",pch=16)
grid()
curve(y1,min(t),max(t),ylim=c(0,0.08),add=TRUE,lwd=2,col="blue")
Svensson (1994) propuso una nueva versión de la curva de Nelson-Siegel donde incluye un cuarto parámetro para producir un efecto adicional en la forma de la curva.
\[\begin{equation*} Y=\beta_{0}+\beta_{1}\left( \dfrac{1-exp(-\frac{t}{\tau_{1}})}{(\frac{t}{\tau_{1}})}\right) +\beta_{2}\left( \dfrac{1-exp(-\frac{t}{\tau_{1}})}{(\frac{t}{\tau_{1}})}-exp(-\frac{t}{\tau_{1}})\right) +\beta_{3}\left( \dfrac{1-exp(-\frac{t}{\tau_{2}})}{(\frac{t}{\tau_{2}})}-exp(-\frac{t}{\tau_{2}})\right) \end{equation*}\]
SV=Svensson(rate=r, maturity=t)
SV
## beta_0 beta_1 beta_2 beta_3 tau1 tau2
## [1,] 0.0536024 -0.01245676 -0.02706596 0.0606288 3.796383 8.030508
y2<-function(t){
SV[1]+SV[2]*((1-exp(-t/SV[5]))/(t/SV[5]))+SV[3]*((1-exp(-t/SV[5]))/(t/SV[5])-exp(-t/SV[5]))+SV[4]*((1-exp(-t/SV[6]))/(t/SV[6])-exp(-t/SV[6]))
}
pre3<-SV[1]+SV[2]*((1-exp(-t/SV[5]))/(t/SV[5]))+SV[3]*((1-exp(-t/SV[5]))/(t/SV[5])-exp(-t/SV[5]))+SV[4]*((1-exp(-t/SV[6]))/(t/SV[6])-exp(-t/SV[6]))
pre3
## [1] 0.04273260 0.04653601 0.05112546 0.05356458 0.05479098 0.05717935 0.05978018
## [8] 0.06117512 0.06241572
plot(t,r,main="Svensson",pch=16)
grid()
curve(y2,min(t),max(t),ylim=c(0,0.07),add=TRUE,lwd=2,col="green")
plot(t,r,pch=16)
grid()
lines(t,pre1,lty=1,lwd=2,col="red")
curve(y1,min(t),max(t),ylim=c(0,0.08),add=TRUE,col="blue",lwd=2)
curve(y2,min(t),max(t),ylim=c(0,0.07),add=TRUE,lwd=2,col="green")
mse1 <- mean((r-pre1)^2);mse1
## [1] 1.498411e-07
eam1<-mean(abs(r-pre1));eam1
## [1] 0.0002779371
mse2 <- mean((r-pre2)^2);mse2
## [1] 1.970061e-07
eam2<-mean(abs(r-pre2));eam2
## [1] 0.0003283973
mse3 <- mean((r-pre3)^2);mse3
## [1] 1.712291e-07
eam3<-mean(abs(r-pre3));eam3
## [1] 0.000298877
A<-matrix(c(mse1,eam1,mse2,eam2,mse3,eam3),nrow=3,ncol=2)
rownames(A)<-c("Spline","Nelson-Siegel","Svensson")
colnames(A)<-c("ECM","EMA")
A
## ECM EMA
## Spline 1.498411e-07 3.283973e-04
## Nelson-Siegel 2.779371e-04 1.712291e-07
## Svensson 1.970061e-07 2.988770e-04
Se utizan los paquetes
library(YieldCurve)
library(splines)
–