Evaluación de procesos 4 - Análisis y Gestión del riesgo.

En este trabajo se va a desarrollar la evaluación de procesos 4, el cual consta de 5 preguntas. Para ello, se va a dividir el trabajo en 5 parte donde se desarrollará cada ejercicio en cada sección.

Para el desarrollo de esta evaluación no será necesaria la instalación de algún paquete adicional a los que se tienen como predeterminados en el programa.

Pregunta N°1

La madures (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 Nelson-Siegel con tasa de forward es:

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

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

Para realizar la regresión no-lineal se necesitara primero obtener los datos, los cuales se encuentran en el archivo ZeroPrices.txt; entonces con la función read.table() indicaremos la dirección en la cual se encuentra dicho archivo, también indicaremos que la primera fila de los datos son los nombres de las variables colocando dentro de la función header = TRUE y finalmente indicaremos que los datos están separados por espacios introduciendo en la función sep = " ".

datos <- read.table("C:/Users/Abel/Desktop/PracticandoAndo/3.RPubs/8. Eva. Procesos 4 - Riesgos/ZeroPrices.txt", header = TRUE, sep = "")

Luego, como se observa se exponen los primeros datos con la función head() y se obtienen el nombre de las variables con la función names para tenerlos en cuenta en el desarrollo del ejercicio.

head(datos, 4)
##   maturity   price
## 1     0.25 98.8073
## 2     0.88 94.6419
## 3     1.52 91.1392
## 4     2.15 88.0357
names(datos)
## [1] "maturity" "price"

Parte A

Para estimar los parámetros requeridos primero se va integrar la función \(r(T;\theta_1;\theta_2;\theta_3;\theta_4)\). Luego de tener la integral de la función se puede hallar la expresión general para hallar el valor de la tasa de rendimiento estimada como se ve en la siguiente ecuación general:

\[y_{T}(\theta)=\frac{1}{T}*\int_0^T \theta_1 + (\theta_2 + \theta_3*T)*exp(-\theta_4*T)dT\]

Y reemplazando con los datos del ejercicios, la formula para hallar la tasa de retorno, a partir de la tasas forwards sera:

\[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)\]

Entonces con esta expresión se puede utilizar dentro de la fórmula para hallar el precio con el fin de tener una formula con la cual poder aplicar la regresión no lineal, dicha formula de la regresión tendrá la siguiente expresión:

\[P_t = exp(-T_t*y_T(\theta))+\varepsilon_t\]

Dada esta expresión la mejor forma para poder obtener estimadores eficientes será regresionar por partes, es decir primero se hallará el valor de \(\theta1\), luego en otra regresión hallaremos los estimadores \(\theta2\) y \(\theta3\) y finalmente teniendo los valores anteriores hallaremos en una regresión todos los estimadores nuevamente, con el fin que en esta última regresión tengamos los mejores estimadores.

Entonces, primero hallaremos una estimación para hallar el valor inicial del parámetro \(\theta1\) y se guardara este valor en el objeto theta1_inicial, para ello aplicaremos el siguiente código:

Modelo.Inicial <- nls(
  price ~ 100 * exp( - theta1 * maturity ),
  data=datos,
  start=list(theta1=0.01),
  control=list(minFactor=1.e-5,warnOnly=TRUE) )
theta1_inicial <- summary(Modelo.Inicial)$coef[,1] 

Luego, teniendo el valor inicial de \(\theta1\), aplicaremos una regresión no lineal pero solo tendremos en cuenta la parte de la función \(r(T;\theta_1;\theta_2;\theta_3;\theta_4)\) donde este las variables \(\theta2\) y \(\theta3\) con el fin de hallar sus estimadores iniciales. Estos nuevos valores se guardaran en los objetos theta1_inicial2 , theta2_inicial y theta3_inicial para luego utilizarlos en la última regresión. Para ello se utilizará el siguiente código:

Modelo.Medio <- nls(
  price ~ 100 * exp( - ( theta1 + (theta2/theta3) * (1 - exp(-theta3*maturity)) / (theta3*maturity) - (theta2/theta3)*exp(-theta3*maturity) ) * maturity ),
  data=datos,
  start=list(theta1=theta1_inicial, theta2=0.5, theta3=0.5),
  control=list(minFactor=1.e-5,warnOnly=TRUE) )
