专栏首页王的机器利率掉期 (IRS) 中的超级细节

利率掉期 (IRS) 中的超级细节

最近有读者问人民币 FR007 掉期的估值总是和系统上对不上,加上 RFR 代替 IBOR 后有新的 RFR 掉期出现,其估值方法中有很多细节。以上两种产品都可以叫做利率掉期。笔者想趁着写《金融工程》一书的利率掉期这章时,顺便给大家做一个估值利率掉期高度概览,并指出所有应该注意的细节,避免大家在复现结果或者验证模型时少走点坑。

先看定义:

利率掉期(Interest Rate Swap, IRS) 是指交易双方约定在未来的一定期限内,对约定的名义本金按照不同的计息方法交换利息的交易。

IRS 定义很广,除了大家最熟悉的固定端换浮动端(fixed-to-floating)的 IRS,还有

  • 利率基差掉期(Interest Basis Swap, IBS)
  • 跨货币基差掉期(Cross-Currency Basis Swap, XBS)
  • 七天回购掉期(FR007 Swap)
  • 隔夜指数掉期(Overnight-Index Swap, OIS)
  • 无风险利率掉期(Risk-Free Rate Swap, RFRS)

等等

IRS 的估值没有涉及任何复杂的模型,有的只是惯例和细节处理,不过不管是什么类型的 IRS,其现值公式总能表达成如下大繁至简的形式。

IRS 产品有两端,估值方法一样,因此我们把注意力放在一端,其现值就是未来所有现金流的折现并加总。

上面公式中 5 个变量分别代表:

  1. PorR:根据接收还是支付现金流,设置其值为 +1 或 -1(注意它从累加符号中单独提出来)
  2. Notionali:第 i 期的名义本金
  3. Ratei:第 i 期的等效利率
  4. YearFraci:第 i 期的期限年限
  5. Discounti:第 i 期的折现因子

让我们对以上五个变量从简单到复杂娓娓道来。

支付接收

PorR:IRS 支付端或接收端的标识符,支付端为 -1,接受端为 1。

拿一张彭博的 IRS 举例。

从上图红框可知,该 IRS 是接收固定端(PorR = 1),支付浮动端(PorR = -1)。

名义本金

Notionali:第 i 期的名义本金。

名义本金大多情况下是不变的,如下图红框所示,两端名义本金都是 1 千万美元。

之所以用下标 i 来代表第 i 期的名义本金 Notionali,是因为有三种类型的掉期的本金会随期变化的:

  1. 减少型掉期(amortizing swap):名义本金越来越少,但通过一定规则生成
  2. 增加型掉期(accreting swap):名义本金越来越多,但通过一定规则生成
  3. 无规则掉期(irregular swap):名义本金变化无规律,在具体的交易证实(term sheet)会给出整套日期和本金结构表

本金减少型掉期也称为摊销掉期,常见的摊销规则有 Linear RateLinear AmountConstant

  • Linear Rate 是指本金每期按照一个设定的比率 (rate) 线性递减,摊销 i 期后的本金为:

Notionali = Notional × (1- i×rate)

  • Linear Amount 是指本金每期按照一个设定的常量 (amount) 递减,摊销 i 期后的本金为:

Notionali = Notional - i×amount

  • Constant 是指本金每期按照一个常数递减,末期本金为一个设定值 (c),假设摊销的总期数为 N,摊销 i 期后的本金为:

Notionali = Notional - (Notional - c) × i/N

本金增加型掉期中常见规则有 Coupon ReinvestmentReal Coupon Reinvestment。两者都是将每期某一端的现金流 (cashflow) 按照一个比率 (a) 折算后加入下期本金。摊销可以设定在固定或浮动的某一端,i 期的本金和 i-1 期的本金应有如下关系:

Notionali = Notionali-1 + |a×cashflowi|

两者的区别是计算利息的方法:

  • Coupon Reinvestment 第 i 期的利息不受部分摊入本金的影响。

