第二章:债券基础与定价模型
做固收量化这些年,我最大的感受是:债券看着简单,其实门道很深。股票你盯着K线图,顶多亏个本金。债券呢?利率波动、信用风险、久期管理,哪个没处理好都可能翻车。今天咱们就从最基础的开始聊。
2.1 债券的基本要素
债券说白了就是一张借条。发行人找你借钱,约定好什么时候还、利息怎么给。我刚开始做债券交易时,老觉得这东西比股票简单多了——后来发现,简单的东西往往最容易出问题。
一张标准债券,通常包含这几个要素:
- 面值(Face Value):到期时发行人还你的钱。国内通常是100元。
- 票面利率(Coupon Rate):每年给你的利息比例。比如3%的票息,面值100元,每年给你3块。
- 付息频率(Coupon Frequency):一年付几次。国内大部分债券一年付一次,也有半年付的。
- 到期日(Maturity Date):还本付息的日子。
- 发行价格(Issue Price):你买的时候花了多少钱。可能高于面值(溢价),也可能低于面值(折价)。
一个容易踩的坑: 我曾经以为票面利率越高越好。后来发现,高票息往往意味着高风险。你想想看,一个企业如果经营状况很好,为什么要给你8%的利息?银行理财才3%啊。
2.2 到期收益率(YTM)
到期收益率,简称YTM。这是债券定价里最核心的概念之一。它衡量的是:你买入债券后一直持有到期,每年的平均回报率是多少。
公式长这样:
P = Σ [C / (1 + YTM)^t] + F / (1 + YTM)^n
其中:
- P = 当前价格
- C = 每期票息
- F = 面值
- n = 剩余期数
- t = 第t期
这个公式看着复杂,其实逻辑很简单:把未来的所有现金流(票息+本金)折现到现在,加起来等于当前价格。那个折现率就是YTM。
我的经验: 实际工作中没人手算YTM。Excel里用IRR函数,Python里用numpy.irr或者scipy.optimize。但我建议你至少手动算一次,理解背后的逻辑。不然哪天系统出bug,你都不知道结果对不对。
2.3 久期与凸性
久期(Duration)和凸性(Convexity),这两个概念我当年学的时候觉得特别抽象。后来做回测系统时才发现,它们就是债券的「风险度量尺」。
2.3.1 久期
久期衡量的是债券价格对利率变化的敏感度。说白了就是:利率每变动1%,债券价格大概变动多少。
麦考利久期公式:
MacD = Σ [t * PV(CF_t)] / P
修正久期:
ModD = MacD / (1 + YTM / m)
其中m是每年付息次数。
举个例子:一个修正久期为5的债券,利率上升1%,价格大约下跌5%。
注意: 久期是个线性近似。利率变动小的时候挺准,变动大了就不行了。这时候需要凸性来帮忙。
2.3.2 凸性
凸性修正了久期的线性误差。它衡量的是久期本身的变化率。
凸性公式:
Convexity = Σ [t * (t + 1) * PV(CF_t)] / [P * (1 + YTM)^2]
加上凸性修正后,价格变动估算更准确:
ΔP/P ≈ -ModD * Δy + 0.5 * Convexity * (Δy)^2
我做过一个测试:利率变动100个基点时,只用久期估算误差约2%,加上凸性后误差降到0.1%以内。所以做回测时,千万别偷懒只用久期。
2.4 利率期限结构理论
利率期限结构,就是不同期限的利率之间的关系。画出来就是那条收益率曲线。
关于收益率曲线的形状,有几种主流理论:
| 理论名称 | 核心观点 | 我的评价 |
|---|---|---|
| 纯预期理论 | 长期利率 = 未来短期利率的预期值 | 太理想化,现实中没人这么纯 |
| 流动性偏好理论 | 长期债券需要流动性溢价补偿 | 比较靠谱,我回测时常用 |
| 市场分割理论 | 不同期限市场各自独立 | 有点极端,但短期有效 |
| 优先栖息地理论 | 投资者有偏好期限,但可以被溢价吸引 | 最贴近实际,我推荐这个 |
我个人习惯用流动性偏好理论做基准。为什么呢?因为它在数学上好处理,而且回测效果不错。但要注意,市场极端行情下(比如2020年3月),所有理论都会失效。
2.5 知识体系总览
下面这张图是我自己整理的债券定价知识框架,做回测系统时经常参考:
避坑指南: 我曾经在回测系统里直接用YTM作为折现率,结果发现对于含权债券(比如可赎回债),YTM完全不准。后来改用OAS(期权调整利差)才解决问题。所以做回测前,先搞清楚你的债券有没有隐含期权。
嗯,这一章的内容就到这里。债券定价是固收量化的地基,地基不牢,后面盖的楼再高也危险。下一章咱们聊聊怎么用Python实现这些定价模型,到时候我会分享一些我踩过的坑。