Oceňování a analýza dluhopisů v Pythonu
Joshua Mayhew
Options Trader
Vzorec pro cenu bezkuponového dluhopisu:
$PV = \frac{FV}{(1 + r)^n}$
Rovnici lze upravit tak, aby vyjadřovala výnos $(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$
Zpětný výpočet pro bezkuponový dluhopis z předchozího příkladu:
Jaký je výnos tohoto dluhopisu?
3letý bezkuponový dluhopis, cena USD 90,19, nominální hodnota USD 100:
$r = \sqrt[n]\frac{FV}{PV} -1$
ytm = (100 / 90.19) ** (1/3) - 1
print(ytm)
0.035
ytm označuje výnos do splatnosti (yield to maturity).
Vzorec pro cenu kuponového dluhopisu:
$ 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}$
Tuto rovnici nelze analyticky vyjádřit pomocí $r$
$r$ se hledá metodou pokus-omyl
Takto funguje funkce npf.rate()
Uvažujme kuponový dluhopis z předchozího příkladu:
Jaký je jeho výnos do splatnosti?
3letý kuponový dluhopis, roční kupon 3 %, cena USD 97,22:
import numpy_financial as npf
npf.rate(nper=3, pmt=3, pv=-97.22, fv=100)
0.04
PV musíme nastavit jako záporné číslo.
Cena dluhopisu představuje platbu (záporný peněžní tok).
Oceňování a analýza dluhopisů v Pythonu