这是 Python 进阶课的第十二节 - 负油价和负利率模型,进阶课的目录如下:
- NumPy 上
- NumPy 下
- Pandas 上
- Pandas 下
- SciPy 上
- SciPy 下
- Pandas 时间序列
- Pandas 高频数据采样
- 默顿模型计量经济资本
- LSMC 定价美式和百慕大期权
- 负油价和负利率模型
之前基础版的 11 节的目录如下:
- 编程概览
- 元素型数据
- 容器型数据
- 流程控制:条件-循环-异常处理
- 函数上:低阶函数
- 函数下:高阶函数
- 类和对象:封装-继承-多态-组合
- 字符串专场:格式化和正则化
- 解析表达式:简约也简单
- 生成器和迭代器:简约不简单
- 装饰器:高端不简单
在固定收益 (fixed-income) 世界中,收益率曲线毫无疑问是最重要的概念。它表示给定发行人和给定时间点,投资收益率 (yield) 和期限 (tenor) 之间的关系。市场中没有单一的收益率曲线,在不同的时间点 (time),对不同的货币 (currency),对不同的发行人 (issuer) 和不同的信贷水平 (rating) 有一系列不同的收益率曲线。
本次课程目录如下:
1. 基本概念
- 收益率曲线 101
- 债券 101
2. Nelson Siegel 模型
- 瞬时远期利率
- 即期利率
- Svensson 模型
3. Nelson Siegel 实现
- 数据处理
- 模型优化
- 结果分析
当我们谈论收益曲线模型时,有两种情况:
- 在给定时间点的收益率曲线的形式 (at a point of time)
- 收益率曲线随时间变化的动态 (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