4. 收益率曲线构建方法:Bootstrapping、Nelson-Siegel、Svensson与样条插值
收益率曲线,说白了就是债券市场的“定价基准”。你想想看,不同期限的国债收益率到底该怎么算?市场上能直接看到的,只有那些活跃交易的国债报价。但我们需要的是整条曲线——从1个月到30年,每个点都要有数。
这就引出了我们今天要聊的四种构建方法。我个人在实际项目中,几乎每种方法都踩过坑,今天把经验全部分享给你。
4.1 Bootstrapping方法:从零息债券出发
Bootstrapping,中文叫“自举法”。名字挺玄乎,其实逻辑很简单:用已知的零息债券价格,一步步推导出未知的即期利率。
举个例子。假设市场上有一只1年期零息国债,价格是97元,面值100元。那1年期即期利率就是:
r1 = (100 / 97) - 1 ≈ 3.09%
现在有一只2年期附息国债,票面利率4%,每年付息一次,价格是101元。我们已知r1=3.09%,那2年期即期利率r2怎么算?
现金流拆解:第一年的4元利息,用r1折现;第二年的104元(本金+利息),用r2折现。两者之和等于101元。
4 / (1 + 3.09%) + 104 / (1 + r2)^2 = 101
解这个方程,就能得到r2。然后一层层往上推,这就是Bootstrapping的核心。
关键点:Bootstrapping要求市场上有足够多的、期限连续的债券。如果某个期限没有对应的债券,就需要插值。
我的经验:我在做国债收益率曲线时,发现1年期以内的短期债券流动性差,报价经常失真。这时候我会先用货币市场工具(如回购利率)来补充短期端的数据。
4.2 Nelson-Siegel模型:参数化曲线的经典
Nelson-Siegel模型(简称NS模型)是1987年提出的。它用四个参数来描述整条收益率曲线:
y(t) = β0 + β1 * (1 - e^(-t/τ)) / (t/τ) + β2 * [(1 - e^(-t/τ)) / (t/τ) - e^(-t/τ)]
其中:
- β0:长期利率水平(当t→∞时,y(t)→β0)
- β1:短期利率偏离长期水平的程度(当t→0时,y(t)→β0+β1)
- β2:曲线的“驼峰”形状
- τ:衰减因子,控制曲线弯曲的位置
NS模型的优势在于:参数少、拟合快、曲线光滑。但它有个明显的缺点——只能处理一个“驼峰”。如果收益率曲线有两个弯曲(比如短期和中期各有一个拐点),NS模型就力不从心了。
避坑指南:我曾经用NS模型拟合2013年“钱荒”时期的收益率曲线,结果惨不忍睹。因为当时短期利率飙升,曲线形状极其扭曲,NS模型的单驼峰结构根本捕捉不到。后来我换成了Svensson模型才解决问题。
4.3 Svensson模型:NS模型的升级版
Svensson模型(也叫Nelson-Siegel-Svensson模型,简称NSS模型)在NS模型的基础上增加了一个驼峰项:
y(t) = β0 + β1 * (1 - e^(-t/τ1)) / (t/τ1) + β2 * [(1 - e^(-t/τ1)) / (t/τ1) - e^(-t/τ1)] + β3 * [(1 - e^(-t/τ2)) / (t/τ2) - e^(-t/τ2)]
多了一个β3和τ2,意味着可以描述两个不同位置的弯曲。这对于复杂的收益率曲线形态非常有用。
| 特性 | NS模型 | Svensson模型 |
|---|---|---|
| 参数数量 | 4个(β0, β1, β2, τ) | 6个(β0, β1, β2, β3, τ1, τ2) |
| 驼峰数量 | 1个 | 2个 |
| 拟合灵活性 | 一般 | 较强 |
| 过拟合风险 | 低 | 中等 |
| 适用场景 | 正常市场环境 | 复杂或极端市场 |
我的建议:日常使用中,我通常先用NS模型。如果拟合残差过大(比如均方根误差超过5个基点),再切换到Svensson模型。不要一上来就用复杂模型,容易过拟合。
4.4 样条插值法:非参数化的灵活选择
样条插值法不假设收益率曲线有特定的函数形式。它把曲线分成若干段,每段用一个低阶多项式拟合,然后在连接点处保证光滑。
最常用的是三次样条(Cubic Spline)。它的数学表达是:
s(t) = a_i + b_i*(t - t_i) + c_i*(t - t_i)^2 + d_i*(t - t_i)^3, t ∈ [t_i, t_{i+1}]
每个区间有4个参数,n个区间就有4n个参数。通过连续性条件(函数值、一阶导数、二阶导数在节点处连续)和边界条件,可以唯一确定所有参数。
样条插值的优势在于:
- 完全由数据驱动,不依赖先验假设
- 局部调整能力强——修改一个数据点,只影响附近区域
- 拟合精度通常很高
但缺点也很明显:
- 参数多,容易过拟合
- 曲线外推能力差(超出数据范围的部分不可靠)
- 节点位置的选择对结果影响很大
避坑指南:我曾经用样条插值做企业债收益率曲线,节点选得太密,结果曲线像蛇一样扭来扭去,完全失去了经济含义。后来我改用“平滑样条”(在拟合优度和光滑度之间做权衡),效果好了很多。
4.5 四种方法的对比与选择
说了这么多,到底该用哪种?我个人的经验是:
- Bootstrapping:适合有大量零息债券或附息债券的市场,比如国债。计算简单,结果透明。
- NS模型:适合正常市场环境下的利率曲线拟合。参数少,稳定性好。
- Svensson模型:适合曲线形态复杂的情况,比如有多个拐点或极端波动。
- 样条插值:适合需要高精度拟合的场景,比如做市商定价。但要注意控制过拟合。
下面这张图展示了四种方法的逻辑关系:
4.6 实战中的选择逻辑
在实际项目中,我通常会这样决策:
- 先看数据质量:如果债券数量多、期限分布均匀,优先用Bootstrapping。如果数据稀疏,用参数模型。
- 再看市场状态:正常市场用NS模型。极端市场(比如金融危机)用Svensson模型。
- 最后看应用场景:做定价用样条插值(精度高),做宏观分析用NS模型(参数有经济含义)。
我的习惯:我会同时用NS模型和样条插值拟合同一组数据。如果两者差异小于3个基点,说明曲线形态正常。如果差异超过10个基点,我会仔细检查数据,看看是不是有异常点。
嗯,收益率曲线构建这块,说到底就是“用有限的数据,推断出整条曲线”。每种方法都有它的脾气,多试几次,你就能摸透它们的性格了。