coefs <- summary(Modelo.Medio)$coef[,1] 
theta1_inicial2 <- coefs[1]
theta2_inicial <-coefs[2]
theta3_inicial <- coefs[3]

Por último, se hallará el valor de todos los estimadores teniendo en cuenta los valores iniciales hallados en los modelos anteriores, estos nuevos estimadores serán guardados en el objeto coeficientes y serán utilizados luego para poder graficar la curva de rendimiento estimada. Para ello, se ejecutará el siguiente código:

modelo.final <- nls(
  price ~ 100 * exp( - ( theta1 + (theta4 + theta2/theta3) * (1 - exp(-theta3*maturity)) / (theta3*maturity) - (theta2/theta3)*exp(-theta3*maturity) ) * maturity ),
  data=datos,
  start=list(theta1=theta1_inicial2, theta4 = 0., theta2=theta2_inicial, theta3= theta3_inicial),
  control=list(minFactor=1.e-5,warnOnly=TRUE) )
coeficientes <- summary(modelo.final)$coef[,1]

Por lo tanto, los estimadores para \(\theta_1\), \(\theta_2\), \(\theta_3\) y \(\theta_4\) son los que se ven en la siguiente tabla:

knitr::kable(coeficientes, col.names = "Estimadores")
Estimadores
theta1 0.0098610
theta4 0.0494799
theta2 0.0021033
theta3 0.0564563

Parte B

Para graficar la curva de rendimiento empírica, primero tendremos que hallar el valor de \(y_T\). Como se sabe el precio de un bono se halla de la siguiente forma:

\[P_t = \frac{PAR}{exp(T_t*y_T)}\]

Entonces despejando el valor de \(y_T\) de la ecuación anterior se tiene lo siguiente:

\[y_T = \frac{log\left(\frac{PAR}{P_{(n)}}\right)}{T}\]

Entonces se aplica el siguiente código para poder obtener los rendimientos de manera empírica, los datos se guardarán en el objeto emperico:

n <- length(datos$maturity)
empirico <- numeric()
for(i in 1:n){
  empirico[i] <- log(100 / datos$price[i]) / datos$maturity[i]
}

Finalmente se graficará la curva de rendimiento estimada junto a la curva de rendimiento empirica, donde la curva de rendimiento empirica sera la curva de color rojo y l acurva de rendimiento estimada sera la curva de color morado. Para ello se aplicará el siguiente código y se obtiene lo siguiente:

theta1 <- coeficientes[1]
theta2 <- coeficientes[2]
theta3 <- coeficientes[3]
theta4 <- coeficientes[4] 

## Construcion de la curva de rendimiento estimada.
r.estimado = theta1 + (theta2 + theta3/theta4) * (1 - exp(-theta4*datos$maturity)) / (theta4*datos$maturity) - (theta3/theta4)*exp(-theta4*datos$maturity)

## Grafica de ambas curvas.
plot(datos$maturity, r.estimado,  col="purple" , xlab="Maduración", ylab="Rendimiento", main = "Curva de Rendimiento Estimada y Empirica")
par(new=TRUE)
plot(datos$maturity, empirico, col = "red", xlab = " ", ylab = " ", axes = F)

Pregunta N°2

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

Parte A

A continuación, se va a determinar el valor de r, el cual es continuo. Para ello se utilizará primero la ecuación para hallar el precio de un bono cero el cual es:

\[P_n= \frac{Valor Nominal}{exp(n*r_n)}\]

despejando el valor de \(r_n\)

\[log(exp(n*r_n)) = log\left(\frac{P_{(n-1)}}{P_{(n)}}\right)\]

Se tiene que el valor de \(r_n\) se obtiene con la siguiente ecuación:

\[r_n = \frac{log\left(\frac{P_{(n-1)}}{P_{(n)}}\right)}{n}\]

Por lo tanto, se creará una función para poder hallar el valor de r continuo el cual aplica la misma ecuación expuesta anteriormente.

r <- function(p0, p1, n){
  r <- log(p0 / p1) / n
  return(r)
}

Entonces, como se sabe que el valor nominal es \(\$1000\), es decir será nuestro \(P_{n-1}\) o p0 dentro de nuestra función; también sabemos que se vende a \(\$828\), lo que será nuestro \(P_n\) o p1 dentro de nuestra función y finalmente n será 5.

r1 <- r(1000, 828, 5);r1
## [1] 0.03774842

Por lo tanto, el valor de r sera 0.0377484.

Parte B