Interesti = cashflowi

  • Real Coupon Reinvestment 第 i 期的利息受部分摊入本金的影响。

Interesti = (1 - a) × cashflowi

最后,如果对于跨货币掉期,那么两端的名义本金是按照不同货币来计价的。

总结:不管规则多复杂,最终可以得到每期的名义本金。

期限年限

YearFraci:第 i 期的期限年限

每一期都有起始日和终止日,两者之间的天数差是不变的,但是转成相应的年限有可能不一样,由日期计数惯例(Daycount Convention,DC)决定。

如下图红框所示,固定端的 DC 是 30I/360,而浮动端的 DC 是 ACT/360。

举个具体例子,起始日(date1)为 2019 年 11 月 30 日,终止日(date2)为 2020 年 5 月 31 日,它们的天数差为 183。

date1 = ql.Date(30, 11, 2019)
date2 = ql.Date(31, 5, 2020)
date2 - date1
183

ACT/360

该规则中,年限等于天数差除以 360,

tau = (date2 - date1) / 360

= 183/360 = 0.5083333

用 QuantLib 验证:

ql.Actual360().yearFraction(date1, date2)
0.5083333333333333

ACT/365

该规则中,年限等于天数差除以 365,

tau = (date2 - date1) / 365

= 183/365 = 0.5013699

用 QuantLib 验证:

ql.Actual365Fixed().yearFraction(date1, date2)
0.5013698630136987

ACT/ACT

该规则中,遇上闰年时,要分年计算年化天数。

tau = (2020.1.1 - date1) / 365

+ (date2 - 2020.1.1) / 366

= 32/365 + 151/366 = 0.50023954

用 QuantLib 验证:

ql.ActualActual().yearFraction(date1, date2)
0.5002395388876413

30/360

该规则中,设开始日为 YS.MS.DS(2019.11.30),结束日为 YE.ME.DE(2020.5.31)。先算虚拟的开始日 ds 和结束日 de:

我们有

ds = min(DS, 30) = 30

de = 30

带入年限计算公式得到

tau = (360*1+30*-6+0) / 360

= 180/360 = 0.5

用 QuantLib 验证:

ql.Thirty360().yearFraction(date1, date2)
0.5

其他的日期计数惯例总结于下图。

总结:计算期限年限只需起始日、终止日和 DC 三个参数。不同货币、固定浮动都有不同的 DC,比如 USD 固定端一般是 30/360,USD 浮动端一般是 ACT/360,GBP 固定和浮动端都是 ACT/365 等等。

折现因子

Discounti:第 i 期的折现因子

折现因子是从折现曲线(discount curve)中获取出来的。曲线上的期限称为标准期限(standard tenor),记作 {T1, T2, ..., Tn},而在估值时需要任何时点 t 上的折现因子。

从一组标准期限上的折现因子到任何时点上的折现因子的获取操作称为

  • 内插(interpolation)当 t 在 T1 和 Tn 之间
  • 外插(extrapolation)当 t 小于 T1 或大于 Tn

插值方式(interpolation method)有很多种,

  • 分段常数(piecewise constant)
  • 分段线性(piecewise linear)
  • 分段线性(piecewise loglinear)
  • 三次样条 (cubic spline)

等等。

折现曲线可以由折现因子(discount factor)、零息利率(zero rate)和远期利率(forward rate)等形式展现。这些都可以作为插值变量(interpolation variable)。

下图的曲线插值方法是 piecewise constant,而插值变量是 continuous forward rate。

总结:在折现曲线上设置好插值方法和插值变量后,就能得到任何时点上的折现因子。

等效利率

Ratei:第 i 期的等效利率

  • 对于 IRS 固定端,区间利率 Rate 取为固定利率
  • 对于 IRS 浮动端,区间利率 Rate 等于计算利率加上利差

