债券定价基础:现金流贴现模型、到期收益率、久期与凸性、利率期限结构

债券定价这事儿,说白了就是算清楚「未来能拿多少钱,今天值多少」。我刚开始做固收那会儿,总觉得定价就是套公式,后来踩过几次坑才明白——模型是骨架,市场才是血肉。咱们一个一个拆开聊。

现金流贴现模型(DCF)

这是所有定价的起点。逻辑很简单:债券未来的每一笔利息和本金,都按一个合适的折现率折回今天,加总就是价格。

公式长这样:

P = Σ [CFt / (1 + r)^t]

其中:

  • P = 债券价格
  • CFt = 第t期的现金流(利息或本金)
  • r = 折现率(通常用到期收益率)
  • t = 期数

举个例子。一张3年期债券,面值100元,票面利率5%,每年付息一次。假设市场要求收益率是4%。

P = 5/(1+0.04)^1 + 5/(1+0.04)^2 + 105/(1+0.04)^3
  = 4.81 + 4.62 + 93.35
  = 102.78元

你看,票面利率5%高于市场要求的4%,所以债券溢价交易。反过来就是折价。嗯,这里要注意:折现率的选择直接决定定价结果。我见过有人直接用票面利率当折现率,那算出来永远是面值,毫无意义。

个人习惯: 我一般先用国债收益率曲线做基准,再根据信用利差、流动性溢价做调整。别偷懒用单一折现率,尤其是期限长的债券,误差会放大。

到期收益率(YTM)

到期收益率,就是让债券未来所有现金流折现后等于当前市场价格的那个折现率。说白了,它是你持有到期能获得的年化回报率。

但YTM有个大前提——你得把所有利息都按YTM再投资。现实中这几乎不可能。我做过回测,利率波动大的年份,实际回报和YTM能差50个基点以上。

计算YTM没有解析解,只能用数值方法。牛顿迭代法最常用:

def ytm_calculator(price, coupon, maturity, face_value=100, guess=0.05):
    """
    用牛顿法算到期收益率
    price: 当前市场价格
    coupon: 年票息
    maturity: 剩余期限(年)
    """
    r = guess
    for _ in range(100):
        # 计算当前r下的理论价格
        pv = sum([coupon / (1 + r)**t for t in range(1, maturity+1)]) 
        pv += face_value / (1 + r)**maturity
        
        # 计算导数
        dpv_dr = sum([-t * coupon / (1 + r)**(t+1) for t in range(1, maturity+1)])
        dpv_dr += -maturity * face_value / (1 + r)**(maturity+1)
        
        # 更新r
        r -= (pv - price) / dpv_dr
        
        if abs(pv - price) < 1e-6:
            break
    return r
避坑指南: 我曾经用Excel的IRR函数算YTM,结果发现它默认按年复利,而市场惯例是半年复利。差了一个复利频率,收益率能差好几个基点。做量化时一定要统一口径。

久期与凸性

久期衡量的是债券价格对利率变化的敏感度。麦考利久期是加权平均回收期,修正久期才是真正的价格弹性。

修正久期公式:

Modified Duration = Macaulay Duration / (1 + YTM / m)

其中m是每年付息次数。

价格变化近似:

ΔP/P ≈ -D_mod × Δy

但这是线性近似,利率变动大时误差就出来了。这时候需要凸性来修正。

凸性公式:

Convexity = [Σ (t×(t+1)×CFt / (1+y)^(t+2))] / P

加上凸性修正后:

ΔP/P ≈ -D_mod × Δy + 0.5 × Convexity × (Δy)^2

我做过一个测试:利率上升200个基点时,只用久期估算的价格误差是1.8%,加上凸性后误差降到0.3%。所以做组合对冲时,凸性不是锦上添花,是必需品。

利率变动 久期估算 久期+凸性 实际价格
+100bp -4.50% -4.35% -4.33%
+200bp -9.00% -8.40% -8.37%
-100bp +4.50% +4.65% +4.67%
关键点: 凸性对投资者是好事——利率下降时价格涨得更多,利率上升时价格跌得更少。这就是为什么含权债券(比如可赎回债)的凸性可能是负的,要格外小心。

利率期限结构

利率期限结构,就是不同期限的收益率之间的关系。画出来就是收益率曲线。

三种经典理论:

  • 纯预期理论: 长期利率等于未来短期利率的预期平均值。说白了,曲线陡峭意味着市场预期未来加息。
  • 流动性偏好理论: 投资者要求期限溢价,因为长期债券风险更高。所以曲线通常向上倾斜。
  • 市场分割理论: 不同期限的资金供需独立,各玩各的。现实中不太成立,因为套利者会抹平差异。

实际工作中,我主要用Nelson-Siegel模型来拟合曲线。它用三个参数就能描述曲线的水平、斜率和曲率:

y(τ) = β0 + β1 × (1 - e^(-τ/λ)) / (τ/λ) + β2 × [(1 - e^(-τ/λ)) / (τ/λ) - e^(-τ/λ)]

其中:

  • β0:长期利率水平
  • β1:曲线斜率(短端-长端)
  • β2:曲率(中期弯曲程度)
  • λ:衰减速度

我习惯每天收盘后跑一遍Nelson-Siegel拟合,看看参数变化。β1突然变大,说明市场在定价加息预期;β2剧烈波动,往往是流动性出了问题。

实战技巧: 做组合再平衡时,别只看YTM。把组合的久期、凸性和曲线上的关键期限点都拆开看。我曾经用主成分分析(PCA)把曲线变动分解成平移、倾斜、曲率三个因子,再针对性地做对冲,效果比直接调久期好得多。
债券定价知识体系 债券定价基础 现金流贴现模型 到期收益率 (YTM) 久期与凸性 利率期限结构 折现率选择 现金流预测 牛顿迭代法 再投资假设 修正久期 凸性修正 Nelson-Siegel 三大理论

这四个模块是环环相扣的。DCF是底层逻辑,YTM是市场给出的折现率,久期和凸性告诉你风险敞口,期限结构则是整个定价体系的基准。做组合优化时,我习惯先把期限结构拟合好,再算每只债券的久期贡献,最后用凸性做二阶修正。这样出来的再平衡方案,才经得起市场波动的考验。

专注资料整理