Usa la función uniroot para encontrar la YTM
Probar y equivocarse es un proceso muy engorroso. Una alternativa es usar un algoritmo que haga el trabajo por ti. En este caso, la solución del problema equivale a encontrar la raíz de una función.
En este ejercicio, usarás la función unrioot() para encontrar la raíz.
La función uniroot() requiere que definamos un vector de flujos de caja, cf, que empiece con el precio del bono (como número negativo) como primer elemento y continúe con los flujos que esperas recibir del bono (es decir, los pagos de cupón y el principal) como elementos restantes.
Recuerda que el precio del bono es 95,79 \( y que el bono tiene un valor nominal de 100 \), una tasa de cupón del 5 % y 5 años hasta el vencimiento.
Este ejercicio forma parte del curso
Valoración y análisis de bonos en R
Instrucciones del ejercicio
- Crea un vector de flujos de caja,
cf, que incluya el precio inicial del bono (negativo) y los pagos hasta el vencimiento (positivos). - Usa el código preescrito para crear una función sencilla de valoración de bonos,
bval(), que calcule el valor del bono en cada periodo. - Usa el código preescrito para crear la función
ytm()usandouniroot(). - Usa
ytm()con tu vectorcfpara encontrar la rentabilidad hasta el vencimiento del bono.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# Create cash flow vector
cf <- c(___, ___, ___, ___, ___, ___)
# Create bond valuation function
bval <- function(i, cf,
t=seq(along = cf))
sum(cf / (1 + i)^t)
# Create ytm() function using uniroot
ytm <- function(cf) {
uniroot(bval, c(0, 1), cf = cf)$root
}
# Use ytm() function to find yield