El presente documento presenta la resolución del examen de procesos 4

PREGUNTA N°1

La madurez (T) en años y precios en dólares de bonos cupón cero se encuentran en el archivo ZeroPrices.txt. Los precios están expresados en porcentajes del par value. El modelo NelsonSiegel con tasa de forward es:

\[r(T;\theta_1;\theta_2;\theta_3;\theta_4) = \theta_1 + (\theta_2 + \theta_3 \space T) \space exp(-\theta_4 \space T)\]

Realice una regresión no-lineal para estimar los parámetros \(\theta_1\), \(\theta_2\), \(\theta_3\) y \(\theta_4\).

Inciso A

¿Cuáles son sus estimaciones para \(\theta_1\), \(\theta_2\), \(\theta_3\) y \(\theta_4\)?

Antes de empezar con las estimaciones debemos a partir de la función r(t) tenemos que hallar la ecuación de las tasas forward aplicando la fórmula:

\[y_t = \frac {1}{T} \space \int_0^T r(t) \space dt\]

Reemplazando temenos:

\[y_t = \frac {1}{T} \space \int_0^T \theta_1 + (\theta_2 + \theta_3 \space t) \space exp(-\theta_4 \space t) \space dt\]

Operando la función dentro de la integral tenemos:

\[y_t = \frac {1}{T} \space \left[\theta_1 \space t + \left(\frac {-\theta_2}{\theta_4} \space exp(-\theta_4 \space t) + \frac {-\theta_3}{\theta_4 \space ^{2}} (-\theta_4 \space exp(-\theta_4 \space t) \space t - exp(-\theta_4 \space t))\right)\right] \Bigr\rvert_0^T\]

\[y_t = \frac {1}{T} \space \left [\theta_1 \space t - \frac {\theta_2}{\theta_4} \space exp(-\theta_4 \space t) - \frac {\theta_3}{\theta_4} \space t \space exp(-\theta_4 \space t)-\frac {\theta_3}{\theta_4 \space ^{2}} \space exp(-\theta_4 \space t) \right ]\Bigr\rvert_0^T\]

\[y_t = \frac {1}{T} \space \left [\theta_1 \space t - \frac {\theta_3}{\theta_4} \space t \space exp(-\theta_4 \space t) - \frac {exp(-\theta_4 \space t)}{\theta_4}\left(\theta_2+\frac {\theta_3}{\theta_4}\right)\right ]\Bigr\rvert_0^T\]

\[y_T = \frac {1}{T} \space \left [\theta_1 \space T - \frac {\theta_3}{\theta_4} \space T \space exp(-\theta_4 \space T) - \frac {exp(-\theta_4 \space T)}{\theta_4}\left(\theta_2+\frac {\theta_3}{\theta_4}\right) - \left(-\frac {1}{\theta_4}\left(\theta_2+\frac {\theta_3}{\theta_4}\right)\right)\right ]\]

\[y_T = \frac {1}{T} \space \left [\theta_1 \space T + \left(\theta_2+\frac {\theta_3}{\theta_4}\right) \left(\frac {1-exp(-\theta_4 \space T)}{\theta_4}\right)- \frac {\theta_3}{\theta_4} \space T \space exp(-\theta_4 \space T) \right]\]

\[y_T = \theta_1 + \left(\theta_2+\frac {\theta_3}{\theta_4}\right) \left(\frac {1-exp(-\theta_4 \space T)}{\theta_4 \space T}\right)- \frac {\theta_3}{\theta_4} \space exp(-\theta_4 \space T)\]

Este resultado es el que se utilizará para tener una estimación de los θs.

Para empezar a estimar primero importaremos la data brindada:

## [1] "maturity" "price"

Es importante destacar que la estimación se hará secuencialmente, esto con motivo de darle una mejor estimación guiada por múltiples trabajos consultados, si bien el libro muestra un ejemplo de cómo hacer una estimación “todos a la vez” creo adecuado ampliar nuestra revisión teórica. En primera instancia trataremos de calcular el θ inicial, esto se hará en base a la ecuación del precio del bono agregando un componente estocástico:

\[P_i = exp(-T_i \space y_{T_i}(\theta))+\varepsilon_i\]

Se debe tener en cuenta que se tomará este θ inicial bajo la premisa que se relacionará como único factor dependiente de los datos.

Por las calibraciones vistas en clase se tendrá que suponer un \(\theta_1\) con un determinado valor y a partir ello ir trabajando, en nuestro caso le daremos el valor de 0.01, además se asumirá un valor nominal del bono de 100.

## [1] 0.05179561

Una vez que tenemos que tenemos el θ inicial obtendremos los θs siguientes con la ecuación hallada para las tasas forward pero modificada para que no implique al factor \(\theta_2\), esta decisión fue tomada porque afecta a un solo factor, de prescindir otro parámetro habría alterado de sobre manera la ecuación y por ende se podría desnaturalizar la estimación también es importante mencionar que se postuló un valor de 0.5 para \(\theta_3\) y \(\theta_4\).

