Python 进阶视频课 - 12. Nelson-Siegel 构建债券收益率曲线

2021-04-21 15:59:15 浏览数 (1)

这是 Python 进阶课的第十二节 - 负油价和负利率模型,进阶课的目录如下:

  1. NumPy 上
  2. NumPy 下
  3. Pandas 上
  4. Pandas 下
  5. SciPy 上
  6. SciPy 下
  7. Pandas 时间序列
  8. Pandas 高频数据采样
  9. 默顿模型计量经济资本
  10. LSMC 定价美式和百慕大期权
  11. 负油价和负利率模型

之前基础版的 11 节的目录如下:

  1. 编程概览
  2. 元素型数据
  3. 容器型数据
  4. 流程控制:条件-循环-异常处理
  5. 函数上:低阶函数
  6. 函数下:高阶函数
  7. 类和对象:封装-继承-多态-组合
  8. 字符串专场:格式化和正则化
  9. 解析表达式:简约也简单
  10. 生成器和迭代器:简约不简单
  11. 装饰器:高端不简单

在固定收益 (fixed-income) 世界中,收益率曲线毫无疑问是最重要的概念。它表示给定发行人和给定时间点,投资收益率 (yield) 和期限 (tenor) 之间的关系。市场中没有单一的收益率曲线,在不同的时间点 (time),对不同的货币 (currency),对不同的发行人 (issuer) 和不同的信贷水平 (rating) 有一系列不同的收益率曲线。

本次课程目录如下:

1. 基本概念

  • 收益率曲线 101
  • 债券 101

2. Nelson Siegel 模型

  • 瞬时远期利率
  • 即期利率
  • Svensson 模型

3. Nelson Siegel 实现

  • 数据处理
  • 模型优化
  • 结果分析

当我们谈论收益曲线模型时,有两种情况:

  1. 在给定时间点的收益率曲线的形式 (at a point of time)
  2. 收益率曲线随时间变化的动态 (through time)

首先 NS 模型制定了瞬时远期利率(instantaneous forward rates)的形式:

该模型有四个参数 β0, β1, β2, λ,其中 τ = T - t 是到期年限,λ > 0。

瞬时远期利率 f(t, T) 里面有三项:

  • 第一项 β0 是当 τ 趋近无穷大时的远期利率,因此 β0= f(∞)。
  • 第二项是个单调函数,当 β1> 0 时递减,当 β1 < 0 时递增。
  • 第三项是个非单调函数,可以产生 hump。

当 τ 趋近零时,第二项趋近于 β1,第三项趋近于 0,因此 f(0) = β0 β1。

从上图这样容易看出:

  • β0 的因子载荷是常数,对于对所有期限利率的影响是相同的,因此 β0 可控制利率水平(level),它的变动会使得收益率曲线发生水平上下移动。
  • β1 的因子载荷是单调递减,从1 很快的衰减到 0,这表明 β1 对短端利率的影响较大,因此 β1 可控制曲线斜率(slope),影响着利率曲线的斜率程度。
  • β2 的因子载荷先增后减,从 0 增到 1 再减到 0,这表明 β2 对利率曲线的短端和长端影响较弱,对中端的影响较大,因此 β2 控制曲线曲率(curvature)。
  • τ 是 β1 和 β2 的因子载荷的衰减速度,该值越大衰减越快。

核心代码如下:

拟合结果如下:

对比债券市场和模型价格:

对比债券市场和模型收益率:

本节内容绝对硬核,就等你来学!

付费用户(付 1 赠 1)可以获得:

  • 观看课程视频 (98 分钟)
  • Python 代码 (Jupyter Notebook)

Jupyter Notebook

0 人点赞