ComenzarEmpieza gratis

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

Ver curso

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() usando uniroot().
  • Usa ytm() con tu vector cf para 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


Editar y ejecutar código