Si luego de un año teniendo el activo la tasa r cambia a 4.25%, se desea hallar el precio del bono. Entonces para ello se debe recordar que el precio de un bono con capitalización continua se halla de la siguiente:

\[P_n= \frac{Valor Nominal}{exp(n*y_{n})}\]

Sin embargo, no tenemos el valor de \(y_n\), pero si tenemos el valor de r el cual es \(4.25\%\). Como se está asumiendo que la tasa forward es constante se asumiera que el valor de \(y_n\) sera igual al valor de r, es decir:

\[y_n = r = 4.25\%\]

Por lo que se va a crear una función que desarrolle la ecuación expuesta anteriormente es decir se va es vivir el valor nominal del bono cero sobre la exponencial del producto del tiempo de maduración por la tasa de descuento, tal como se muestra a continuación:

p <- function(vn, n, y){
  p <- vn * exp(-n * y)
  return(p)
}

Donde:

  • vn <- Valor Nominal.
  • n <- maduración del activo.
  • y <- Tasa de descuento.

Entonces como se tiene un nuevo valor de y, se utiliza la función con los valores explicados.

p1 <- p(1000,4,0.0425);p1
## [1] 843.6648

Por lo que el nuevo precio del bono será 843.6648166

Parte C

En esta parte se desea conocer el retorno neto que genera el bono, teniendo en cuenta que se compró el bono a \(\$828\) y se vendió un año después a \(\$843.66\). Como se sabe para hallar el retorno neto se debe utilizar la siguiente formula:

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

Donde:

  • \(P_t\) es el precio con el que se vendió el activo.
  • \(P_{t-1}\) es el precio con el que se compró el activo.

Entonces se crea una función que nos ayude aplicar la ecuación anterior para obtener el retorno neto del bono, tal como se observa a continuación:

ret.neto <- function(p0, p1){
  r <- (p1 / p0) - 1
  return(r)
} 

Donde p1 es el precio con el que se vendió el bono y p0 es el precio con el que se compró el bono. Aplicando la función creada con los datos dados en el problema:

r.neto <- ret.neto(828, 843.66);r.neto
## [1] 0.01891304

Por lo tanto, el retorno neto del activo será de 0.018913.

Pregunta N°3

Suponga que la tasa forward se halla a partir de:

\[r(t)=0.028+0.00042t\]

Parte A

Se busca el rendimiento para un bono que vence en 20 años. Para lo cual primero será necesario armar una ecuación que genere el rendimiento de bonos. Entonces, se sabe que la tasa forward de un periodo está dada por la siguiente función:

\[r(t)=0.028+0.00042t\]

También, se conoce que dada una función de tasa forward continua, como la expuesta previamente, se puede conocer la tasa de rendimiento.

Como se sabe la tasa de rendimiento se puede traducir como el promedio aritmético de las tasas forward que se encuentren entre un intervalo de tiempo. Por ejemplo, si se quiere saber la tasa de rendimiento de un activo con maduración de 2 años, entonces se puede determinar este rendimiento como el promedio aritmético de las tasas forward que se encuentren dentro de los dos años.

Entonces para poder hallar el promedio aritmético de las tasas forward dentro de un intervalo de tiempo, se debe primero hallar la sumatoria de las tasas forward que se encuentren en cada momento dentro del intervalo. Hallar la suma para periodos pequeño es sencillo, sin embargo para periodos grandes como 10 años o 20 años será necesario aplicar una integral de la función de tasa de interés que ira desde el momento 0 hasta el momento T, que será el periodo de vencimiento del activo.

La manera general utilizando la función de tasa forward dada en el problema, se tiene que para un vencimiento T la suma de las tasas forward desde el momento 0 hasta T se halla utilizando la siguiente integral:

\[\int_0^T(0.028+0.00042t)dt\]

Finalmente, si dividimos el resultado de la integral expuesta se obtendrá la tasa de rendimiento de un bono cero con una maduración de T, es decir se tiene que \(y_n\) se halla con la siguiente ecuación:

\[y_n=(T)^{-1}*\int_0^T(0.028+0.00042t)dt\]

Entonces se creará una función la cual nos devolverá la tasa de rendimiento para un tiempo de maduración de T, tal como se muestra en el siguiente código:

y <- function(T){
  y1 <- (0.028 * T) + (0.00021 * (T^2))
  y2 <- 1 / T
  y <- y2 * y1
  return(y)
}

