用 Python 进行债券定价与分析
Joshua Mayhew
Options Trader
考虑一只3年期债,年票息3%,面值100美元,到期收益率4%:

注意:票息是固定的,且不会变化!
将该债券拆分为一组零息债并分别定价:
3年期债,年票息3%,面值100美元,到期收益率4%
用之前的复利公式:
$ \text{1年期零息价: } \frac{3}{(1 + 0.04)^1} = 2.88$
$ \text{2年期零息价: } \ \frac{3}{(1 + 0.04)^2} = 2.77$
$ \text{3年期零息价: } \ \frac{103}{(1 + 0.04)^3} = 91.57$
$\text{付息债价格: } 2.88 + 2.77 + 91.57 = 97.22$
更一般地,付息债的定价公式为:
$ Price = 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}$
以同一只3年期债券为例,年票息3%,到期收益率4%:
import numpy_financial as npf
-npf.pv(rate=0.04, nper=3, pmt=3, fv=100)
97.22
我们将 pmt 设为正数。
函数前加负号。
将 fv 设为100,而非103。
用 Python 进行债券定价与分析