Aan de slagGa gratis aan de slag

Voorspelde vs. werkelijke prijzen II

Het plotten van de voorspelde obligatieprijzen voor verschillende rendementsniveaus met behulp van duration, en die vervolgens vergelijken met de werkelijke prijzen van de obligatie, is een geweldige manier om de nauwkeurigheid van duration te visualiseren.

In de vorige oefening heb je de duration van de obligatie gevonden en een DataFrame gemaakt met de werkelijke obligatieprijzen bij elk rendementsniveau. In deze oefening voeg je kolommen toe aan dit DataFrame met de voorspelde obligatieprijzen op basis van duration, en plot je daarna het verschil tussen de voorspelde prijs en de werkelijke prijs.

numpy, numpy_financial, pandas en matplotlib zijn alvast voor je geïmporteerd als respectievelijk np, npf, pd en plt, net als de code uit de vorige oefening.

Deze oefening maakt deel uit van de cursus

Waardering en analyse van obligaties in Python

Cursus bekijken

Oefeninstructies

  • Voeg de kolom yield_change toe met het huidige rendement minus het oorspronkelijke rendement.
  • Voeg de kolom price_change toe met de voorspelde prijsverandering van de obligatie op basis van dollar duration.
  • Voeg de kolom predicted_price toe door de oorspronkelijke obligatieprijs te combineren met de prijsverandering.
  • Voeg een plot toe van obligatierendementen tegen werkelijke prijzen en tegen voorspelde prijzen in dezelfde assen, en toon de grafiek.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# Add a column called yield_change with the current yield minus original yield
bond['yield_change'] = (bond['bond_yield'] - ____)

# Find the predicted bond price change using dollar duration then find predicted price
bond['price_change'] = -100 * ____ * bond['yield_change'] / 100
bond['predicted_price'] = ____ + bond['price_change'] 

# Plot bond yields against predicted and actual prices, add labels, legend, and display
plt.plot(bond['bond_yield'], bond['price'])
plt.plot(____, ____)
plt.xlabel('Yield (%)')
plt.ylabel('Price (USD)')
plt.legend(["Actual Price", "Predicted Price"])
____
Code bewerken en uitvoeren