4. 修正久期
麦考利久期告诉我们“债券现金流的加权平均回款时间”,但它本身是一个时间概念,单位是年。真正让交易台、风控和组合经理每天使用的,是修正久期(Modified Duration)。它把时间维度转换成价格对收益率的一阶敏感度,是连接“债券期限结构”与“盈亏估算”的关键参数。
一、核心原理:修正久期与麦考利久期的关系
修正久期与麦考利久期的关系非常简洁:
D_mod = D_mac / (1 + y / f)
其中:
D_mod = 修正久期(Modified Duration)
D_mac = 麦考利久期(Macaulay Duration)
y = 到期收益率(年化)
f = 每年付息频率(年付=1,半年付=2,季付=4)
这个公式的本质是:麦考利久期衡量“时间”,而修正久期衡量“价格对收益率变化的百分比敏感度”。分母中的 (1 + y/f) 来自复利频率的调整,把离散复利下的时间单位折算成连续收益率变化下的价格弹性。
修正久期的经济含义可以写成:
ΔP / P ≈ - D_mod × Δy
即:债券价格百分比变化 ≈ 负的修正久期 × 收益率变化
例如,某债券修正久期为 6.5,若收益率上升 10 个基点(0.10%),则价格大约下跌 6.5 × 0.10% = 0.65%。这就是交易员口中“久期就是风险敞口”的由来。
二、方法流程:从麦考利久期到价格敏感性近似
在实际工作中,计算和应用修正久期通常遵循以下流程:
- 确定债券现金流:列出每期票息、本金和付息时间。
- 计算麦考利久期:用每期现金流现值占总现值的权重,乘以对应时间后求和。
- 转换为修正久期:用
D_mod = D_mac / (1 + y/f)完成调整。 - 估算价格变化:用
ΔP/P ≈ -D_mod × Δy做一阶近似。 - 结合凸性修正:当收益率变动较大时,加入凸性项提高精度。
下面是一个可复用的 Python 计算片段,用于从现金流直接得到修正久期:
import numpy as np
def modified_duration(cashflows, times, y, f=2):
"""
cashflows: 每期现金流列表
times: 对应时间(年)
y: 年化到期收益率
f: 每年付息频率
"""
pv = np.array(cashflows) / (1 + y/f) ** (np.array(times) * f)
price = pv.sum()
d_mac = np.sum(pv * np.array(times)) / price
d_mod = d_mac / (1 + y/f)
return d_mac, d_mod, price
# 示例:3年期、票息4%、半年付、YTM 5%
cf = [2, 2, 2, 2, 2, 102]
t = [0.5, 1.0, 1.5, 2.0, 2.5, 3.0]
d_mac, d_mod, price = modified_duration(cf, t, 0.05, 2)
print(f"麦考利久期={d_mac:.4f} 年, 修正久期={d_mod:.4f}, 价格={price:.4f}")
运行结果会显示麦考利久期约 2.82 年,修正久期约 2.75。这意味着收益率每变动 1 个基点,价格约变动 0.0275%。
三、案例场景:单因子利率变动下的应用
假设某组合持有三只债券,总市值 1 亿元,我们想快速估算收益率曲线整体上移 25 个基点时的组合损失。单因子情景下,只需用各债券的修正久期加权:
| 债券 | 市值(万元) | 修正久期 | 市值权重 | 久期贡献 |
|---|---|---|---|---|
| 国债 A | 4000 | 4.2 | 40% | 1.68 |
| 金融债 B | 3500 | 6.1 | 35% | 2.14 |
| 企业债 C | 2500 | 8.5 | 25% | 2.13 |
| 组合 | 10000 | 5.95 | 100% | 5.95 |
组合修正久期为 5.95。若收益率整体上升 25bp:
ΔP/P ≈ -5.95 × 0.0025 = -1.4875%
组合损失 ≈ 10000 万 × 1.4875% ≈ 148.75 万元
这个估算在收益率变动较小时非常有效,也是日内风控和限额监控的常用手段。但若收益率变动超过 50bp,一阶近似会明显低估损失,因为凸性开始发挥作用。
四、误区与复盘:修正久期不是万能钥匙
修正久期虽然好用,但常见误区也不少:
- 误区一:把修正久期当成时间。修正久期单位不是年,而是“价格对收益率的百分比弹性”。说“修正久期 5 年”是不严谨的。
- 误区二:忽略付息频率。半年付和年付的转换分母不同,直接套用会导致系统性偏差。
- 误区三:用修正久期估算大幅利率变动。当 Δy 超过 50bp 时,一阶近似误差迅速扩大,必须引入凸性。
- 误区四:认为修正久期适用于所有债券。含权债、MBS、浮息债的价格敏感性并非线性,修正久期可能严重失真。
复盘时,建议把“修正久期估算值”与“实际重估盈亏”做对比,记录偏差方向和幅度。若偏差持续为负,说明凸性为正且不可忽略;若偏差不稳定,则要检查现金流假设和收益率曲线形态。
总结来说,修正久期是债券风险管理的“通用语言”。它把麦考利久期的时间概念翻译成价格敏感度,让交易、风控和组合管理能够在同一套参数下沟通。掌握它的换算关系、近似公式和适用边界,是进入债券量化风险实战的第一步。