Aan de slagGa gratis aan de slag

Convexiteit uitzetten tegen de factor

Een andere manier om te controleren welk effect een bepaalde factor heeft op de convexiteit van een obligatie, is door deze factor direct uit te zetten tegen de convexiteit van de obligatie.

In deze oefening prijs je een obligatie van 20 jaar met een coupon van 6% en een nominale waarde van USD 100. Vervolgens bepaal je de convexiteit van deze obligatie voor verschillende niveaus van rendementen.

numpy, numpy_financial, pandas en matplotlib zijn al voor je geïmporteerd als respectievelijk np, npf, pd en plt.

Deze oefening maakt deel uit van de cursus

Waardering en analyse van obligaties in Python

Cursus bekijken

Oefeninstructies

  • Maak een array met obligatierentes van 0 tot 20 in stappen van 0,1 en zet deze om naar een pandas DataFrame.
  • Bepaal de prijs van de obligatie, verschuif de rentes omhoog en omlaag en herprijs, en bereken dan de convexiteit van de obligatie.
  • Maak een grafiek met de obligatierentes op de x-as en de convexiteit op de y-as.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# Create array of bond yields and covert to pandas DataFrame
bond_yields = np.arange(____, ____, ____)
bond = pd.DataFrame(____, columns=['bond_yield'])

# Find price of bond, reprice for higher and lower yields, calculate convexity
bond['price'] = -npf.pv(rate=bond['____'] / 100, nper=____, pmt=____, fv=____)
bond['price_up'] = ____
bond['price_down'] = ____
bond['convexity'] = (bond['____'] + bond['____'] - 2 * bond['____']) / (bond['____'] * 0.01 ** 2)

# Create plot of bond yields against convexity, add labels to axes, display plot
plt.plot(bond['____'], bond['____'])
plt.xlabel('Yield (%)')
plt.ylabel('Convexity')
____
Code bewerken en uitvoeren