本文有 4867 字,61 截屏
建议阅读 30 分钟
0
引言
本文是金融工程特别系列的第一篇
金融工程正规系列
注:该系列基于 Lyashenko A. 和 Mercurio F. 的论文 Looking Forward to Backward-Looking Rates。他俩在论文中提出了更为通用的 Forward Market Model (FMM),它可以同时处理后顾型的 RFR 复合利率和前瞻型的 IBOR。两名作者也因此被评选了 Quant of the Year 2020,他们都认为 FMM 才是定价 RFR 期权的正确模型,而且只需在现有的 LMM 方法上改进一点,并不需要过多的额外开发人力。
0
前言
ISDA 在2019 年9 月18 日发布的《Consultation on Final Parameters for Benchmark Fallback Adjustments》确定了
其中 IBOR 全称是 InterBank Offered Rate,被替代利率,RFR 全称是 Risk-Free Rate,替代利率。从上面 ISDA 文件摘抄出来下面一段话:
… overwhelming majority of respondents preferred the ‘compounded setting in arrears rate’ to address the difference in tenors and the ‘historical mean/median approach’ to address the difference in risk premia. ISDA
ISDA 统计出绝大部分参与方希望用一个后置式的复合利率来作为 RFR,而且用不同年限的 IBOR 和 RFR 的历史差异的均值或中位值作为 IBOR 停止后当天就要使用的基差。定义 IBOR 公布日和终止日为 Ta 和 Td,那么在终止日那天,我们有以下数学关系:
其中 X 是 ISDA 还未最终决定的一组参数,比如到底是用均值还是中位值来作为基差,而 l 代表历史数据的区间长度,目前可能选项是 5 年或 10 年。
利率通常是定义在计息区间(accrual period),起始日和终止日分别是区间的头和尾。举个具体例子,假设 USD LIBOR 3M 在 2021年12月20日终止,我们用 SOFR 3M 和 5 年历史基差来替代后LIBOR时代的第一天的 LIBOR。
上面完整的计算基差过程在下图中展示。
整个用 RFR 复合利率替换 IBOR 的过程看起来没有什么问题,但是细想,IBOR 是前瞻型(forward-looking)利率,在起始日就已经知道其值;而RFR 复合利率由于要不断累积 RFR 隔夜利率,因此是后顾型(backward-looking)利率,在终止日才能知道其值。两种利率对比的示意图如下。
由此可知两种概率从根本上范式都不相同。RFR 复合利率在付息日才能决定利息的大小,这从经济和操作角度给很多企业造成了麻烦。这样看来,向后看类型的利率不行,向前看类型的利率才行,我们需要动动脑筋,设计出一个向前看的 RFR 复合利率 R(T, T+τ),即在T 时点就知道 R(T, T+τ) 的大小了(像 IBOR 一样)。一个最简单的设计就是用 T 点 R(T, T+τ) 的期望值作为向前看的利率,即 ET[R(T,T+ τ)]。
整个 FMM-vs-LMM 的系列内容很新,文章写太长也不便于读者消化,因此我把它分四贴完成。整个系列目录如下(本帖细讲第一章):
目录
第一章 - 基础知识
1.1 延伸版 T-远期测度
1.2 向前看 vs 向后看的即期利率
1.3 向前看 vs 向后看的远期利率
1.4 FMM vs LMM 比较
第二章 - 远期市场模型 FMM
2.1 期限结构
2.2 风险中性测度下的 Fn(t)
2.3 即期测度下的 Fn(t)
2.4 Tk-远期测度下的 Fn(t)
第三章 - RFR 产品估值
3.1 RFR 期货
3.2 RFR 掉期
3.3 RFR 上下限
3.4 RFR 掉期期权
3.5 RFR 期限结构类产品
3.6 RFR 复杂产品
第四章 - FMM 模型校正
4.1 波动率建模
4.2 相关性建模
1
基础知识
1.1
延伸版 T-远期测度
再回到 T-远期测度的等价物 - 零息债 P(t,T),它有个条件是 t ≤ T。当 t > T 时,零息债已到期,按理说这个等价物已不存在了。但如果我们把 P(T,T),即零息债在到期日上的收益 1 投资到银行存款上,这样在任何一个大于 T 的时点 t,该「产品」的价格为
让我们把这个人造产品用
表示,其中 t 可以是任意值,我们有
显然
可以当成等价物,对应的测度符号用 Q~T 表示,期望符号用 E~T 表示。
1.2
向后看 vs 向前看的即期利率
复合利率
给定一组期限结构 0 £ T0 < T1 < … < TN,其中 τn= Tn – Tn-1。对于每个时间 t,定义索引函数 h(t) = min{n: Tn ≥ t},它表示离 t 最近但大于 t 的期限所对应的索引,易知 h(t) 是一个阶梯函数,如下图所示。
对于每个 n =1, 2, …, N,在 [Tn-1, Tn] 计息区间,我们将日单利(SOFR 1M 类)和日复利(SOFR 3M 类)都用连续复利来近似得到
证明过程如下。
向后看的即期利率
后置型利率(in-arrears rates)天生就有向后看的性质,因此我们只有等到计息期最后一天才能知道该利率的值。 R(Tn-1, Tn) 就是一个在 Tn 时向后看的即期利率。为了能一眼看出利率的向后看形式,我们在 R(Tn-1, Tn) 加一个向后的箭头 ←,用
来取代。注意通常符号上用箭头代表向量,但记住这里表达的不是这个意思。
定义一个产品叫做银行存款掉期(Bank Account Swaplet, BAS),在 Tn 时点用 K 来交换银行存款在 [Tn-1, Tn] 区间的收益,如下图所示,
在 Tn-1 时点,BAS 的估值公式为
向前看的即期利率
现在可以定义一个向前看的利率,同样的为了能一眼看出利率的向前看形式,我们用一个向前的箭头 →,用
来表示。它是使得 VBAS(Tn-1) = 0 的 K 值,因此可解得
下图总结了向后看和向前看的即期利率
和
。前者是直到 Tn 才定盘,而后者在 Tn-1 就开始设定了。
1.3
向后看 vs 向前看的远期利率
向后看的远期利率
定义完即期利率,接下来就要定义远期利率了。想像个产品叫做向后看利率掉期(Backward-Looking Rate Swaplet, BLRS)在 Tn 时点用 K 来交换
,如下图,
在 t 时点,BLRS的估值公式为
现在可以定义一个向后看的远期利率,用符号
来表示。该利率就是使得 VBLRS(t) = 0 时的 K 值,因此可解得
将 t = Tn-1 带入上式,我们发现在 Tn-1 这个时点,向前看的即期利率
等于向后看的远期利率
。
而且我们可以进一步推出
的表达式
注意
是一个单利付息的(和 IBOR 的范式相同)向后看(和 IBOR 方式不同)的远期利率,它的性质如下:
当 Tn-1 < t < Tn,
一部分已经在 [Tn-1, t] 被定盘了,还有一部分在 [t, Tn] 还在累积 r(s),其表达式为
向前看的远期利率
想像个产品叫做向前看利率掉期(Forward-Looking Rate Swaplet, FLRS)在 Tn 时点用 K 来交换
,如下图
在 t 时点,FLRS 的估值公式为
现在可以定义一个向前看的利率,用符号
来表示,FL 是 Forward-Looking 的缩写。该利率就是使得 VFLRS(t) = 0 时的 K 值,因此可解得
进一步推出
的表达式,当 t ≤Tn-1 时,向前看的远期利率
等于向后看的远期利率
。
当 t > Tn-1 时,
已经在 Tn-1 被定盘而不会改变了,其值为
下图总结了向后看和向前看的远期利率
和
。前者是直到 Tn 才定盘,而后者在 Tn-1 就开始设定了。
鞅过程 SDE 的漂移项为零,因此 Fn(t) 的 SDE 用以下方式来描述,
其中 σn(t) 是波动率,而 gn(t) 是缩放因子。对于 gn(t),我们可用分段函数形式来区分不同时段中远期利率的特点
一部分已经在 [Tn-1, t] 被定盘,一部分在 [t, Tn] 还未被定盘,但随着 t 靠近 Tn,未定盘的部分越来越小,因此波动率也就越小。
为了使函数 gn(t) 连续,我们需要施加条件 gn(Tn-1) = 1 和 gn(Tn) = 0,再假设 gn(t) 在区间 [Tn-1, Tn] 成单调线性递减,我们设计
至此我们已讨论完在任意 t 时的远期利率 Fn(t) 和零息债
,它们可看成是传统的远期利率和零息债的延伸版。
1.4
LMM vs FMM 比较
和 LMM 不同的是,FMM 模拟的远期利率适用于任何 t。在具体 [Tn-1, Tn] 区间中,两者的区别在于
下面我们来模拟一下 LMM 和 FMM 框架下的远期利率。假设 Tn-1 = 9M, Tn = 1Y, Fn(0) = 2.5% 和 σn = 30%。对于 LMM,t Î [0,Tn-1),对于 FMM,t Î [0, Tn),
我尝试着用 cufflinks 来画图,效果很好。Python 代码如下,首先引入必要的几个包。
import numpy as np
import pandas as pd
import cufflinks as cf
np.random.seed(1031)
用上面设定好的初始值,选取 1000 个时点模拟 5 条利率走势路径。
(F0, sigma, T, tau, Nsim, Nt)
= (0.025, 0.3, 0.75, 0.25, 5, 1000)
t = np.linspace(0,T+2*tau,Nt)
dt = np.diff(t)
z = np.random.randn(Nsim, Nt-1)
g = np.minimum( np.maximum(T+tau-t, 0)/tau, 1 )[:-1]
A = sigma*g*(z*np.sqrt(dt)) - 0.5*(sigma*g)**2*dt
lnF0 = np.tile(np.log(F0),(Nsim,1))
lnF = lnF0 + np.cumsum(A, axis=1)
lnF = np.hstack( (lnF0, lnF) )
F = np.exp(lnF) * 10
df = pd.DataFrame(F.T, index=t)
用 cufflinks 里面的 iplot 函数直接对 DataFrame df 画图
cf.go_offline()
画出的图如下:
其实 cufflinks 画出的图是动图,上图只是它静止的样子。
五条模拟利率都从 2.5% 开始,看横轴从0 到 0.75 (0 到 9 个月)利率波动较大,从 0.75 到 1(9 个月到 1 年)波动慢慢减小,从 1 之后(1 年之后)波动为零。
最后稍微总结一下 LMM 和 FMM 下用的测度、符号、计价物等等,不懂也无所谓,后面还有三帖呢。
下帖来推导 Fn(t) 在各种测度下的 SDE,只需用到我们之前讲过的「测度转换」和「漂移项转换」的技巧。