Valutazione e analisi delle obbligazioni in Python
Joshua Mayhew
Options Trader
Ricorda la formula del prezzo di un’obbligazione zero coupon:
$PV = \frac{FV}{(1 + r)^n}$
Possiamo riarrangiare per trovare il rendimento $(r)$:
$FV = PV \times (1 + r)^n$
$ \frac{FV}{PV} = (1 + r)^n$
$ \sqrt[n]\frac{FV}{PV} = (1 + r)$
$ \sqrt[n]\frac{FV}{PV} -1 = r$
Vediamo la stessa zero coupon di prima al contrario:
Qual è il rendimento di questa obbligazione?
Zero coupon a 3 anni, prezzo 90,19 USD, nominale 100 USD:
$r = \sqrt[n]\frac{FV}{PV} -1$
ytm = (100 / 90.19) ** (1/3) - 1
print(ytm)
0.035
Useremo ytm per “yield to maturity”.
Formula obbligazione con cedola:
$ 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}$
Questa equazione non si può isolare in $r$
Usiamo tentativi per trovare $r$
Così funziona la funzione npf.rate()
Consideriamo l’obbligazione con cedola di prima che:
Qual è il suo rendimento a scadenza?
Obbligazione a 3 anni, cedola annua 3%, prezzo 97,22 USD:
import numpy_financial as npf
npf.rate(nper=3, pmt=3, pv=-97.22, fv=100)
0.04
Ricorda: dobbiamo impostare PV come numero negativo.
Questo perché il prezzo è denaro che paghiamo (flusso di cassa negativo).
Valutazione e analisi delle obbligazioni in Python