一般可以把固定端看成浮动端的特殊情况,即浮动基准的计算利率为 0,利差为固定利率。

计算利率的获得要看利率重置的设置情况,以下分三种情况进行详细讨论:

  1. 利率重置频率 = 计息频率
  2. 利率重置频率 > 计息频率
  3. 利率重置频率 < 计息频率

1. 重置频率等于计息频率

这种情况最常见,利率重置频率与计息频率一致(如标准的 USD LIBOR,EUR EURIBOR,HKD HIBOR,CNY SHIBOR 利率掉期)。对每一期,计算利率 Rate 方法如下:

  • 确定重置日期:
    • 如果重置时间为提前(in advance),取该期的起始日作为重置日
    • 如果重置时间为之后(in arrears),取该期的结束日作为重置日
  • 确定发布利率的定盘日:由重置日减去重置延迟天数(工作日)得到定盘日,比如 USD 是 T-2,GBP 是 T-1 等等。
  • 如果定盘日小于等于计价日,取市场上历史利率数据作为 Rate;如果定盘日大于计价日,从折现曲线中计算一个远期利率作为 Rate。

IRS, IBS, XBS, IBOR in-arrears 都属于此种情况

2. 重置频率高于计息频率

利率重置频率高于计息频率。假定重置频率如 Week 或 Day,而计息频率为 Month,Quarter,Semiannual 或 Annual(如 OIS, FR007 和 RFR swap)。

这样在每一期中有一组利率序列,按重置计算方法将利率序列 Ri, (i=0,1,⋯,n−1) 整合为一个数,即为计算利率。常见的整合方法有简单平均(simple average)和复利(compounding)两种。

OIS 和 FR007 用后者整合,而 RFR swap 用两者整合。

OIS 和 RFR Swap 的重置频率是 Day,工作日规则为顺延(following),一般 Δτk 对应 1 个工作日(1BD)。以 CNY OIS 举例,即平时为 1 天,周末为 3 天,真遇上国庆长假可能是 7 天,生成日期序列的公式如下:

τk = τk-1 + 1BD

FR007 Swap 的重置频率是 Week,工作日规则为不调整(unadjusted),一般 Δτk 对应 7 个日历日(7D),这样最后一个重置区间可能会小于 7 天。,生成日期序列的公式如下:

τk = StartDate + k×7D

FR007, OIS, RFR Swap 都属于此种情况

3. 重置频率低于计息频率

利率重置频率低计息频率此种情况比较少见。假定重置频率低,如 annual,计息频率高如 Month,Quarter,Semiannual。

簿记这种交易时,可以直接将重置频率与计息频率设值,这样在几个计息区间将取到同一天的相同的利率。利率的计算和情况 1 的单利一样。所以这种情况与情况 1 的不同仅在基准利率的获取上。


最后一图胜千言。


