Penilaian dan Analisis Obligasi dengan Python
Joshua Mayhew
Options Trader
Ingat rumus harga obligasi tanpa kupon:
$PV = \frac{FV}{(1 + r)^n}$
Kita dapat menyusunnya ulang untuk mencari 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$
Lihat obligasi tanpa kupon yang sama, dihitung mundur:
Berapa yield obligasi ini?
Obligasi tanpa kupon 3 tahun, harga USD 90,19, nilai nominal USD 100:
$r = \sqrt[n]\frac{FV}{PV} -1$
ytm = (100 / 90.19) ** (1/3) - 1
print(ytm)
0.035
Kita akan gunakan ytm untuk 'yield to maturity'.
Rumus obligasi kupon:
$ 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}$
Persamaan ini tidak bisa dipecahkan langsung untuk $r$
Kita gunakan coba-coba untuk menemukan $r$
Begitulah cara fungsi npf.rate() bekerja
Pertimbangkan kembali obligasi kupon kita sebelumnya yang:
Berapa yield to maturity-nya?
Obligasi kupon 3 tahun, kupon tahunan 3% dengan harga USD 97,22:
import numpy_financial as npf
npf.rate(nper=3, pmt=3, pv=-97.22, fv=100)
0.04
Ingat PV harus bernilai negatif.
Karena harga obligasi adalah uang yang kita bayar (arus kas negatif).
Penilaian dan Analisis Obligasi dengan Python