过几个点画一条平滑的线
市场只在少数期限(如 2 年、3 年、5 年)报出收益率曲线,但你需要任意期限(如 2.5 年)的值。插值就是填补已知点之间的空隙。最简单的是线性:用 np.interp 或 interpolate.interp1d 在相邻两点之间画直线。三次样条 interpolate.CubicSpline 用三次曲线段把点连起来,使每个点处的斜率和曲率也相等,结果看起来很平滑。样条在点之间可能冲过头。PchipInterpolator 通过从不超过或低于相邻点来避免这一点。在已知范围内哪种都行,但在范围之外就是外推,这是一种猜测,三次曲线可能失控。
插值哪个量很重要。对收益率做线性插值很简单,但金融里常常改为插值贴现因子的对数。连续复利下贴现因子是 D(t)=e−y(t)t,所以 lnD(t)=−y(t)t。对它做线性插值能使节点之间的远期利率保持不变。时刻 t1 与 t2 之间的远期利率,是你今天可以为那段未来时间锁定的利率:f=t2−t1y(t2)t2−y(t1)t1。平滑而合理的远期曲线才是检验插值好坏的真正标准。
D(t)=e−y(t)t,lnD(t) linear between knots,f(t1,t2)=t2−t1y(t2)t2−y(t1)t1(1) 2.5 年期收益率收益率在
2 年为
4.0%,
3 年为
4.5%。线性插值在
2.5 年给出
4.25%。对
lnD=−yt(
2 年为
−0.080,
3 年为
−0.135)插值,
2.5 年为
−0.1075,所以收益率是
0.1075/2.5=4.30%。
2 到
3 年之间的远期利率是
(0.135−0.080)/1=5.5%。过
(0,0)、
(1,1)、
(2,0) 的自然三次样条在
[0,1] 上是
S(x)=−0.5x3+1.5x,所以
S(0.5)=0.6875,而直线给出
0.5。在真实数据上,2026 年 10 月 9 日的美债曲线
10 年为
5.24%,
20 年为
5.65%。在
15 年处,线性插值给出
5.445%,过全部十个点的三次样条给出
5.450%,PCHIP 给出
5.493%。超出数据范围就会出错:同一条样条在
40 年处给出
4.26%,而
30 年的收益率是
5.60%。
- 范围内插值,范围外小心:线性、三次样条和 PCHIP 在数据内部相近,在外部分道扬镳。
- 选择插值的对象:贴现因子的对数能让节点之间的远期利率保持稳定。
- 检查远期曲线:好的插值应给出合理的远期利率,而不只是一条穿过各点的漂亮曲线。
实验:评分内容
- 线性插值10 分
- 插值贴现因子15 分
- 远期利率15 分
- 样条取值10 分
- 合适的工具15 分
- 构建曲线10 分
- 为什么不要外推三次样条25 分