Como se logra ver, dentro de la función se ha desarrollado la integral \([(0.028*T) + (0.00021*T^2)]\) dejando de manera general la ecuación de solución el cual esta multiplicado por \(\frac{1}{T}\) para poder obtener la tasa de rendimiento para un tiempo de T.

Entonces, utilizando los datos del problema se tiene lo siguiente:

y3 <- y(20);y3
## [1] 0.0322

Por lo tanto, el rendimiento al vencimiento de un bono a 20 años es de 0.0322

Parte B

Ahora se desea hallar el valor de un bono cupón cero con un valor nominal de \(\$1000\) y con una madures a 15 años. Como se sabe el precio de un bono se halla utilizando la siguiente ecuación: \[P_n= \frac{Valor Nominal}{exp(T*y_n)}\]

Sin embargo, al no tener como dato la tasa de rendimiento con la cual se debe de descontar el valor nominal para obtener el precio; será necesario primero hallar dicha tasa. Para eso se utilizará la función creada en la sección anterior para hallar la tasa de rendimiento a 15 años:

y4 <- y(15);y4
## [1] 0.03115

Por lo que la tasa de descuento para este bono de 15 año de maduración es 0.03115. Por lo que ahora si se puede hallar el precio del bono, para obtener el precio del bono de interés se utilizara la función creada en la Pregunta 2, parte b, entonces utilizando los datos que se tienen en este problema:

precio.ejercicio3 <- p(1000, 15, y4);precio.ejercicio3
## [1] 626.7234

Por lo tanto, se concluye que el precio de un bono cupón cero con un valor nominal de \(\$1000\) y madures a 15 años es de 626.72339.

Pregunta N°4

Suponga que la tasa forward es: \[r(t)=0.028 + 0.0002*t-0.0003*t^2\]

Parte A

Se busca el rendimiento para un bono que vence en 8 años. Para lo cual primero será necesario armar una ecuación que genere el rendimiento de bonos.

Entonces, se sabe que la tasa forward de un periodo está dada por la siguiente función:

\[r(t)=0.028 + 0.0002*t-0.0003*t^2\]

También, se conoce que dada una función de tasa forward continua, como la expuesta previamente, se puede conocer la tasa de rendimiento. Como se sabe la tasa de rendimiento se puede traducir como el promedio aritmético de las tasas forward que se encuentren entre un intervalo de tiempo.

Entonces, para poder hallar el promedio aritmético de las tasas forward dentro de un intervalo de tiempo, se debe primero hallar la sumatoria de las tasas forward que se encuentren en cada momento dentro del intervalo. Hallar la suma para periodos pequeño es sencillo, sin embargo, para periodos grandes como 10 años o 20 años será necesario aplicar una integral de la función de tasa de interés que ira desde el momento 0 hasta el momento T, que será el periodo de vencimiento del activo.

Entonces de manera general utilizando la función de tasa forward dada en el problema, se tiene que para un vencimiento T la suma de las tasas forward desde el momento 0 hasta T se halla utilizando la siguiente integral: \[\int_0^T(0.028 + 0.0002*t-0.0003*t^2)dt\]

Finalmente, si dividimos el resultado de la integral expuesta se obtendrá la tasa de rendimiento de un bono cero con una maduración de T, es decir se tiene que \(y_n\) se halla con la siguiente ecuación: \[y_n=(T)^{-1}*\int_0^T(0.028 + 0.0002*t-0.0003*t^2)dt\] Entonces se creará una función la cual nos devolverá la tasa de rendimiento para un tiempo de maduración de T, tal como se muestra en el siguiente código:

y4 <- function(T){
  ya <- (0.028 * T) + (0.0002 * ((T^2)/2)) - (0.0003 * ((T^3)/3))
  yb <- 1 / T
  return(ya * yb)
}

Como se logra ver, dentro de la función se ha desarrollado la integral \([(0.028*T)+(0.0002*T^2/2)-(0.0003*T^3/3)]\) dejando de manera general la ecuación de solución el cual esta multiplicado por \(\frac{1}{T}\) para poder obtener la tasa de rendimiento para un tiempo de T.

Entonces, utilizando los datos del problema:

y5 <- y4(8);y5
## [1] 0.0224

Por lo tanto, el rendimiento al vencimiento de un bono a 20 años es de 0.0224

Parte B

