Obligationsvärdering och -analys i Python
Joshua Mayhew
Options Trader
Kom ihåg formeln för priset på en nollkupongobligation:
$PV = \frac{FV}{(1 + r)^n}$
Vi kan arrangera om ekvationen för att lösa ut yield $(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$
Vi utgår från samma nollkupongobligation som tidigare och räknar baklänges:
Vad är obligationens yield?
Nollkupongobligation med 3 års löptid, pris USD 90,19, nominellt värde USD 100:
$r = \sqrt[n]\frac{FV}{PV} -1$
ytm = (100 / 90.19) ** (1/3) - 1
print(ytm)
0.035
Vi använder ytm för 'yield to maturity'.
Formel för kupongobligation:
$ 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}$
Denna ekvation kan inte arrangeras om med avseende på $r$
Vi använder prövning och fel för att hitta $r$
Så här fungerar funktionen npf.rate()
Vi tittar på kupongobligationen från tidigare, som:
Vad är yield to maturity?
Kupongobligation med 3 års löptid, 3% årlig kupong och pris USD 97,22:
import numpy_financial as npf
npf.rate(nper=3, pmt=3, pv=-97.22, fv=100)
0.04
Kom ihåg att ange PV som ett negativt tal.
Det beror på att obligationens pris är pengar vi betalar ut (negativt kassaflöde).
Obligationsvärdering och -analys i Python