Bonos con cupón

Valoración y análisis de bonos en Python

Joshua Mayhew

Options Trader

Definición de bono con cupón

  • Paga flujos de caja regulares (cupones) durante su vida
  • Al vencimiento paga un cupón y el nominal
  • Los cupones se pagan anual o semestralmente
  • El número de cupones al año se llama frecuencia
  • Su rendimiento a vencimiento es el retorno anual por comprar y mantener hasta el vencimiento
Valoración y análisis de bonos en Python

Ejemplo de bono con cupón

Toma un bono a 3 años con cupón anual del 3%, nominal de USD 100 y rendimiento del 4%:

ATENCIÓN: El cupón es fijo y no cambia.

Valoración y análisis de bonos en Python

Precio de un bono con cupón

Dividimos el bono en una colección de bonos cero cupón y los valoramos:

  • Un bono cero cupón a 1 año con nominal de USD 3
  • Un bono cero cupón a 2 años con nominal de USD 3
  • Un bono cero cupón a 3 años con nominal de USD 103
Valoración y análisis de bonos en Python

Precio de un bono con cupón

Bono a 3 años con cupón anual del 3%, nominal de USD 100 y rendimiento del 4%

Usando la fórmula de interés compuesto de antes:

$ \text{Precio ZCB 1 año: } \frac{3}{(1 + 0.04)^1} = 2.88$

$ \text{Precio ZCB 2 años: } \ \frac{3}{(1 + 0.04)^2} = 2.77$

$ \text{Precio ZCB 3 años: } \ \frac{103}{(1 + 0.04)^3} = 91.57$

$\text{Precio bono con cupón: } 2.88 + 2.77 + 91.57 = 97.22$

Valoración y análisis de bonos en Python

Fórmula del bono con cupón

En general, la fórmula del precio de un bono con cupón es:

$ Price = PV = \frac{C}{(1 + r)^1} + \frac{C}{(1 + r)^2} + ... +\frac{C}{(1 + r)^n} + \frac{P}{(1 + r)^n}$

$ = (\sum_{i=1}^n \frac{C}{(1 + r)^i}) + \frac{P}{(1 + r)^n}$

  • $C$ es el cupón pagado en cada periodo
  • $r$ es el rendimiento a vencimiento del bono
  • $P$ es el nominal (principal) pagado al vencimiento
  • $n$ es el número de periodos (normalmente años)
Valoración y análisis de bonos en Python

Usar la función pv()

Tomando el mismo bono a 3 años con cupón anual del 3% y rendimiento a vencimiento del 4%:

import numpy_financial as npf
-npf.pv(rate=0.04, nper=3, pmt=3, fv=100)
97.22

Establecemos pmt como positivo.

También ponemos un signo menos antes de la función.

Ponemos fv en 100, no 103.

Valoración y análisis de bonos en Python

¡Vamos a practicar!

Valoración y análisis de bonos en Python

Preparing Video For Download...