计算债券收益率

用 Python 进行债券定价与分析

Joshua Mayhew

Options Trader

计算收益的动机

  • 到期收益率表示预期投资回报
  • 有助于比较不同特征的债券
用 Python 进行债券定价与分析

零息债到期收益率公式

回忆零息债价格公式:

$PV = \frac{FV}{(1 + r)^n}$

可重排以求收益率 $(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$

用 Python 进行债券定价与分析

零息债收益率示例

用同一只零息债反向计算:

  • 到期3年
  • 面值100美元
  • 价格90.19美元

 

这只债的收益率是多少?

用 Python 进行债券定价与分析

零息债收益率计算

3年期零息债,价格90.19美元,面值100美元:

$r = \sqrt[n]\frac{FV}{PV} -1$

ytm = (100 / 90.19) ** (1/3) - 1
print(ytm)
0.035

 

我们用 ytm 表示"到期收益率"。

用 Python 进行债券定价与分析

付息债收益率公式?

付息债公式:

$ 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}$

此方程无法对 $r$ 显式求解

用试错法求 $r$

这也是 npf.rate() 的工作方式

用 Python 进行债券定价与分析

付息债券收益率示例

回顾之前的付息债券,其:

  • 到期为3年
  • 年付3%票息
  • 价格为97.22美元

 

其到期收益率是多少?

用 Python 进行债券定价与分析

付息债券收益率计算

3年期付息债,年票息3%,价格97.22美元:

import numpy_financial as npf
npf.rate(nper=3, pmt=3, pv=-97.22, fv=100)
0.04

请将现值 PV 设为负数。

因为买入债券需支付价格(负现金流)。

用 Python 进行债券定价与分析

让我们练习!

用 Python 进行债券定价与分析

Preparing Video For Download...