本文分享自微信公众号 - 王的机器(MeanMachine1031),作者:王圣元

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-04-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 盘一盘 QuantLib 系列 7 - SOFR OIS/FR007 IRS

    想要得到本贴 Jupyter Notebook 的同学分享此贴,在本帖留个言,我便发给你链接。

    用户5753894
  • 盘一盘 QuantLib 系列 6 - IRS/TS/CCBS

    想要得到本贴 Jupyter Notebook 的同学分享此贴,在本帖留个言,我便发给你链接。

    用户5753894
  • 『曲线构建系列 1』单曲线方法

    估值金融产品需要折现其包含的现金流,这是我们就需要折现曲线。构建折现曲线是产品估值的必要条件。构建出一套完整而一致的曲线环境不是件容易的事,我们分三贴来把整个流...

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

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

    用户5753894
  • 估值调整 - 时间调整

    时间调整(Timing Adjustment)在以下情况产生:当一个市场变量 Y 在时点 T 观察到并用 Y(T) 计算支付函数,但支付发生在观察时点 T 后的...

    用户5753894
  • “工业听诊”中多声源事件检测与定位

    众所周知,基于领先的声音事件定位和检测技术,可以研发“声学照相机”和“工业听诊器”等产品,并在电力、水利、轨道交通、汽车制造等行业领域发挥效用,保证工作人员的安...

    用户7699929
  • 智能反射面辅助全双工双向通信的中断概率

    在这封信中,我们研究了智能反射面(IRS)辅助的全双工双向通信系统的中断概率,该系统的特点是克服长深度褪色造成的传输数据丢失。为此,我们首先推导了任意给定红外波...

    用户8818293
  • 详谈2018年比特币缴税之系列问题

    导读:上一期了解了读心术人工智能的相关介绍,今天我们来了解一下关于比特币缴税的相关内容(文末更多往期译文推荐) ? 对比特币来说,这是动荡的一年,现在是谈论税...

    灯塔大数据
  • 单细胞转录组分析揭示胚胎毛囊发育过程中的真皮、表皮细胞命运

    本文分析方法比较简单,分析对象主要是E14.5,E16.5,P0小鼠皮肤细胞。选取的时间比较有代表性,分别是E13.5(诱导期)、E16.5(器官生成)胎儿小鼠...

    生信技能树jimmy
  • 『曲线构建系列 2』多曲线方法 (基差)

    基差就是两种相似利率的差(本章只讨论 IBOR 利率),因此了解基差之前首先要知道 IBOR。

    用户5753894
  • 使用Tackle-test进行自动化单元测试——2

    测试生成需要几分钟的时间irs。默认情况下,该工具在初始测试序列生成上每类花费 10 秒。但是,如以下部分所述,由于额外的步骤,整体运行时间可能会更长。请注意,...

    施主-借个火
  • 自动化入侵响应的理想与现实

    面对各种各样的网络攻击,在防御上实现自动化入侵响应是企业安全自始至终的诉求,实际上,各种防护类、日志审计类等安全产品,最终目标还是为了对网络攻击做出合理的响应。...

    绿盟科技研究通讯
  • SOFR, So Far ... So Good?

    2012 年的 19 家银行串通起来操纵 LIBOR 的丑闻还历历在目。巴克莱支付了 4.5 亿美元罚款,瑞银用 15.3 亿美元终结操纵指控,苏格兰皇家银行用...

    用户5753894
  • 如何填写W-8 BEN表格?

    很多做外贸或是国外广告联盟的,可能会遇到要求填写W-8 BEN表格,小编也不例外,如今美国监管比以前严格了,这个东西经常要填写,小编收集了一些资料一并发出来给大...

    主机测评
  • 论文阅读11-----基于强化学习的推荐系统

    Abstract Reinforcement learning (RL) has recently been introduced to interactive...

    邵维奇
  • 小鼠毛发生长和休止期时皮肤中的分子学机制

    当你的才华还撑不起你的野心时,请潜下心来,脚踏实地,跟着我们慢慢进步。不知不觉在单细胞转录组领域做知识分析也快两年了,通过文献速递这个栏目很幸运聚集了一些小伙伴...

    生信技能树jimmy
  • 我们不雇佣数理逻辑不好的学生

    想象一下,如果 1ml 水价值 100 元,那么 1 瓶 500ml 的水就价值 5 万元;

    统计学家
  • CVPR2021|用于立体匹配的可学习双边网格

    高精度的实时立体匹配网络是时下研究的一个热点,它在自动驾驶、机器人导航和增强现实等领域中有着广泛的应用。虽然近年来对立体匹配网络的研究已经取得了显著的成果,但要...

    3D视觉工坊
  • 使用Tackle-test进行自动化单元测试——1

    Tackle-test 的核心是 Java 应用程序单元测试用例的自动生成器。它可以生成带有断言的测试,这使得该工具在现代化项目中特别有用,在这些项目中,应用程...

    施主-借个火

扫码关注云+社区

领取腾讯云代金券