En R seria se ejecuta el siguiente código:

##     theta1 
## 0.04216902
##     theta3 
## 0.01826462
##    theta4 
## 0.3479543

Para finalizar calculamos el ultimo parámetro ya con toda la ecuación desarrollada:

##      theta1      theta2      theta3      theta4 
## 0.009860962 0.049479902 0.002103318 0.056456328

Los θs estimados se presentarán en la siguiente tabla:

PARÁMETRO ESTIMADO VALOR ESTIMADO
theta1 0.00986
theta2 0.04948
theta3 0.002103
theta4 0.05646

Inciso B

Grafique la curva de rendimientos empírica y la curva de rendimientos estimada en una misma figura.

Siguiendo la teoría calcularemos los rendimientos empíricos con la siguiente formula extraida del libro:

\[P(n)= \frac {FV}{exp \space (n \space r_n)} \]

Desarrollando la ecuación llegaremos al cálculo de los rendimientos:

\[r_n= \dfrac {ln\left(\frac{FV}{P(n)}\right)}{n}\]

Para resolver este inciso se necesitará el siguiente código:

############################################################################################################
#                            DEFINIENDO LA CURVA DE RENDIMIENTO EMPÍRICA                                   #
############################################################################################################
curva_empirica <- numeric()
madurez <- zero_prices$maturity
for(i in 1:length(madurez)){
  curva_empirica[i] <- log(100 / zero_prices$price[i]) / zero_prices$maturity[i]
}
#----------------------------------------------------------------------------------------------------------#


############################################################################################################
#                            DEFINIENDO LA CURVA DE RENDIMIENTO ESTIMADA                                   #
############################################################################################################
curva_estimada <- numeric()
madurez <- zero_prices$maturity
for(i in 1:length(madurez)){
  curva_estimada[i] <- theta1+(theta2+theta3*zero_prices$maturity[i])*exp(-theta4*zero_prices$maturity[i])
}
#----------------------------------------------------------------------------------------------------------#


############################################################################################################
#                                     GRAFICANDO LAS CURVAS                                                #
############################################################################################################
plot(zero_prices$maturity, curva_estimada,  col="red" , xlab="Maduración", ylab="Rendimiento")
par(new=TRUE)
plot(zero_prices$maturity, curva_empirica,  col="blue" , xlab="", ylab="",  axes=FALSE) 
title(main="Gráficas la Curva Empírica y la Curva Estimada")
legend(x = "topright", legend = c("Curva Empírica", "Curva Estimada"), fill = c("blue", "red"), 
       title = "Leyenda")

PREGUNTA N°2

Un bono cupón cero con valor nominal $ 1000 y madurez a 5 años se vende a $ 828. Asuma que existe una tasa forward r de capitalización continua y constante.

Inciso A

Determine el valor de r.

Para la resolución de este inciso se tiene que tener en cuenta una fórmula brindada en la página 32 del libro:

\[P(n)= \frac {FV}{exp \space (n \space r_n)} \]

Donde:

P(n) es el precio del bono

FV es el valor facial

n es el número de años

\(r_n\) es la tasa forward

Haciendo una operación simple podemos despejar la tasa forward y obtenemos

\[r_n= \dfrac {ln\left(\frac{FV}{P(n)}\right)}{n}\]

Entonces definiendo los datos tenemos:

\(P(n) = 828\)

\(FV = 1000\)

\(n = 5\)

Reemplazando los datos en la formula quedaría:

\[r_n= \dfrac {ln\left(\frac{1000}{828}\right)}{5}\]

Resolveremos el problema en R mediante el siguiente código:

## [1] 3.774842

Como se puede observar el valor de r es 3,77%

Inciso B

Suponga que en 1 año la tasa r cambia a 4,25 %. ¿Cuál es el precio del bono?

Para este inciso usaremos la ecuación mencionada líneas arriba:

\[P(n)= \frac {FV}{exp \space (n \space r_n)}\]

Entendiendo que la tasa forward pasado 1 año ahora tendrá un periodo de 4 años se empleará la ecuación:

\[P(4)= \frac {1000}{exp \space (4 \times (0.0425))}\]

En R se resolverá con el siguiente código

## [1] 843.6648

El precio del bono es $ 843.66

Inciso C

Si compró el bono a $ 828 y lo vendió 1 año después al precio determinado en (b). Determine el retorno neto.

Para este inciso debemos tener en cuenta la formula del retorno neto:

\[R_t = \frac {P_t - P_{t-1}}{P_{t-1}}\]

Reemplazando los datos tendrá la siguiente formula:

