Rappresentare la convessità in funzione del fattore
Un altro modo per capire l’effetto di un certo fattore sulla convessità di un’obbligazione è tracciare direttamente un grafico di questo fattore rispetto alla convessità del titolo.
In questo esercizio, prezzarai un’obbligazione a 20 anni con cedola del 6% e valore nominale di 100 USD, quindi calcolerai la convessità di questo bond per diversi livelli di rendimento.
numpy, numpy_financial, pandas e matplotlib sono già stati importati come np, npf, pd e plt, rispettivamente.
Questo esercizio fa parte del corso
Valutazione e analisi delle obbligazioni in Python
Istruzioni dell'esercizio
- Crea un array di rendimenti obbligazionari da 0 a 20 con incrementi di 0,1 e converti in un DataFrame
pandas. - Trova il prezzo del bond, sposta i rendimenti verso l’alto e verso il basso e ricalcola il prezzo, quindi calcola la convessità dell’obbligazione.
- Traccia un grafico con i rendimenti sull’asse x e la convessità sull’asse y.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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')
____