本文含 6707 字,52 图表截屏建议阅读 34 分钟
本篇是金融工程系列的第七篇:
- 弄清量化金融工程十大话题-上
- 弄清量化金融工程十大话题-下
- 金融工程高度概览
- 日期生成
- 变量计算
- 模型校正
- 曲线构建 - 单曲线方法
- 曲线构建 - 多曲线方法 (基差)
- 曲线构建 - 多曲线方法 (抵押品)
- 产品估值理论
- 产品估值 - 解析法和数值积分法 (CF)
- 产品估值 - 偏微分方程有限差分法 (PDE-FD)
- 产品估值 - 蒙特卡洛模拟法 (MC)
- 风险计量 - 敏感度 (Greeks & Sensitivities)
- 风险计量 - 风险价值 (VaR)
- 风险计量 - 价值调整 (XVA)
估值金融产品需要折现其包含的现金流,这是我们就需要折现曲线。构建折现曲线是产品估值的必要条件。构建出一套完整而一致的曲线环境不是件容易的事,我们分三贴来把整个流程说明白。先看点故事。
曲线环境的发展大致经历了两个阶段:
- 单曲线环境(2008 年之前)
- 多曲线环境(2008 年之后)
在 2008 年金融危机之前:
- 在衍生品交易时双方不需要放抵押品,LIBOR 被公认是无风险利率,因为。LIBOR 曲线既可以用来折现现金流作为折现曲线(discount curve),又可以用来计算远期利率作为指标曲线(index curve)
- 利率基差(interest rate basis spread)非常小
- 如果忽略它,那么指标曲线只有一条
- 如果不忽略它,那么指标曲线定义为基准曲线(benchmark curve),此外还有若干条指标曲线(根据利率基差推出)
- 跨货币基差(cross-currency basis spread)非常小
- 如果忽略它,不需要做任何事情
- 如果不忽略它,需要推出非美元那端的折现曲线,而该曲线用在外汇产品定价上
在 2008 年金融危机之后:
- 在衍生品交易时双方都要放抵押品,LIBOR 不再是无风险利率。因此隔夜利率互换 (overnight index swap, OIS) 曲线用来折现现金流作为折现曲线,而 LIBOR 只能用来计算远期利率作为指标曲线。
- 对利率基差和跨货币基差的处理方式和金融危机之前一样
由此可见,「单曲线」指的就是折现曲线和基准指标曲线是相同条线;而「多曲线」指的就是折现曲线和基准指标曲线是不同曲线。而从这两个曲线环境中,生成一系列曲线的过程叫做拔靴 (Bootstrapping)。具体过程就是
- 选取若干个市场流动性最强的产品,比如短期是存款和利率期货,中期是远期利率协议,长期是利率掉期。
- 按照到期日长短排序,从短到长一个个推出市场产品对应的折现因子或零息利率。
核心思想就是有三种构建曲线框架,由易到难:
- 单曲线环境 (忽略基差和抵押)
- 多曲线环境 (只考虑基差)
- 多曲线环境 (考虑基差和抵押)
这三种情况分三贴讲明,显然第三种情况反映的是实际状况,前二种已经不适用了。但是我们总要从一个点切入,虽然过时,但是背后的金融产品和数学原理并没有过时。只有理解了简单的前二种情况,理解实际的第三种情况会不费吹灰之力。如果你同意我的逻辑,那么我们开始吧。
本帖目录如下:
目录第一章 - 曲线基础知识
1.1 曲线定义
1.2 表现形式
1.3 插值方法和变量
1.4 拔靴方法
1.5 单曲线构建框架
第二章 - 单货币曲线
2.1 市场报价
2.2 方法论
第三章 - 多货币曲线
3.1 市场报价
3.2 方法论
总结
![]()
1曲线基础知识
1.1
曲线定义
放在金融背景下,曲线是一组金融产品的市场报价(market quote)或收益率(yield)与其到期期限之间一一对应的关系。
- 前者包含着市场信息,称为平价曲线(par curve)
- 后者用于折现现金流,称为收益曲线(yield curve)
而曲线构建就是如何将平价曲线通过拔靴(bootstrap)技巧转化成收益曲线的过程。两类曲线的到期期限都是一样的,用T = {T[sub]1[/sub], T[sub]2[/sub], …, T[sub]n[/sub]} 来表示。
![]()
上图比较了两类曲线的特征:
- 平价曲线严格来说是一群离散的点,因为市场上不可能在连续期限上都有报价,因此我用虚线来表示平价曲线。
- 收益曲线是用于折现各个期限的现金流的,因此需要它是连续的,这时需要设定一个内插方法将离散的收益率给连起来,因此我用实线来表示收益曲线。
此外根据使用者不同喜好,收益曲线可以用折现因子(discounting factor)、零息利率(zero-couponrate)或者即时远期利率曲线(instantaneous forward rate curve)表现出来。
![]()
接下来我们来了解构建曲线时的三要素
- 曲线的表现形式(representation)
- 曲线的插值方法和变量(interpolation method and variable)
- 曲线的拔靴方法(bootstrapping method)
1.2
表现形式
收益曲线有多种表现形式,包括
![]()
通常这三种表现形式可以互相转化,它们之间关系是:
![]()
只要得到一种表现形式,剩下两种表现形式很容易就能推导出来。
1.3
插值方法和变量
插值包括内插(interpolation)和外插(extrapolation)。
曲线内插方法包括线性和三次条等,内插变量包括折现因子 P,对数折现因子 lnP 和零息利率 r 等。
![]()
到底哪种内插方法,插在哪个变量上是最好的呢?
- 线性和对数线性内插方法插出来的值只和它的两个邻点值有关系,但是整条曲线不平滑;而三次条内插方法插出来的值和所有点上的值有关系,但是整条曲线平滑。通常如果没有对平滑有过高要求,用线性和对数线性内插方法。
- 在「折现因子上做对数线性内插」和在「对数折现因子上做线性内插」是等价的。
- 在「零息利率上做线性内插」有时会产生负的即时远期利率。
- 在「对数折现因子上做线性内插」和在「即时远期利率上做平内插」是等价的。当 t 在 [t[sub]i-1[/sub],t[sub]i[/sub]] 之间
![]()
当即时远期利率是常数而且大于零时,这是一个很好的曲线性质。通常我们会选择在「对数折现因子上做线性内插」。
外插比内插容易多了,通常是在零息利率 r 上做平外插。
具体关于插值的技术可参考〖弄清量化金融工程十大话题-上〗一贴。
1.4
拔靴方法
曲线拔靴方法有精准拟合(exact-fit)和最佳拟合(best-fit)
- 前者构建的曲线可以精准重定价市场报价产品
- 后者构建的曲线只能最小化重定价误差
之后为了便于讲解,我们都是在折现因子上做线性内插,用精准拟合的方法构建折现因子曲线。
1.5
单曲线构建框架
该构建框架只需两个步骤就可以生成所有曲线:
![]()
在单曲线环境下,构建曲线分两步:
- 在各国利率市场中,收集存款、利率期货、远期利率协议和利率掉期的报价,构建出为各国货币利率产品的折现曲线。
![]()
- 在外汇市场中,收集第一步构建出来的 USD 折现曲线,和 USD 对其他货币的即期汇率和掉期点,构建出其他货币的用于外汇产品的折现曲线。
![]()
第二章分析第一张图(困难),第三章分析第二章图 (容易)。
2单货币曲线
2.1
市场报价
存款报价在即期日 t[sub]sp[/sub] 时存放 N,期限为 τ,那在到期日 T 时可获得 N(1 + τL(t[sub]sp[/sub])),其中 L(t[sub]sp[/sub]) = L(t[sub]sp[/sub]; t[sub]sp[/sub], T) 是存款 (Certificate of Deposit, CD)的相应浮动利率,也称为即期 LIBOR(spot LIBOR)。
![]()
即期日时流出的现金流 N 和到期日时流入的现金流 N(1 + τL(t[sub]sp[/sub])) 是等价的,由于两个现金流发生在不同时点,我们需要折现因子把到期日的现金流折现到即期日。
![]()
在每一个估值日,市场上可以观察到不同期限 T 的即期 LIBOR,统称为市场报价(market quote)。比如,用于构建 USD LIBOR 曲线的市场报价如下表(第三行到第七行):
![]()
前两个 O/N(Over-Night)和 T/N(Tomorrow-Next)存款比较特殊:
- 对 O/N 利率而言,其起始日是今天 (假设 1-Aug-2012),而到期日是今天下 1 个工作日(即 2-Aug-2012)。因此,上表中的 0.15% 利率的有效期是从 1-Aug-2012 至 2-Aug-2012。
- 对 T/N 利率而言,其起始日是 O/N(即 2-Aug-2012),而到期日是 O/N 下 1 个工作日(即 3-Aug-2012)。因此,上表中的 0.17% 利率的有效期是从 2-Aug-2012 至 3-Aug-2012。
下图左边和右边分别画出 O/N 和 T/N 存款的现金流。
![]()
![]()
其他存款的起始日都是即期日(通常也是 T/N),而到期日是即期日上加上相应的期限,比如 1W 或 1M。
知识点 - 各种惯例即期惯例(Spot Convention)
不同的金融市场的即期日也不同:
- 大多数都是两个工作日(2BD)比如 USD, EUR, JPY 等
- 部分是零个工作日(0BD)比如 CNY, GBP, HKD 等
- 极少是一个工作日(1BD)比如 MXN
日期计数惯例(Day Count Convention)
不同的金融市场的日期计数惯例也不同:
- 一部分是 Act/360 比如 USD, EUR, JPY 等
- 一部分是 Act/365 比如 CNY, GBP, HKD 等
- 只有 BRL 一个是 Bus/252
工作日惯例(Business Date Convention)
- 期限小于 1M 的存款用顺延(following)并考虑月终(end of month)惯例来生成到期日
- 大于 1M 的存款用修正顺延(modified following)不考虑月终惯例来生成到期日
远期利率协议报价存款可以帮助市场参与者锁定从即时开始一段时期的利率,如果他们想锁定从未来开始一段时期的利率呢?用远期利率协议(Forward Rate Agreement, FRA)。
![]()
FRA 的支付发生在起始日,不是到期日。在折现曲线和远期曲线都是同一条时,那么 1/(1+τL(T[sub]s[/sub])) 可看成是从起始日到到期日的折现因子,因此我们将一下两个现金流做等价转化。
![]()
在 T[sub]e [/sub]远期测度下 L(T[sub]s[/sub]) 是个鞅过程,那么计算 FRA 的现值就很容易了。
![]()
通常交易双方在买卖 FRA 时没有现金流产生,因此 FRA 期初价值为 0。
![]()
其中 L(t) 是 t 点观察到的从 T[sub]0 [/sub]到 T[sub]n [/sub]的远期利率(forward rate)
因此在设计 FRA 合约时,这个固定利率 K 要等于 L(t),而这个 K 也是市场对 FRA 的报价。
![]()
有了报价 K,我们计算出从 T[sub]s [/sub]到 T[sub]e [/sub]的远期折现因子,并将两个即期折现因子 P(t[sub]sp[/sub],T[sub]s[/sub]) 和 P(t[sub]sp[/sub], T[sub]e[/sub]) 联系起来。
![]()
利率期货报价通常而言,和 IBOR挂钩利率期货(Interest Rate Futures, IRF)在短期限是流动性最高的产品。它们有相似的结算机制,只是不同于本金大小和交易地点。
![]()
IRF 包含 1 个月和 3 个月 IBOR,分别记为 1M-IRF 和 3M-IRF
- 1M-IRF 的起始日是每个月的第 3 个星期三,结束日是起始日往后加 1 个月
- 3M-IRF 的起始日是三、六、九和十二月的第 3 个星期三,结束日是起始日往后加 3 个月
3M-IRF 的流动性比 1M-IRF 的要好,因此它们的报价是构建曲线需要的。3M-IRF 报价一直到 10 年(有 40 个)。
期货是每天结算的,这一点远期不同,可以推出期货利率通常和远期利率之间有个凸性调整(Conveixty Adjustment, CA)。感兴趣的读者可以看下面证明,不感兴趣可跳过。
分别定义 L 和 F 是远期利率和期货利率
![]()
在 t = 0 时,两者之间的差异是
![]()
具体的 CA 公式需要用到利率模型,比如 Black 模型,Hull-White 模型或者 HJM 模型,推导比较复杂,重要的是 CA 和利率波动率的平方同量纲,因此在大多情况都可以忽略不计,我们可把期货利率当成远期利率用。
![]()
下面展示了市场对 IRF 的报价,它们通常是价格,用 100 – P 即得到利率 (%),比如下表第一行的期货利率为 100 – 99.85 = 0.15, 即 0.15%。
![]()
利率掉期报价利率掉期(interest rate swap, IRS)是指交易双方以一定的名义本金为基础,将该本金产生的一种利率计算的利息收入(支出)与另一种利率计算的利息收入(支出)。交换的只是不同特征的利息,没有实质本金的互换。
利率掉期可以有多种形式,最常见的利率掉期是在固定利率与浮动利率 LIBOR 之间进行互换。
![]()
每一期的现金流的现值为
![]()
将所有 V[sub]i[/sub] 累加得到 IRS 的现值表达式
![]()
通常交易双方在买卖 IRS 时没有现金流产生,因此 IRS 期初价值为 0。
![]()
其中
- S[sub]0,n[/sub](t) = t 点观察到的从 T[sub]0 [/sub]到 T[sub]n [/sub]的远期掉期利率(forward swap rate)
- A(t) = t 点时的年金(annuity)
因此在设计 IRS 合约时,这个固定利率 K 要等于 S[sub]0,n[/sub](t),而这个 K 也是市场对 IRS 的报价。
![]()
有了报价 K,我们可以把到期日 T[sub]n [/sub]时的折现因子 P(t[sub]sp[/sub], T[sub]n[/sub]) 用之前的所有折现因子 P(t[sub]sp[/sub],T[sub]0[/sub]), …, P(t[sub]sp[/sub], T[sub]n-1[/sub]) 表示出来
![]()
2.2
方法论
数学公式定义一个 M 维的折现因子向量P,N 维的市场报价向量V
![]()
根据前面 CD, FRA, IRF 和 IRS 的公式,我们都可以把它们写成
![]()
其中 c[sub]i,j[/sub][sup] [/sup]是一个 N×M 的矩阵,包含了所有市场产品的现金流。C 矩阵大概是以下样子(× 代表非零元素)
![]()
从矩阵样式来看,我们大概猜得出
- 前两行是存款
- 接着两行是远期利率协议或利率期货
- 最后三行是利率掉期
要构建曲线,我们只用一下矩阵方程 V =C·P 计算出折现因子就行了。
上面的方法是 Piterbarg 在他经典书籍《Interest Rate Modeling Volumes 1》第 6.1 小节提到。但我细细研究了一下,矩阵C 和他列出的还有些区别,特别是考虑到任何时点的折现因子用两个相邻标准到期期限的折现因子线性表示时,我推出来的C 没有那么他列出的那么规则,但是大致样式差不多。
真实案例下面我们看来一个真实例子,假设市场上有 4 个 CD,2 个 FRA 和 1 个 IRS,起始日、终止日和报价都已在下表给出。
![]()
市场有 7 个报价,因此曲线有 7 个折现因子,每个折现因子都对应一个终止日,如下公式
![]()
根据前面 CD, FRA 和 IRS 的公式,我们把它们实例化得到 7 个方程。
存款(CD)![]()
远期利率协议(FRA)![]()
利率掉期(IRS)![]()
将以上 7 个灰色高亮的方程整理成矩阵形式得到
![]()
这样折现因子向量 P 可以轻易的解出来,曲线(折现因子为表现形式)也构建完毕。
3多货币曲线
3.1
市场报价
外汇即期报价通过外汇即期 (FX spot),两个交易对手同意将一笔外币金额和一笔本币金额兑换,兑换的汇率是即期汇率,而结算日通常在交易日后两个工作日(取决于货币对)。
下表显示市场上 USD 对 10 个货币即期汇率的日终报价。
![]()
外汇掉期点报价市场上的外汇掉期点(FX swap points, FXSP)是根据各货币对和期限报价的,它们用于构建外汇远期利率(FX forward rate)曲线。下表显示市场上对 USDJPY 的掉期点报价。
![]()
这里前两个 O/N 和 T/N 和存款里面的惯例相同,假设今天是 1-Aug-2012
- O/N 的 FXSP 有效期从 1-Aug-2012 至 2-Aug-2012
- T/N 的 FXSP 有效期从 2-Aug-2012 至 3-Aug-2012
- 其他 FXSP 都是从 USDJPY 的即期日(3-Aug-2012)开始生效
市场上每天看到的是即期汇率(spot FX rate)而不是当日汇率(today FX rate),当日汇率需要用即期汇率、O/N FXSP 和 T/N FXSP 计算出来,公式如下:
![]()
其中
- S(0) = 今天汇率
- S(t[sub]sp[/sub]) = 即期汇率
- sp(T) = 期限 T 的外汇掉期点
- f = 掉期点因子(swap point factor)常数,对于 USDJPY 是 100
期限 T的远期利率是根据即期汇率和期限T 的外汇掉期点计算的,公式如下:
![]()
3.2
方法论
根据利率平价(interest rate parity)公式
![]()
其中
- S[sup]USDHKD[/sup](0) = USD/HKD 的当日汇率
- F[sup]USDHKD[/sup](0, T) = T 时点的 USD/HKD 远期汇率
- P[sup]USD[/sup](0, T) = 由 USD 折现曲线在 T 点插值得到
计算出的 P[sup]HKD[/sup](0, T) 可构成 HKD 外汇曲线(FX curve),它和从 HKD 市场上构建出来的 HKD 折现曲线不一样。
HKD 外汇曲线是用于折现外汇产品中 HKD 现金流,而 HKD 折现曲线是用于折现 HKD 利率产品的现金流。
注意 USD 是老大,所有其他的货币的外汇曲线都是由 USD 折现曲线和外汇掉期点得到的。前面举了 USDHKD 的例子,再看个 EURUSD 的例子,根据利率平价公式
![]()
计算出的 P[sup]EUR[/sup](0, T) 可构成 EUR 外汇曲线。
4总结
累了,不想敲字了,但 wdnmd 画图花了我更多时间。无所谓,颜值高更好懂就值了。
![]()
现在的状况是,每个国家都有自己的利率市场以及相应的折现曲线,除美国之外,其他国家的外汇市场也有相应的折现曲线。
USD LIBOR 3M 是 USD 折现曲线,当然也可以计算 3M-LIBOR,那么 1M-LIBOR 和 6M-LIBOR 怎么计算呢?也是用 LIBOR 3M 这条曲线?(Hint: 利率基差)
EURUSD 的外汇掉期点 1Y 之后就不活跃了,那么 1Y 之后的 EUR 外汇曲线做折现还合适吗?(Hint:跨货币基差)
带着这两个问题,我们下帖再见!
Stay Tuned!
![]()
![]()
王的机器机器学习、金融工程、量化投资的干货营;快乐硬核的终生学习者。
|
|