\[R_t = \frac {843.6648 - 828}{828}\]

En R aplicamos el siguiente código:

## [1] 1.891886

El retorno neto de la operación es de 1,89 %

PREGUNTA N°3

Suponga que la tasa forward es \(r(t) = 0,028 + 0,00042t\)

Inciso A

¿Cuál es el rendimiento al vencimiento de un bono a 20 años?

Para resolver este inciso tenemos que tener en cuenta la ecuación 3.25 del libro:

\[y_n = \frac {1}{T} \space \int_0^T r(t) \space dt\]

Aplicando a nuestro ejercicio obtenemos:

\[y_{20} = \frac {1}{20} \space \int_0^{20} (0,028 + 0,00042t) \space dt\]

\[y_{20} = \frac {1}{20} \space \left(0,028 \space (20) + \frac {0,00042}{2} \space (20)^2\right)\]

Para obtener el resultado corremos el siguiente código:

## [1] 3.22

El rendimiento a 20 años es 3,22 %

Inciso B

¿Cuál es el precio de un bono cupón cero con valor nominal $ 1000 y madurez a 15 años?

Para resolver este inciso recurriremos a la ecuación 3.23:

\[P(T) = PAR \times D(T)\]

Y la ecuación 3.26:

\[D(T) = exp\{-T \space y_T \}\]

Utilizando las dos ecuaciones para obtener la siguiente relación:

\[P(T) = PAR \times exp\{-T \space y_T \}\]

Para desarrollar esta ecuación necesitamos \(y_t\), para ello aplicamos la siguiente ecuación:

\[y_{15} = \frac {1}{5} \space \left(0,028 \space (15) + \frac {0,00042}{2} \space (15)^2\right)\]

## [1] 3.115

\[P(15) = 1000 \times exp\{-15 \times 0,03115 \}\]

## [1] 626.7234

El precio del bono es $ 626.72

PREGUNTA N°4

Suponga que la tasa forward es \(r(t) = 0,028 + 0,0002t − 0,0003t^2\)

Inciso A

¿Cuál es el rendimiento al vencimiento de un bono a 8 años?

Para este inciso volveremos a utilizar la fórmula:

\[y_n = \frac {1}{T} \space \int_0^T r(t) \space dt\]

Reemplazando la función:

\[y_8 = \frac {1}{8} \space \int_0^8 0,028 + 0,0002t − 0,0003t^2 \space dt\]

Resolviendo la ecuación

\[y_{8} = \frac {1}{8} \space \left(0,028 \space (8) + \frac {0,0002}{2} \space (8)^2 - \frac {0,0003}{3} \space (8)^3\right)\]

## [1] 2.24

El rendimiento al vencimiento es de 2,24 %

Inciso B

¿Cuál es el precio de un bono cupón cero con valor nominal $ 1000 y madurez a 5 años?

Para este inciso usaremos de nuevo la ecuación:

\[P(T) = PAR \times exp\{-T \space y_T \}\]

Para realizar el cálculo primero necesitamos el \(y_5\), para ello usamos la siguiente ecuación:

\[y_{5} = \frac {1}{5} \space \left(0,028 \space (5) + \frac {0,0002}{2} \space (5)^2 - \frac {0,0003}{3} \space (5)^3\right)\]

En R ejecutamos el siguiente código:

## [1] 2.6

Obtenida la tasa del bono 2,6 % la reemplazamos y tenemos:

\[P(5) = 1000 \times exp\{-5 \times 0.026 \}\]

## [1] 878.0954

EL precio del bono es $ 878.0954

Inciso C

Grafique la curva de rendimiento y tasas forward. ¿Cuáles son cóncavas y cuáles son convexas? ¿Cómo se diferencian?

Para este inciso usaremos las dos ecuaciones que definen tanto al rendimiento como a las tasas forward:

\[r(t) = 0,028 + 0,0002t − 0,0003t^2\]

y

\[y_{t} = \frac {1}{t} \space \left(0,028 \space (t) + \frac {0,0002}{2} \space (t)^2 - \frac {0,0003}{3} \space (t)^3\right)\]

Ahora utilizamos el siguiente código en R para graficar las curvas:

###########################################################################################################
#                                    DEFINIENDO LA CURVA DE RENDIMIENTO                                   #
###########################################################################################################

maturity <- seq(1,50, by = 1)
rendimiento<- numeric()
for (i in 1:length(maturity)) {
  rendimiento[i] <- 0.028 + 0.0002*maturity[i] − 0.0003*(maturity[i])^2
}
###########################################################################################################


###########################################################################################################
#                                  DEFINIENDO LA CURVA DE TASAS FORWARD                                   #
###########################################################################################################
forward<- numeric()
for (i in 1:length(maturity)) {
  forward[i] <- ((0.028*maturity[i])+(0.0002/2)*((maturity[i])^2)-(0.0003/3)*((maturity[i])^3))/maturity[i]
}
###########################################################################################################


