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%。这就是交易员口中“久期就是风险敞口”的由来。

关键理解:麦考利久期是“加权平均时间”,修正久期是“价格弹性”。前者用于免疫策略中的期限匹配,后者用于日常盈亏估算和风险限额管理。

二、方法流程:从麦考利久期到价格敏感性近似

在实际工作中,计算和应用修正久期通常遵循以下流程:

  1. 确定债券现金流:列出每期票息、本金和付息时间。
  2. 计算麦考利久期:用每期现金流现值占总现值的权重,乘以对应时间后求和。
  3. 转换为修正久期:用 D_mod = D_mac / (1 + y/f) 完成调整。
  4. 估算价格变化:用 ΔP/P ≈ -D_mod × Δy 做一阶近似。
  5. 结合凸性修正:当收益率变动较大时,加入凸性项提高精度。

下面是一个可复用的 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 个基点时的组合损失。单因子情景下,只需用各债券的修正久期加权:

债券市值(万元)修正久期市值权重久期贡献
国债 A40004.240%1.68
金融债 B35006.135%2.14
企业债 C25008.525%2.13
组合100005.95100%5.95

组合修正久期为 5.95。若收益率整体上升 25bp:

ΔP/P ≈ -5.95 × 0.0025 = -1.4875%
组合损失 ≈ 10000 万 × 1.4875% ≈ 148.75 万元

这个估算在收益率变动较小时非常有效,也是日内风控和限额监控的常用手段。但若收益率变动超过 50bp,一阶近似会明显低估损失,因为凸性开始发挥作用。

实战提示:在单因子利率变动场景中,修正久期是“第一道防线”。它计算快、含义清晰,适合盘中快速估算。但正式风险报告应同时披露凸性调整后的结果。

四、误区与复盘:修正久期不是万能钥匙

修正久期虽然好用,但常见误区也不少:

  • 误区一:把修正久期当成时间。修正久期单位不是年,而是“价格对收益率的百分比弹性”。说“修正久期 5 年”是不严谨的。
  • 误区二:忽略付息频率。半年付和年付的转换分母不同,直接套用会导致系统性偏差。
  • 误区三:用修正久期估算大幅利率变动。当 Δy 超过 50bp 时,一阶近似误差迅速扩大,必须引入凸性。
  • 误区四:认为修正久期适用于所有债券。含权债、MBS、浮息债的价格敏感性并非线性,修正久期可能严重失真。

复盘时,建议把“修正久期估算值”与“实际重估盈亏”做对比,记录偏差方向和幅度。若偏差持续为负,说明凸性为正且不可忽略;若偏差不稳定,则要检查现金流假设和收益率曲线形态。

修正久期:从时间到价格敏感性的转换 麦考利久期 D_mac(年) 现金流加权平均时间 修正久期 D_mod = D_mac / (1+y/f) 价格对收益率的一阶弹性 价格变化近似 ΔP/P ≈ -D_mod × Δy 单因子利率变动下的盈亏 单因子利率变动下的应用逻辑 收益率上升 → 价格下跌 → 跌幅 ≈ D_mod × Δy 收益率下降 → 价格上涨 → 涨幅 ≈ D_mod × |Δy| 注意:Δy 较大时需加入凸性修正,否则低估损失或高估收益
风控提醒:修正久期是线性近似工具,不是精确重估。在利率大幅波动、曲线非平行移动或含权债场景中,必须结合凸性、关键利率久期和情景重估,避免单一指标误导决策。

总结来说,修正久期是债券风险管理的“通用语言”。它把麦考利久期的时间概念翻译成价格敏感度,让交易、风控和组合管理能够在同一套参数下沟通。掌握它的换算关系、近似公式和适用边界,是进入债券量化风险实战的第一步。