Ahora se desea hallar el valor de un bono cupón cero con un valor nominal de \(\$1000\) y con una madures a 5 años. Como se sabe el precio de un bono se halla utilizando la siguiente ecuación: \[P_n= \frac{Valor Nominal}{exp(T*y_n)}\]

Sin embargo, al no tener como dato la tasa de rendimiento con la cual se debe de descontar el valor nominal para obtener el precio; será necesario primero hallar dicha tasa. Para eso se utilizará la función creada en la sección anterior:

y6 <- y4(5);y6
## [1] 0.026

Por lo que la tasa de descuento para este bono de 5 años de maduración es de 0.026. Por lo que ahora si se puede hallar el precio del bono, para obtener el precio del bono de interés se utilizara la función creada en la Pregunta 2, parte b, entonces utilizando los datos que se tienen en este problema:

precio.ejercicio4 <- p(1000, 5, y6);precio.ejercicio4
## [1] 878.0954

Se concluye que el precio de un bono cupón cero con un valor nominal de \(\$1000\) y madures a 5 años es de 878.0954309.

Parte C

En primer lugar, se va a construir una secuencia de valores que van de 0 hasta 3 e irán creciendo en 0.1. Esta secuencia nos servirá para expresar la maduración de distintos activos en términos anuales, estos datos se guardarán en el objeto vencimiento. También, como se muestra en el siguiente grafico se guardara el tamaño de la secuencia de datos creados, que es 31, esto nos servirá para indicar luego el límite de las secuencias.

vencimiento <- seq(0,3, by = 0.1)
l <- length(vencimiento);l
## [1] 31

Luego, para construir la curva de tasas forward se crea primero una función donde se guardara la ecuación que genera las tasas forward según el tiempo de vencimiento, esta función será r.p4. Después, se crea un objeto llamado forward donde se guardaran los valores obtenidos luego de aplicar la iteración, dicha iteración como se muestra en el código ira desde el valor 0 hasta el valor 31 del vector vencimiento, utilizando los distintos vencimientos para hallar la tasa forward correspondiente.

r.p4 <- function(t){0.028 + (0.0002 * t) - (0.0003 * (t^2))}
forward <- numeric(length = 31)
for(i in 0:31){
  forward[i] <- r.p4(vencimiento[i])
}

Por otro lado, como se muestra en los siguientes códigos, se crea primero un objeto llamado rendimiento donde se guardaran los valores obtenidos luego de aplicar la iteración, dicha iteración ira desde el valor 0 hasta el valor 31 que se encuentra dentro del vector vencimiento, aplicando la función creada en la sección anterior para hallar la tasa de rendimiento para cada vencimiento y los resultados obtenidos serán guardados en el vector rendimiento.

rendimiento <- numeric(length = 31)
for(r in 0:31){
  rendimiento[r] <- y4(r)
}

Finalmente, se grafican ambas curvas usando la función plot(), tal como se muestra en los siguientes códigos.

par(mfrow = c(1,2))
plot(vencimiento, forward, col = "purple", type = "l", main = "Tasas Forward", xlab = "Vencimiento", ylab = "Forward")
plot(vencimiento, rendimiento, col = "blue", type = "l", main = "Curva de Rendimiento", xlab = "Vencimiento", ylab = "Rendimiento")

Por lo tanto, como se logra observar en ambas graficas la curva de tasas forward y la curva de rendimiento son cóncavas y la única diferencia entre ambas curvas son los valores que tienen los coeficientes de los polinomios que generan cada curva.

Parte D

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

Primero se hallaran los precios para cada periodo y luego se hallara el retorno. Para hallar el precio del bono cero con vencimiento de 10 años, se utiliza la función creada en la parte a del problema, entonces utilizando los datos como se aplica la función tal como se muestra en los siguientes códigos:

y.10 <- y4(10); y.10
## [1] 0.019

Luego de obtener la tasa de rendimiento del bono ya se puede utilizar la función para hallar el precio del bono cero a 10 años de vencimiento, entonces se utiliza la función creada en la Pregunta 2, parte b utilizando los datos que se tienen en este problema:

precio5 <- p(1000, 10, y.10);precio5
## [1] 826.9591

Como se observa el precio del bono a 10 años de vencimiento es de 826.9591339 dólares.

Según el problema, al siguiente año se vende el bono y además se asume que las tasas forwards no han cambiado, por esa razón se utilizara la misma fórmula de tasa de rendimiento pero cuando el vencimiento es de 9 años. Luego, se halla el precio del bono cuando a pasado 1 año, es decir vence en 9 años:

y.11 <- y4(9)
precio6 <- p(1000, 9, y.11);precio6
## [1] 829.2779

Entonces el precio de venta del bono al año siguiente será de 829.2778642. Ahora para hallar el retorno obtenido se utiliza la función creada en la pregunta 2, parte c con los datos de este problema:

r.neto4 <- ret.neto(precio5, precio6);r.neto4
## [1] 0.002803924

Por lo tanto, el retorno del bono si no cambia la tasa forward será de 0.0028039.

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.

bondvalue = function (c, t, r, par)
{
# Computes bv = bond values ( current prices ) corresponding
# to all values of yield to maturity in the
# input vector r
#
# INPUT
# c = coupon payment ( semiannual )
# T = time to maturity (in years )
# r = vector of yields to maturity ( semiannual rates )
# par = par value
#
bv = c / r + (par - c / r) * (1 + r)^( -2 * t)
bv
}
Utilizando la función uniroot(), el cual sirve para poder resolver las siguientes partes. La función uniroot() sirve para poder resolver operaciones a las cuales les falen una variable, para lo cual se le debe de dar un intervalo para que pueda encontrar el valor. La idea con esto es encontrar el valor de r, por ejemplo, que iguale el precio de bono con el precio de venta, otro objetivo sería el monto del cupón que tendría que cumplir con la condiciones dadas como el precio, tasa de descuento y el tiempo de maduración.

Parte A

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

Entonces, utilizando la función uniroot() se le indica que el valor a encontrar está en la variable r que está dentro de la función bondvalue y el intervalo entre donde estará el rendimiento al vencimiento esta entre \(0.03\) y \(0.04\). Estos límites se consideran pues como se logra ver en la gráfica, la cual muestra las tasas de rendimientos en relación de los precios y la tasa de rendimiento, el retorno que iguala al precio de venta del bono esta entre el intervalo asignado.

r = seq(0, 0.05, length = 300)
value = bondvalue(40, 30, r, 1000)
plot(r, value, col = "purple")
abline(h=1200)

a <- uniroot( function(r) bondvalue(40, 30, r, 1000) - 1200, c(0.03,0.04) )
ar <- a$root

Por lo que la tasa de descuento sera 0.0324162.

Parte B

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

Entonces, utilizando la función uniroot() se le indica que el valor a encontrar está en la variable r que está dentro de la función bondvalue y el intervalo entre donde estará el rendimiento al vencimiento esta entre \(0.01\) y \(0.04\). Estos límites se consideran pues como se logra ver en la gráfica, la cual muestra las tasas de rendimientos en relación de los precios y la tasa de rendimiento, el retorno que iguala al precio de venta del bono esta entre el intervalo asignado.

r = seq(0, 0.05, length = 300)
value = bondvalue(280, 8, r, 10000)
plot(r, value, col = "purple")
abline(h=9800)

b <- uniroot(function(r) bondvalue(280, 8, r, 10000) - 9800, c(0.01,0.04) )
br <- b$root

Por lo que la tasa de descuento sera 0.0295644.

Parte C

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

Entonces, utilizando la función uniroot() se le indica que el valor a encontrar está en la variable r que está dentro de la función bondvalue y el intervalo entre donde estará el rendimiento al vencimiento esta entre \(0.01\) y \(0.04\).Estos límites se consideran pues como se logra ver en la gráfica, la cual muestra las tasas de rendimientos en relación de los precios y la tasa de rendimiento, el retorno que iguala al precio de venta del bono esta entre el intervalo asignado.

r = seq(0, 0.05, length = 300)
value = bondvalue(35, 20, r, 1000)
plot(r, value, col = "purple")
abline(h=1050)

c <- uniroot(function(r) bondvalue(35, 20, r, 1000) - 1050, c(0.01,0.04) )
cr <- c$root

Por lo que la tasa de descuento sera 0.0327374.

Parte D

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

Entonces, utilizando la función uniroot() se le indica que el valor a encontrar está en la variable c que está dentro de la función bondvalue y el intervalo entre donde estará el cupón esta entre \(0\) y \(1000\).

d <- uniroot(function(c) bondvalue(c, 5, 0.035, 1000) - 950.10, c(0,1000) )
dr <- d$root

Por lo que el valor del cupón será 28.9999557.