Python 进阶视频课 - 14. FR007 利率掉期定价和曲线拔靴

2021-07-07 18:02:35 浏览数 (1)

这是 Python 进阶课的第十四节 - FR007 利率掉期定价和曲线拔靴,进阶课的目录如下:

  1. NumPy 上
  2. NumPy 下
  3. Pandas 上
  4. Pandas 下
  5. SciPy 上
  6. SciPy 下
  7. Pandas 时间序列
  8. Pandas 高频数据采样
  9. 默顿模型计量经济资本
  10. LSMC 定价美式和百慕大期权
  11. 负油价和负利率模型
  12. Nelson-Siegel 构建债券收益率曲线
  13. 外汇交易组合保证金制定系统

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

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

七天回购掉期 (FR007 swap) 是指交易双方以一定的名义本金为基础,将该本金产生的一种利率计算的利息收入(支出) 与另一种利率计算的利息收入(支出)。交换的只是不同特征的利息,没有实质本金的互换。

掉期有两端,固定端和浮动端,固定端的利率由一个固定利率决定,而浮动端的利率由若干个七天回购利率 (7D repo rate) 复合计算而得。七天回购掉期的日期表如下图所示。

把注意力放在浮动端第 n 期,对应的复合利率 R(Tn-1, Tn) 是由一组七天回购利率组成的。

上图只是为了展示浮动利率的复合过程,真正的细节在下图。

本次课程的知识点和代码太多,采取的方式是先展示成品,接着再从零到一来讲解如何实现,来各点击破每个环节的细节,更重要的是分享笔者处理此类问题的思路:

  • 第二节会讲解数据处理,包括如何从中国外汇交易中心收集 FR007 的市场数据和定盘数据,如何从 excel 或 csv 中读取数据,如何用 cufflinks 来可视化数据。
  • 第三节会介绍日期生成,FR007 掉期的产品日期表和指标日期表是如何生成的。
  • 第四节会介绍变量计算,如何计算或插值折现因子和远期利率。
  • 第五节会讲解曲线构建,如何从市场报价通过拔靴法得到零息曲线。
  • 第六节会讲解产品定价,使用面向对象 (object-orient) 方法构建 FR007 掉期对象和定价对象(分别是 IRS 对象和定价对象的子类)。

在 Jupyter Notebook 把问题讲清楚后,为了做工程,我也把所有代码结构化:

数据处理:

代码语言:javascript复制
|--- data_loader.py
|    |--- load_data()
|    |--- read_instrument()
|    |--- read_market()
|    |--- read_fixing()

日期生成:

代码语言:javascript复制
|--- schedule.py
|    |--- get_settle_date()
|    |--- get_maturity_date_from_trade_date()
|    |--- trim_date()
|    |--- date_series()
|    |--- IBOR_date()
|    |--- CMPR_date()
|    |--- IRS_schedule()
|    |--- CMPIRS_schedule()

变量计算:

代码语言:javascript复制
|--- market_variable.py
|    |--- get_discount()
|    |--- get_forward_rate()
|    |--- update_fixing()

曲线构建:

代码语言:javascript复制
|--- curve_construction.py
|    |--- bootstrapping()
|    |--- compute_npv()
|    |--- process_data()

产品定价:

代码语言:javascript复制
|--- IR_CMPIRS_engine.py
|    |--- class IR_CMPIR( IR_InterestRateSwap )
|    |--- class IR_CMPIR_pricer( IR_InterestRateSwap_pricer )
|
|--- IR_InterestRateSwap_engine.py
|    |--- class IR_InterestRateSwap()
|    |--- class IR_InterestRateSwap_pricer()

其他有用的函数

代码语言:javascript复制
|--- utils.py               基本效用函数
|--- ql_utils.py            和 QuantLib 有关的效用函数
|--- date_utils.py          用于日期转换
|--- daycount_utils.py      用于计算年限
|--- calendar_utils.py      用于构建日历
|--- convention_utils.py    用于获取惯例
|--- formatter.py           用于美化格式

本次课程目录如下:

1. 简介

  • 产品介绍
  • 定价流程

2. 数据处理

  • 头寸数据
  • 市场数据
  • 定盘数据

3. 日期生成

  • 基本概念
  • 日历创建
  • 产品日期
  • 指标日期

4. 变量计算

  • 折现因子
  • 远期利率

5. 曲线构建

  • 基本概念
  • 拔靴方法

6. 产品定价

  • 普通 IRS
  • FR007 掉期

0 人点赞