这是 Python 进阶课的第十四节 - FR007 利率掉期定价和曲线拔靴,进阶课的目录如下:
之前基础版的 11 节的目录如下:
七天回购掉期 (FR007 swap) 是指交易双方以一定的名义本金为基础,将该本金产生的一种利率计算的利息收入(支出) 与另一种利率计算的利息收入(支出)。交换的只是不同特征的利息,没有实质本金的互换。
掉期有两端,固定端和浮动端,固定端的利率由一个固定利率决定,而浮动端的利率由若干个七天回购利率 (7D repo rate) 复合计算而得。七天回购掉期的日期表如下图所示。
把注意力放在浮动端第 n 期,对应的复合利率 R(Tn-1, Tn) 是由一组七天回购利率组成的。
上图只是为了展示浮动利率的复合过程,真正的细节在下图。
本次课程的知识点和代码太多,采取的方式是先展示成品,接着再从零到一来讲解如何实现,来各点击破每个环节的细节,更重要的是分享笔者处理此类问题的思路:
cufflinks
来可视化数据。在 Jupyter Notebook 把问题讲清楚后,为了做工程,我也把所有代码结构化:
|--- data_loader.py
| |--- load_data()
| |--- read_instrument()
| |--- read_market()
| |--- read_fixing()
|--- schedule.py
| |--- get_settle_date()
| |--- get_maturity_date_from_trade_date()
| |--- trim_date()
| |--- date_series()
| |--- IBOR_date()
| |--- CMPR_date()
| |--- IRS_schedule()
| |--- CMPIRS_schedule()
|--- market_variable.py
| |--- get_discount()
| |--- get_forward_rate()
| |--- update_fixing()
|--- curve_construction.py
| |--- bootstrapping()
| |--- compute_npv()
| |--- process_data()
|--- 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()
|--- 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. 产品定价