Định giá và Phân tích Trái phiếu bằng Python
Joshua Mayhew
Options Trader
Nhắc lại công thức giá trái phiếu zero coupon:
$PV = \frac{FV}{(1 + r)^n}$
Ta có thể biến đổi để giải lợi suất $(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$
Xét lại trái phiếu zero coupon trước đó, làm ngược:
Lợi suất của trái phiếu này là bao nhiêu?
Trái phiếu zero coupon 3 năm, giá USD 90,19, mệnh giá USD 100:
$r = \sqrt[n]\frac{FV}{PV} -1$
ytm = (100 / 90.19) ** (1/3) - 1
print(ytm)
0.035
Ta sẽ dùng ytm cho “yield to maturity”.
Công thức trái phiếu coupon:
$ 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}$
Phương trình này không thể biến đổi trực tiếp theo $r$
Ta dùng thử–sai để tìm $r$
Đây là cách hàm npf.rate() hoạt động
Xét lại trái phiếu trả coupon trước đó:
Lợi suất đến đáo hạn là bao nhiêu?
Trái phiếu coupon 3 năm, coupon 3%/năm, giá USD 97,22:
import numpy_financial as npf
npf.rate(nper=3, pmt=3, pv=-97.22, fv=100)
0.04
Lưu ý phải đặt PV là số âm.
Vì giá trái phiếu là tiền ta trả ra (dòng tiền âm).
Định giá và Phân tích Trái phiếu bằng Python