前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利率掉期 (IRS) 中的超级细节

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

作者头像
用户5753894
发布2021-04-21 15:58:44
3.2K0
发布2021-04-21 15:58:44
举报
文章被收录于专栏:王的机器王的机器

最近有读者问人民币 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。

代码语言:javascript
复制
date1 = ql.Date(30, 11, 2019)
date2 = ql.Date(31, 5, 2020)
date2 - date1
代码语言:javascript
复制
183

ACT/360

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

tau = (date2 - date1) / 360

= 183/360 = 0.5083333

用 QuantLib 验证:

代码语言:javascript
复制
ql.Actual360().yearFraction(date1, date2)
代码语言:javascript
复制
0.5083333333333333

ACT/365

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

tau = (date2 - date1) / 365

= 183/365 = 0.5013699

用 QuantLib 验证:

代码语言:javascript
复制
ql.Actual365Fixed().yearFraction(date1, date2)
代码语言:javascript
复制
0.5013698630136987

ACT/ACT

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

tau = (2020.1.1 - date1) / 365

+ (date2 - 2020.1.1) / 366

= 32/365 + 151/366 = 0.50023954

用 QuantLib 验证:

代码语言:javascript
复制
ql.ActualActual().yearFraction(date1, date2)
代码语言:javascript
复制
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 验证:

代码语言:javascript
复制
ql.Thirty360().yearFraction(date1, date2)
代码语言:javascript
复制
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 的不同仅在基准利率的获取上。


最后一图胜千言。


本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 王的机器 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档