###########################################################################################################
#                                          GRAFICANDO LAS CURVAS                                          #
###########################################################################################################
par(mfrow = c(1,2))
plot(rendimiento, type = "l", col="red" ,main = "CURVA DE RENDIMIENTO", xlab = "MADURACIÓN", ylab = "RENDIMIENTO")
plot(forward, type = "l", col="blue" , main = "CURVA DE TASAS FORWARD", xlab = "MADURACIÓN", ylab = "TASAS FORWARD")

Como se puede apreciar ambas curvas son cóncavas y lo que difiere en ambas curvas es el valor de la tasa, que en ambos casos se define por un polinomio solo que en el caso de las tasas forward tiene un factor al cubo.

Ahora para esclarecer la diferencia entre ambas curvas debemos recapitular que fueron graficadas en base a ecuaciones obtenidas siguiendo el marco teórico explicado en el capítulo 3 del libro, si juntamos ambos datos de las curvas y mostramos los primeros datos observaremos que la diferencias entre estas son mínimas, que casi vuelve indistinguible a las curvas, esto lo veremos con el siguiente código:

##   rendimiento forward
## 1      0.0279  0.0280
## 2      0.0272  0.0278
## 3      0.0259  0.0274
## 4      0.0240  0.0268
## 5      0.0215  0.0260
## 6      0.0184  0.0250

En este contexto si superponemos las gráficas no tendremos una diferencia distinguible entre ambas curvas, para ello usamos el siguiente el gráfico.

Inciso D

Suponga que compra un bono cupón cero con vencimiento a 10 años y los vende un año después. ¿Cuál sería el retorno si la tasa forward no cambia en ese año?

Para resolver este inciso haremos el uso de la fórmula para el cálculo de la tasa forward dos veces, la primera será para hallar la tasa a 10 años que es cuando se compró el bono y la segunda a 9 años donde lo vendió.

\[y_{t} = \frac {1}{t} \space \left(0,028 \space (t) + \frac {0,0002}{2} \space (t)^2 - \frac {0,0003}{3} \space (t)^3\right)\]

En R empleamos el siguiente código:

## [1] 1.9
## [1] 2.08

Calculamos estas tasas forward para obtener los precios con la fórmula:

\[P(T) = PAR \times exp\{-T \space y_T \}\]

## [1] 826.9591
## [1] 829.2779

Una vez que tenemos los dos precios sacamos el rendimiento con la siguiente formula:

\[R_t = \frac {P_t - P_{t-1}}{P_{t-1}}\]

## [1] 0.2803924

El retorno de la operación hecha es de 0,28 %

PREGUNTA N°5

El siguiente código calcula el precio de un bono dado el pago del cupón, madurez del bono, retorno a la madurez y valor nominal.

Para resolver los siguientes incisos se debe indicar que la función uniroot() es a groso modo un “solucionador de problemas” que permite hallar parámetros de una función con determinados datos y en un intervalo necesario, este intervalo indica donde se encontrara el valor del parámetro deseado, no hay una metodología exacta de cómo saber que intervalos necesitas, debes guiarte de tu conocimiento teórico previo pues la función te arroja una solución en el intervalo dado, por ello si no se tiene el debido tacto puede convertirse en un proceso de múltiple iteración, los intervalos aquí vertidos son producto de la intuición tras resolver múltiples ejercicios en el curso de gestión de portafolios y matemática financiera:

Inciso A

Utilice la función uniroot() para encontrar el retorno a la madurez de un bono con madurez a 30 años y valor nominal de $ 1 000 con cupones de $ 40 que se vende a $ 1200.

Para desarrollar este inciso se necesitará el siguiente código

## [1] 3.241618

El retorno a la madurez es de 3.24 %.

Parte B

Determine el retorno a la madurez de un bono con valor nominal $ 10000 que se vende a $ 9800 con pago de cupones semi-anuales de $ 280 y madurez de 8 años.

Para resolver este siguiente inciso se necesitará el siguiente código:

## [1] 2.956445

El retorno a la madurez es de 2.96 %.

Parte C

Utilice la función uniroot() para hallar el retorno a la madurez de un bono a 20 años con valor nominal $ 1000 y cupón semi-anual de $ 35 que se vende a $ 1050.

Para resolver este siguiente inciso se necesitará el siguiente código:

## [1] 3.27374

El retorno a la madurez es de 3.27 % .

Parte D

El retorno a la madurez de un bono es 0.035 en un bono con valor nominal de $ 1000, un precio de $ 950.10 y madurez a 5 años. ¿Cuál es el valor del cupón?

Para resolver este siguiente inciso se necesitará el siguiente código:

## [1] 28.99996

El valor del cupón será de $ 29.