第 32 章 HJM、LMM 与多条零息曲线
第 31 章的短期利率模型容易实现,谨慎使用时能让大多数非标准利率衍生品的定价与活跃交易工具(利率上限、欧式互换期权、欧式债券期权)保持一致。但它们有两个局限:
- 多数只有一个因子,所有利率在短时间内被同一个随机冲击驱动;
- 不能自由选择波动率结构。让 \(a\) 和 \(\sigma\) 随时间变化可以拟合今天的波动率,但代价是波动率结构变成非平稳的(第 31.8 节)。
本章介绍两个可以自由设定波动率环境、可以多因子的一般框架:Heath–Jarrow–Morton(HJM)模型和 LIBOR 市场模型(LMM)。然后讨论 2008 年之后的现实问题:OIS 贴现下如何同时处理两条(或更多)零息曲线。最后介绍美国机构抵押支持证券(agency MBS)市场,它是这些模型最典型的应用对象。
学习目标
- 从零息债的风险中性过程推导 HJM 漂移条件,理解"风险中性下远期利率的漂移完全由其波动率决定"。
- 解释 HJM 一般为非马尔可夫的原因,以及 Ho–Lee、Hull–White 为什么是可以用重合树表示的特例。
- 写出 LMM 在远期测度和滚动远期测度下的过程,会用冻结漂移的离散格式编写蒙特卡洛模拟。
- 会从 caplet 波动率剥离 \(\Lambda_i\),用 PCA 把波动率拆分到多个因子;理解为什么普通上限与因子数无关,而棘轮、黏性、弹性上限与因子数有关。
- 说明 OIS 贴现下远期 LIBOR 的定义变化,以及多曲线联合建模的常用做法。
- 理解机构 MBS 的提前还款风险、CMO 分档、IO/PO 与期权调整利差(OAS)。
读前导读
这一章在解决什么问题
第 31 章只对短期利率建模,整条曲线由它推出来。缺点是你没法直接控制"5 年远期利率的波动率是多少"、"2 年和 10 年利率的相关性是多少",这些都由少数几个参数间接决定。本章换一个思路:不再只对短期利率建模,而是直接对整条远期利率曲线上的每一点建模。
打个比方:第 31 章像是只建模"隔夜利率",再推算出整条收益率曲线怎么动;本章像是直接给收益率曲线上的每一个关键期限(1 年、2 年……10 年的远期利率)各自设定波动率和相互之间的相关性,然后让它们一起随机运动。
两个框架:
- HJM:对连续的"瞬时远期利率曲线"建模。最重要的结论是:在风险中性世界中,远期利率的漂移不能随意设定,它由波动率唯一决定。这和"股票在风险中性世界中漂移必须等于 \(r\)"是同一个无套利逻辑。
- LMM:对市场上真实交易的离散远期利率(如 3 个月 LIBOR 的各期远期)建模。它和第 29 章的 Black caplet 公式天然一致,是工业界给复杂利率产品定价的主力模型。
然后两个"现实问题":2008 年后用 OIS 曲线贴现、用 LIBOR(现在是 SOFR 等)曲线计算现金流,两条曲线怎么协调;以及美国机构 MBS,你在 CFA 里学过提前还款风险、CMO 分档、负凸性和 OAS,本章说明为什么它们需要这类模型。
需要先想起来的数学
1. 伊藤引理与 \(\ln P\)。 \(dP/P=r\,dt+v\,dz\) 时,\(d\ln P=(r-v^2/2)dt+v\,dz\)。32.1 节的整个推导就是"对两只债券的 \(\ln P\) 求差"。
2. 导数作为差商的极限。 \(\lim_{\Delta T\to0}\frac{g(T+\Delta T)-g(T)}{\Delta T}=g'(T)\)。HJM 从离散远期利率 \(f(t,T_1,T_2)\) 过渡到瞬时远期利率 \(F(t,T)\) 就靠这一步,和"远期利率 = 零息利率曲线的斜率"同一个道理。见 第 00 册第 02 章 导数与泰勒展开。
3. 积分的基本定理。 \(v(t,T)=v(t,t)+\int_t^Tv_\tau\,d\tau\),而 \(v(t,t)=0\)。即"一个函数等于起点值加上导数的累积"。见 第 00 册第 03 章 积分。
4. 方差随时间累加。 独立的各段时间里,方差相加:总方差 \(=\sum(\text{各段波动率}^2\times\text{时长})\)。这和"由 1 年、2 年即期利率推出 1 年后 1 年远期利率"的思路一样,32.2 节用它从 caplet 波动率剥离出各期的远期波动率。
5. 主成分分析(PCA)。 把一组高度相关的变量(各期限利率的变动)分解成少数几个互不相关的"因子":水平、斜率、曲率。数学上是协方差矩阵的特征值分解。见 第 00 册第 06 章 线性代数速成 的特征值与协方差矩阵部分。
怎么读这一章
32.1 HJM:重点看 (32.3) 的推导和 HJM 漂移条件 (32.5) 的含义;"非马尔可夫"只需理解为什么不能建重合树。32.2 LMM:必读 (32.7)(与 Black 一致)、滚动远期测度的含义、波动率剥离(例 32.1)、"普通上限与因子数无关、奇异上限与因子数有关";(32.10) 的推导和互换期权解析近似 (32.17)–(32.19) 第一次可以只看结论。32.3 多曲线:读懂"OIS 贴现下要用 \(F_{OD}\)"这一个要点即可。32.4 MBS:结合 CFA 的知识快速浏览,重点是"为什么必须用蒙特卡洛"。
32.1 Heath–Jarrow–Morton 模型
记号
- \(P(t,T)\):\(t\) 时到期日为 \(T\) 的零息债价格;
- \(\Omega_t\):决定 \(t\) 时债券波动率的过去和当前利率、债券价格的集合;
- \(v(t,T,\Omega_t)\):\(P(t,T)\) 的波动率;
- \(f(t,T_1,T_2)\):\(t\) 时看到的 \(T_1\) 到 \(T_2\) 的远期利率;
- \(F(t,T)\):\(t\) 时看到的期限为 \(T\) 的瞬时远期利率;
- \(r(t)\):短期利率;\(dz(t)\):驱动期限结构的维纳过程。
从零息债过程到远期利率过程
先考虑单因子、传统风险中性世界。零息债是无收益的交易资产,风险中性下收益率为 \(r\):
\(v\) 可以是过去和当前利率、债券价格的任意"良好"函数。唯一的硬约束是:债券到期时价格波动率降为零,\(v(t,t,\Omega_t)=0\)。(原书脚注:这等价于所有贴现债在任何时刻的漂移有限;否则可能需要无穷大的漂移才能保证到期价格等于面值。)
由式 (4.5),远期利率与零息债价格的关系是
由 Itô 引理,\(d\ln P(t,T_i)=[r-v(t,T_i,\Omega_t)^2/2]dt+v(t,T_i,\Omega_t)dz\)。代入 (32.2),\(r\) 项相消:
注意:风险中性世界中 \(f\) 的过程只取决于 \(v\)。它与 \(r\) 和 \(P\) 的关系是间接的——只有当 \(v\) 本身依赖 \(r\) 和 \(P\) 时才有关系。
推导拆解:(32.2) 本身就是远期利率的定义:连续复利下 \(P(t,T_2)=P(t,T_1)e^{-f(T_2-T_1)}\),取对数整理即得。 对两只债券各用伊藤引理(导读第 1 项)后,\(d\ln P(t,T_1)-d\ln P(t,T_2)\) 中两个 \(r\,dt\) 正好相消,因为两只债券在风险中性世界中都以 \(r\) 增长。剩下:漂移 \(=-\tfrac12v_1^2+\tfrac12v_2^2\),随机项 \(=(v_1-v_2)dz\),再除以 \(T_2-T_1\),即 (32.3)。 为什么这很重要?短期利率 \(r\) 是随机的、难以观察的,而它恰好从远期利率的方程里消失了。所以只要给出各期债券的波动率,就能写出远期利率的全部动态,不需要知道短期利率的过程。
令 \(T_1=T\)、\(T_2=T+\Delta T\),取 \(\Delta T\to0\):\(f\to F(t,T)\),\(dz\) 的系数变为 \(-v_T\)(\(v\) 对 \(T\) 的偏导),\(dt\) 的系数变为 \(\tfrac12\partial[v^2]/\partial T=vv_T\)。于是
一旦设定 \(v\),所有瞬时远期利率的风险中性过程就确定了。
HJM 漂移条件
由 \(v(t,t,\Omega_t)=0\),有 \(v(t,T,\Omega_t)=\int_t^Tv_\tau(t,\tau,\Omega_t)d\tau\)。若把瞬时远期利率的过程写成 \(dF=m\,dt+s\,dz\),比较 (32.4) 得 \(s=-v_T\),进而
这就是 HJM 漂移条件。它的含义是本章最重要的一句话:在风险中性世界中,瞬时远期利率的漂移不能自由选择,它完全由波动率决定。建模者唯一的自由是设定波动率函数 \(s(t,T,\Omega_t)\)。
推导拆解:比较 \(dz\) 系数得 \(s=-v_T\)。由于 \(v(t,t)=0\),\(v(t,T)=\int_t^Tv_\tau\,d\tau=-\int_t^Ts\,d\tau\)。代入漂移 \(m=v\cdot v_T=\big(-\int_t^Ts\,d\tau\big)(-s)=s\int_t^Ts\,d\tau\)。两个负号相乘为正。 白话解释:为什么漂移被"锁死"?在 BSM 里,风险中性世界中股票的漂移只能是 \(r\),否则就有套利。这里的道理一样:今天的收益率曲线已经给出了所有零息债的价格,如果你随便设定远期利率的漂移,模型算出的债券价格就会与市场不一致,就存在套利。HJM 条件就是"不能有套利"翻译成远期利率语言后的结果。 漂移为什么是"波动率 × 波动率的积分"?这是一个凸性修正:远期利率是 \(\ln P\) 的差,而 \(\ln\) 是凹函数,波动越大、期限越长,修正越大。Ho–Lee 例子中漂移是 \(\sigma^2(T-t)\),期限越远漂移越大,正是这个效应。
多因子推广:若 \(dF=m\,dt+\sum_ks_k\,dz_k\)(因子相互独立),则
实现上的难点:非马尔可夫
HJM 看似简单,实际很难实现。一般 HJM 模型下,短期利率过程是**非马尔可夫(non-Markov)**的:\(r\) 未来的过程不仅取决于那时 \(r\) 的值,还取决于从现在到那时走过的路径。因此:
- 通常只能用蒙特卡洛模拟;
- 若要建树,树不重合(nonrecombining)。单因子二叉树 \(n\) 步后有 \(2^n\) 个节点,\(n=30\) 时约 10 亿个(原书图 32.1)。
微妙之处在于:单个远期利率 \(F(t,T)\) 在多数应用中是马尔可夫的,可以单独用重合树表示;但不能让所有远期利率共用同一棵树。
白话解释:马尔可夫(Markov)的意思是"只看现在,不看历史":知道今天的短期利率,就能确定未来的分布,至于怎么走到今天无关紧要。 重合树需要这个性质。"先涨后跌"和"先跌后涨"到达同一个利率值,如果未来行为也一样,两个节点就能合并成一个,节点数随步数线性增长。如果未来行为还取决于"是先涨还是先跌"(非马尔可夫),两个节点就不能合并,节点数翻倍增长:30 步就是 \(2^{30}\approx10.7\) 亿个。 金融上的对应:在一般 HJM 中,今天的短期利率不足以描述"整条曲线的状态",曲线的形状还记录着过去的冲击,所以只看 \(r\) 不够。
两个重要特例是例外:
- \(s(t,T)=\sigma\)(常数)得到 Ho–Lee 模型(原书习题 32.3);
- \(s(t,T)=\sigma e^{-a(T-t)}\) 得到 Hull–White 模型(原书习题 32.4)。
这两个特例中短期利率是马尔可夫的,\(r\) 和所有远期利率可以用同一棵重合树表示。这也说明了第 31 章与本章的关系:Hull–White 是 HJM 框架中一个"可以用树实现"的特殊波动率设定。
以 Ho–Lee 为例验证 (32.5):\(s=\sigma\),则 \(m=\sigma\int_t^T\sigma d\tau=\sigma^2(T-t)\)。积分得
令 \(T=t\),短期利率 \(r(t)=F(t,t)=F(0,t)+\tfrac12\sigma^2t^2+\sigma z(t)\),于是 \(dr=[F_t(0,t)+\sigma^2t]dt+\sigma dz\),正是 (31.10)–(31.11) 的 Ho–Lee 模型。
32.2 LIBOR 市场模型
动机
HJM 用瞬时远期利率表达,有两个实际困难:瞬时远期利率不能直接观察;模型难以校准到活跃交易的工具。Brace–Gatarek–Musiela(BGM)、Jamshidian 以及 Miltersen–Sandmann–Sondermann 提出了 LIBOR 市场模型(LIBOR market model,LMM,也称 BGM 模型),直接用交易员在 LIBOR 贴现下实际使用的、离散期限的远期利率来表达。
设定
- \(t_0=0\),\(t_1,t_2,\ldots\) 为当前交易的上限的重置日(美国最流行季度重置,\(t_1\approx0.25\),\(t_2\approx0.5\),……);\(\delta_k=t_{k+1}-t_k\);
- \(F_k(t)\):\(t\) 时看到的 \(t_k\) 到 \(t_{k+1}\) 的远期利率(复利期为 \(\delta_k\),actual/actual 计息);
- \(m(t)\):下一个重置日的指标,即满足 \(t\le t_{m(t)}\) 的最小整数;
- \(\zeta_k(t)\):\(F_k(t)\) 在 \(t\) 时的波动率。
先假设单因子。由第 28.4 节,在关于 \(P(t,t_{k+1})\) 的远期风险中性世界中,\(F_k\) 是鞅:
这正是 Black 的 caplet 模型:每个 caplet 只依赖一个远期利率,在它自己的远期测度下 \(F_k\) 是对数正态鞅。所以 LMM 与 Black 上限公式天然一致,这是它最大的实用优势。
白话解释:可以把 LMM 理解为"把一串 Black caplet 模型缝在一起"。第 29 章里,每个 caplet 各自用一套计算权重(各自付款日的零息债测度),在各自的权重下各自的远期利率是鞅。单独定价一个 caplet 没问题。 但棘轮上限、百慕大期权这类产品要同时用到好几个远期利率,必须把它们放在同一套权重下一起模拟。换到公共权重时,每个远期利率的漂移就不再是 0 了,下面的 (32.8)–(32.10) 就是在算这个漂移修正。
记 \(P(t,t_k)\) 的波动率为 \(v_k(t)\)(即 \(dP/P=\cdots+v_k(t)dz\)),\(v_k(t)\) 为负,因为债券价格与利率负相关。
滚动远期风险中性世界
问题是:不同的 \(F_k\) 在不同的测度下才是鞅,要同时模拟它们,必须选一个公共测度。LMM 常用滚动远期风险中性世界(rolling forward risk-neutral world):在任何时刻,都是关于"下一个重置日到期的零息债"的远期风险中性世界。
它的好处是贴现非常简单:从 \(t_{k+1}\) 贴现到 \(t_k\),只需用 \(t_k\) 时观察到的 \(t_{k+1}\) 期零息利率,不必关心 \(t_k\) 到 \(t_{k+1}\) 之间利率如何变化。(原书脚注:这相当于以"滚动 CD"为计价单位——从 $1 开始买到期 \(t_1\) 的债券,到期后再投资到期 \(t_2\) 的债券,依此类推。严格地说,第 31 章的利率树也是在滚动远期风险中性世界里,而不是在传统风险中性世界里。)
由第 28.8 节的换计价单位结果,\(F_k\) 在滚动远期风险中性世界中的过程为
再由 \(P(t,t_i)/P(t,t_{i+1})=1+\delta_iF_i(t)\),两边取对数、用 Itô 引理比较 \(dz\) 的系数:
(\(v\) 与 \(\zeta\) 符号相反,债券价格波动率的绝对值随期限增大,符合直觉。)把 (32.9) 从 \(i=m(t)\) 累加到 \(k\) 代入 (32.8):
当 \(\delta_i\to0\) 时,(32.10) 退化为 HJM 的 (32.4)(原书习题 32.7)。LMM 可以看作 HJM 的离散期限版本。
推导拆解:(32.8) 直接套用第 28.8 节的换计价单位公式:从 \(P(t,t_{k+1})\) 换到 \(P(t,t_{m(t)})\),计价单位比率 \(w=P(t,t_{m(t)})/P(t,t_{k+1})\) 的波动率为 \(v_{m(t)}-v_{k+1}\),\(F_k\) 的波动率为 \(\zeta_k\),漂移增加二者之积。 (32.9):\(\ln P(t,t_i)-\ln P(t,t_{i+1})=\ln(1+\delta_iF_i)\)。左边 \(dz\) 系数是 \(v_i-v_{i+1}\);右边对 \(F_i\) 求导得 \(\frac{\delta_i}{1+\delta_iF_i}\),乘以 \(F_i\) 的随机项 \(\zeta_iF_i\,dz\),即右式。 (32.10):\(v_{m(t)}-v_{k+1}\) 可以写成一串相邻差之和 \(\sum_{i=m(t)}^k(v_i-v_{i+1})\)(中间项依次相消,像"望远镜"一样收起来),每一项用 (32.9) 替换。 金融直觉:\(F_k\) 的漂移是它与"比它短的各个远期利率"之间协方差的加权和。\(k\) 越大,求和项越多,漂移越大。远期利率越靠后,在滚动测度下平均上升得越多,这和第 30 章"在不自然的测度下期望值要上调"是同一个效应。
远期利率波动率的参数化
一个常用的简化假设:\(\zeta_k(t)\) 只取决于从下一个重置日到 \(t_k\) 之间完整计息期的个数。记有 \(i\) 个计息期时的波动率为 \(\Lambda_i\),则
是一个阶梯函数。这种设定是平稳的:波动率只取决于"离重置还有多久",不取决于日历时间,今天的波动率期限结构在未来会被原样复制。
\(\Lambda_i\) 在理论上可以由 Black 模型下的 caplet 即期波动率(原书图 29.3)估计。设 \(\sigma_k\) 为 \(t_k\) 到 \(t_{k+1}\) 的 caplet 的 Black 波动率,令累计方差相等:
从 \(k=1\) 开始迭代求出 \(\Lambda_0,\Lambda_1,\ldots\)。(实践中更常用最小二乘校准,见下文。)
例 32.1 \(\delta_i\) 相等,前三个 caplet 的 Black 波动率为 24%、22%、20%。
- \(\Lambda_0=24\%\);
- \(\Lambda_0^2+\Lambda_1^2=2\times0.22^2\),得 \(\Lambda_1=19.80\%\);
- \(\Lambda_0^2+\Lambda_1^2+\Lambda_2^2=3\times0.20^2\),得 \(\Lambda_2=15.23\%\)。
推导拆解:第 2 个 caplet 对应的远期利率 \(F_2\)(在 \(t_2\) 重置),在重置前要活 2 个计息期。第一期里它离重置还有 1 个完整计息期,波动率是 \(\Lambda_1\);第二期里离重置还剩 0 个完整计息期,波动率是 \(\Lambda_0\)。两期方差相加,必须等于 Black 公式用的总方差 \(\sigma_2^2\times2\)。所以 \(\Lambda_1^2=2\times0.22^2-0.24^2=0.0968-0.0576=0.0392\),\(\Lambda_1=19.80\%\)。 金融直觉:这和从即期利率推远期利率完全同构:即期利率是"平均",远期利率是"边际"。从"累计平均"推"边际"时,平均值的小变化会被放大成边际值的大变化,这就是为什么直接剥离容易剧烈震荡甚至无解(练习 3)。
例 32.2(原书表 32.1,计息期 1 年):
| \(k\) | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|
| \(\sigma_k\)(%) | 15.50 | 18.25 | 17.91 | 17.74 | 17.27 | 16.79 | 16.30 | 16.01 | 15.76 | 15.54 |
| \(\Lambda_{k-1}\)(%) | 15.50 | 20.64 | 17.21 | 17.22 | 15.25 | 14.15 | 12.98 | 13.81 | 13.60 | 13.40 |
两者都呈驼峰,\(\Lambda\) 的驼峰更明显:\(\sigma_k\) 是 \(\Lambda\) 的"累计平均",平均会把驼峰抹平。
蒙特卡洛实现
把 \(\zeta_k(t)=\Lambda_{k-m(t)}\) 代入:
漂移依赖于其他远期利率,不能精确积分。一个常用近似是冻结漂移:在 \(t_j<t<t_{j+1}\) 内计算漂移时令 \(F_i(t)=F_i(t_j)\)。于是
\(\varepsilon\sim N(0,1)\)。从 \(t_0\) 出发依次推进到 \(t_1\)、\(t_2\)……
多因子推广
设有 \(p\) 个独立因子,\(\zeta_{k,q}\) 为 \(F_k\) 的波动率在第 \(q\) 个因子上的分量:
记 \(\lambda_{i,q}\) 为有 \(i\) 个计息期时第 \(q\) 个分量,离散格式为
模拟流程:每次试验从初始曲线算出的 \(F_0(0),\ldots,F_{N-1}(0)\) 开始,用 (32.16) 算 \(F_1(t_1),\ldots,F_{N-1}(t_1)\),再算 \(F_2(t_2),\ldots,F_{N-1}(t_2)\),直到 \(F_{N-1}(t_{N-1})\)。模拟出的曲线随时间越来越短:如计息期 3 个月、\(N=40\),起点是 10 年曲线,到第 6 年(\(t_{24}\))只剩 4 年曲线。
检验冻结漂移的近似:用 (32.16) 模拟 caplet 价格(\(F_k(t_k)\) 是实现的利率,决定 \(t_{k+1}\) 的 caplet 支付,沿路径逐期贴现回 0,再取平均),与 Black 公式比较。原书报告:即使计息期长达 1 年、试验次数很大,二者也没有显著差异(只有上限波动率很高时例外)。冻结漂移在多数情况下是无害的。本章量化实战的代码会重做这个检验。
棘轮上限、黏性上限与弹性上限
LMM 的价值在于给依赖多个远期利率联合分布的产品定价。原书的三个例子:
- 棘轮上限(ratchet cap):执行价随上一期利率重置,\(K_{j+1}=R_j+s\)(上一重置日的 LIBOR 加利差);
- 黏性上限(sticky cap):执行价按上一期封顶后的利率重置,\(K_{j+1}=\min(R_j,K_j)+s\);
- 弹性上限(flexi cap):普通上限,但限定可行权的 caplet 总数。
原书表 32.2、32.3 的设定:本金 $100,曲线平坦于 5%(连续复利,即年复利 5.127%),caplet 波动率同表 32.1,年度重置,利差 25bp(作用于年复利利率),LIBOR 贴现,100,000 次模拟加对偶变量,标准误约 0.001。
| caplet 起点 | 棘轮(1/2/3 因子) | 黏性(1/2/3 因子) |
|---|---|---|
| 第 1 年 | 0.196 / 0.194 / 0.195 | 0.196 / 0.194 / 0.195 |
| 第 5 年 | 0.187 / 0.193 / 0.201 | 0.484 / 0.492 / 0.506 |
| 第 10 年 | 0.153 / 0.162 / 0.169 | 0.488 / 0.519 / 0.534 |
两因子和三因子的波动率分量见原书表 32.4、32.5。例如三因子模型中,有 1 个计息期(第 1 年)的分量为 13.65%、−6.62%、3.19%,平方和开方为总波动率 15.50%。第一个因子类似"水平",第二个类似"斜率",第三个类似"曲率"。
弹性上限:年付、本金 $100、曲线平坦 5%、所有价内 caplet 都行权、至多 5 个,1/2/3 因子价格分别为 3.43、3.58、3.61。
要点:普通上限的价格只取决于每个 caplet 的总波动率,与因子数无关,因为每个 caplet 只依赖一个远期利率。而上面这些非标准产品依赖多个远期利率的联合分布,与因子数有关:因子越多,不同期限远期利率之间的相关性越低,这类产品的价值通常越高。棘轮 caplet 支付 \(\max(R_{j+1}-R_j-s,0)\),本质是相邻两期利率之差的期权;两者相关性越低,差的波动越大,期权越值钱。
金融直觉:用组合方差公式就能看清:\(\mathrm{Var}(R_{j+1}-R_j)=\sigma_{j+1}^2+\sigma_j^2-2\rho\sigma_j\sigma_{j+1}\)。普通 caplet 只用到 \(\sigma_j\),与 \(\rho\) 无关。棘轮 caplet 的标的是"利差",\(\rho\) 越低,利差波动越大。 单因子模型中所有远期利率被同一个 \(dz\) 驱动,相关系数接近 1,利差波动被严重低估。加入第二、三个因子(斜率、曲率)后,不同期限利率可以不同步,相关性下降,棘轮和黏性上限的价值上升,这正是表中 1→3 因子价格递增的原因。这和价差期权、互换期权相对于上限的定价都是同一个道理:凡是依赖"多个利率之间关系"的产品,因子数都会影响价格。
欧式互换期权的解析近似
Hull–White (2000) 给出了 LMM 下欧式互换期权的解析近似(LIBOR 贴现)。设期权到期日 \(T_0\),互换付款日 \(T_1,\ldots,T_N\),\(\tau_i=T_{i+1}-T_i\)。由式 (28.23),远期互换利率为
\(G_j(t)\) 为 \(T_j\) 到 \(T_{j+1}\) 的远期利率。互换利率是这些远期利率的函数,由 Itô 引理(原书习题 32.12),互换利率的瞬时方差为
\(\beta_{j,q}\) 是 \(G_j\) 波动率的第 \(q\) 个分量。近似令 \(G_j(t)=G_j(0)\),代入标准市场模型(Black 互换期权公式)的互换波动率为
若互换的计息期与上限计息期相同,\(\beta_{k,q}(t)\) 就是剩余期限 \(T_k-t\) 的上限远期利率的第 \(q\) 个分量,可从表 32.5 查得。美国市场的基准上限是季度重置,而基准互换期权的标的互换是半年重置,二者不匹配。推广的方法是:每个互换计息期含 \(M\) 个子期,\(\tau_j=\sum_m\tau_{j,m}\),\(1+\tau_jG_j=\prod_m[1+\tau_{j,m}G_{j,m}]\),得到形式类似的 (32.19):内层对 \(k\) 和 \(m\) 求和,被加项换成 \(\tau_{k,m}\beta_{k,m,q}G_{k,m}(0)\gamma_k(0)/(1+\tau_{k,m}G_{k,m}(0))\)。
Hull 和 White 将其与蒙特卡洛结果比较,二者非常接近。用途:快速为欧式互换期权定价;判断互换期权相对上限是高估还是低估;以及(最重要的)用互换期权校准 LMM。该方法可以扩展到 OIS 贴现。
校准
需要确定两样东西:每个期限的总波动率 \(\Lambda_j\),以及它在各因子上的拆分 \(\lambda_{j,q}\)。通常 \(\Lambda\) 由当前市场数据确定,拆分由历史数据确定。
因子拆分。对远期利率的历史变动做主成分分析(第 22.9 节):
\(\alpha_{j,q}\) 为因子载荷,\(x_q\) 为因子得分,\(s_q\) 为第 \(q\) 个因子得分的标准差。若使用全部 \(M\) 个因子,可以直接取 \(\lambda_{j,q}=\Lambda_js_q\alpha_{j,q}\) 的形式;通常只用 \(p<M\) 个因子,需要缩放使 \(\Lambda_j=\sqrt{\sum_{q=1}^p\lambda_{j,q}^2}\):
\(\Lambda\) 的估计。(32.11) 在理论上可行,但实践中常使 \(\Lambda\) 剧烈摆动,有时甚至没有与上限报价完全一致的解。常用 31.8 节类似的方法:最小化
校准工具是欧式互换期权时,(32.18)/(32.19) 使模型价格能快速计算,Levenberg–Marquardt 最小化才可行;得到 \(\Lambda\) 后再用 (32.20) 得到 \(\lambda\)。
波动率偏斜
一些市场上,上限/下限的 Black 隐含波动率随执行价递减(偏斜)。可以用 CEV 版本(第 27.1 节):
\(0<\gamma<1\)。处理方式与对数正态版本类似;上限/下限可以用非中心 \(\chi^2\) 分布解析定价,互换期权也有类似的解析近似(Andersen–Andreasen 2000)。
百慕大互换期权
百慕大互换期权(Bermudan swap option) 可以在标的互换的部分或全部付款日行权。LMM 依赖蒙特卡洛,而蒙特卡洛向前推进,难以处理提前行权。可用第 27.8 节的方法:
- Longstaff–Schwartz 最小二乘法:把"不行权的价值"回归到因子值的多项式上;
- Andersen 的最优行权边界参数化:他发现假设行权决策只依赖期权的内在价值,就能得到很好的结果。
多数交易员实际上用第 31 章的单因子无套利模型为百慕大期权定价。单因子模型对百慕大期权定价是否准确,学界有争议(Andersen–Andreasen 认为足够,Longstaff–Santa-Clara–Schwartz 认为会显著低估)。
32.3 处理多条零息曲线
危机前后的变化
2007 年危机之前,多数衍生品的支付和贴现都用同一条 LIBOR/互换曲线。现在有抵押的交易通常用 OIS 曲线贴现,所以依赖 LIBOR 的互换、上限、互换期权需要多条曲线:LIBOR 曲线决定支付,OIS 曲线用于贴现。
如果同时对两条曲线建模,并假设银行可以无风险地按两种利率借贷,就违背了无套利(借 OIS、贷 LIBOR 就能锁定利润)。另一种选择是对信用和流动性风险建模,从而解释 LIBOR–OIS 利差,但这太复杂。实务界的选择是:分别对 LIBOR 和 OIS 建模,不显式建模违约和流动性风险,并忽略多曲线带来的套利问题。
危机后连 LIBOR 也不止一条:从 1、3、6、12 个月 LIBOR 产品分别构造的曲线互不相同(12 个月期 LIBOR 贷款比连续 12 次滚动的 1 个月期贷款风险更大)。所以 LIBOR 产品在实践中至少要用 5 条零息曲线。
OIS 贴现下的远期 LIBOR
OIS 曲线可以用第 31 章的短期利率方法建模,也可以用 HJM/LMM 框架("LIBOR 市场模型"变成"OIS 市场模型")。
一个容易被忽视的要点:OIS 贴现下的远期 LIBOR 与 LIBOR 贴现下的远期 LIBOR 不同(第 9.3 节)。记 \(F_{LD}(t,t_1,t_2)\)、\(F_{OD}(t,t_1,t_2)\) 分别为 LIBOR 贴现和 OIS 贴现下的远期 LIBOR(都可以由 LIBOR 换固定互换的报价自举得到,例 9.2、9.3);\(P_{LD}\)、\(P_{OD}\) 为相应的零息债价格。
- \(F_{LD}\) 在关于 \(P_{LD}(t,t_2)\) 的远期风险中性世界中是鞅(第 29.2 节 caplet 定价用的就是它),但一般不是关于 \(P_{OD}(t,t_2)\) 的鞅;
- OIS 贴现时必须用 \(F_{OD}\):它是关于 \(P_{OD}(t,t_2)\) 的远期风险中性世界中的鞅,等于该世界中 \(t_1\) 到 \(t_2\) 的 LIBOR 的期望。
白话解释:两个"远期 LIBOR"之所以不同,是因为它们是在两套不同的计算权重下求的期望。\(F_{LD}\) 是"以 LIBOR 零息债记账"时对未来 LIBOR 的平均,\(F_{OD}\) 是"以 OIS 零息债记账"时的平均。两种零息债与 LIBOR 的相关性不同,权重就不同(第 28.8 节:差异 = 协方差)。 实务上的落点很简单:用 OIS 曲线贴现,就必须用"在 OIS 贴现下让市场互换报价为零"的那组远期 LIBOR,两者要从同一套自举流程里一起出来,不能从两个系统各取一半。
于是 OIS 贴现下的定价规则:
- 互换:假设远期利率 \(F_{OD}\) 实现,用 OIS 贴现;
- caplet/floorlet:仍用 (29.7)、(29.8),但 \(F_k=F_{OD}(0,t_k,t_{k+1})\),\(P(0,t_{k+1})=P_{OD}(0,t_{k+1})\);隐含波动率 \(\sigma_k\) 可能依赖贴现方式;
- 互换期权:用 (29.10)、(29.11),年金因子取 \(A=\frac1m\sum_{i=1}^{mn}P_{OD}(0,T_i)\),远期互换利率由 \(F_{OD}\) 计算。
联合建模两条曲线
更复杂的产品要同时对两条曲线建模。
- 方法一:LIBOR 和 OIS 短期利率服从相关的随机过程。缺点是 OIS 可能超过 LIBOR,不符合现实。
- 更好的方法:用短期利率模型或 HJM/LMM 对 OIS 建模,再把 LIBOR–OIS 利差的期限结构作为非负变量单独建模。最简单的做法是假设利差等于远期利差(确定性利差)。
随机利差模型的关键观察:\(F_{OD}(t,t_i,t_{i+1})\) 和 \(t_i\) 到 \(t_{i+1}\) 的远期 OIS 利率在关于 \(P_{OD}(t,t_{i+1})\) 的远期风险中性世界中都是鞅,因此二者之差(远期利差)也是鞅。于是可以完全仿照 (32.10)/(32.15) 为远期利差建模:\(dF_k/F_k=\cdots+\sum_q\zeta_{k,q}dz_q\)(这里 \(F_k\) 指远期利差),32.2 节关于滚动远期风险中性测度的结果全部适用(Mercurio–Xie 2012)。
32.4 机构抵押支持证券
定义与提前还款
机构抵押支持证券(agency mortgage-backed security,agency MBS) 类似第 8 章的 ABS,但支付由政府相关机构(GNMA、FNMA 等)担保,投资者不受借款人违约的影响,看上去像普通的政府固定收益证券。关键区别在于:资产池中的抵押贷款有提前还款权(prepayment privileges)。美国房贷通常是 30 年期、可随时提前还款,相当于房主持有一个 30 年期的美式期权,可以按面值把贷款"卖回"给贷款人。
提前还款的原因多种多样:利率下降时再融资;房屋出售;等等。估值的关键是提前还款函数(prepayment function):用 \(t\) 时的收益率曲线和其他相关变量(例如曲线的历史路径)描述资产池在 \(t\) 时的期望提前还款率。对单笔贷款,这种预测很不可靠;但大量相似贷款组成资产池后,有"大数定律"效应,可以用历史数据较准确地预测。
总体上,利率低时提前还款更多:投资者在利率低、再投资收益差时被提前还本,利率高时却被"锁定"在低票息上。所以投资者要求 MBS 比其他固定收益证券更高的收益率,以补偿他们卖出的提前还款期权。这就是 MBS 的负凸性来源。
CMO
最简单的机构 MBS 是过手证券(pass-through):所有投资者收益相同、承担相同的提前还款风险。担保抵押贷款债券(collateralized mortgage obligation,CMO) 把投资者分成多个类别,规定本金偿还如何在各类之间分配,从而创造承担不同提前还款风险的证券(类似第 8 章 ABS 按信用风险分档)。
例:A、B、C 三类,所有本金(计划还款和提前还款)先全部给 A,A 还清后给 B,再给 C。A 承担最多的提前还款风险、期限最短;C 期限最长。风险大小取决于各档面值:面值 400/300/100 时,C 几乎没有提前还款风险;面值 100/200/500 时,C 的风险就较大。CMO 的目的是创造比简单过手证券更吸引机构投资者的证券。
IO 与 PO
Business Snapshot 32.1:剥离式 MBS(stripped MBS) 把本金和利息分开:所有本金给PO(principal only),所有利息给IO(interest only)。两者都是高风险品种,对提前还款率的敏感方向相反:
- 提前还款加快:PO 更值钱(固定的本金更早收回),IO 更不值钱(利息总额减少);
- 提前还款放慢:相反。
由于提前还款随利率下降而加快,IO 在利率下降时价值下跌——它是少有的"利率下降反而亏钱"的固定收益品种,常被用来对冲 MBS 组合的负凸性。
估值与期权调整利差
MBS 通常用蒙特卡洛估值:模拟国债利率的路径(可以用 HJM/LMM);每次试验中,每个月根据当时的曲线和曲线历史计算期望提前还款,得出持有人的期望现金流;以国债利率加一个利差贴现到 0,得到这条路径的价值;多次试验取平均。路径依赖(提前还款取决于曲线历史,例如"已经再融资过的人不会再融资")是必须用蒙特卡洛的原因。
期权调整利差(option-adjusted spread,OAS):考虑所有内嵌期权之后,工具相对国债收益率提供的利差。计算方法:用国债利率加某个利差贴现得到模型价格,与市场价格比较,迭代求使两者相等的利差,即 OAS。OAS 之于 MBS,类似收益率之于普通债券(原书习题 32.10):它是在剔除期权价值后衡量"便宜还是贵"的统一尺度。
金融直觉:和 CFA 里的利差概念对照:Z-spread 是"假设现金流固定、在整条即期曲线上加一个平行利差"使价格对上;OAS 是"在模型的每条利率路径上,现金流随提前还款变化,再加一个平行利差"使价格对上。两者之差约等于提前还款期权的成本:Z-spread − OAS ≈ 期权成本(以利差计)。 例如一只 MBS 的 Z-spread 为 120bp,OAS 为 40bp,说明 80bp 的额外收益只是对卖出提前还款期权的补偿,真正的"超额回报"只有 40bp。只看名义利差,就会把期权价值误当作便宜。注意 OAS 依赖于所用的利率模型、波动率和提前还款函数,换一个模型 OAS 会变。
32.5 小结与常见误区
HJM 与 LMM 让用户完全自由地选择波动率期限结构。LMM 相对 HJM 的两大优势:用决定上限定价的离散远期利率而不是瞬时远期利率表达;相对容易校准到上限或欧式互换期权价格。两者共同的缺点是:不能表示为重合树,通常需要蒙特卡洛,计算量远大于第 31 章的模型。
危机后有抵押衍生品用 OIS 贴现,互换、上限/下限、互换期权的估值要改用 OIS 贴现,并在合适的远期风险中性测度下计算远期利率和互换利率;更复杂的工具需要联合建模 OIS 与 LIBOR 曲线。美国机构 MBS 市场催生了 CMO、IO、PO 等强路径依赖的奇异利率衍生品,通常要用蒙特卡洛,是 HJM/LMM 的理想应用。
常见误区:
- 把 LIBOR 贴现下的远期 LIBOR 直接用于 OIS 贴现定价。
- 以为因子数对所有产品都不重要。普通上限与因子数无关,但依赖多个远期利率联合分布的产品(棘轮、黏性、弹性上限,以及互换期权相对上限的定价)与因子数有关。
- 用 (32.11) 直接剥离 \(\Lambda\),可能得到剧烈震荡的结果甚至无解;应使用带平滑惩罚的最小二乘。
量化实战
本章内容在量化交易中的用途
定价与系统实现。LMM 蒙特卡洛(冻结漂移 + 对偶变量 + PCA 因子拆分)是利率奇异产品定价引擎的标准实现。百慕大期权的 Longstaff–Schwartz 回归是通用的美式蒙特卡洛技术。多曲线框架(OIS 贴现 + 各期限的基准利率曲线)是任何利率定价系统的基础,国内对应 FR007、Shibor 等互换曲线与贴现曲线的区分。
风险建模。用 PCA 分解远期利率的变动(水平、斜率、曲率)直接用于利率风险因子模型和情景生成。多因子对相关性敏感产品的影响提醒我们:风险系统中利率因子的个数不是"技术细节",它会直接改变某些产品的价值和对冲比率。
固收量化。MBS 的提前还款建模和 OAS 是固收相对价值分析的核心指标;IO/PO 对利率的非线性敞口是负凸性的典型例子。
对股票因子研究和回测:基本无直接关联。
Python 示例:LMM 蒙特卡洛、棘轮/黏性上限与 PCA 因子拆分
程序分三部分:
- 用表 32.1 剥离 \(\Lambda\),按 (32.14) 写单因子 LMM 的冻结漂移模拟(20 万条路径,对偶变量),用滚动贴现给普通 caplet 定价并与 Black 公式比较——这是检验 LMM 实现的标准单元测试;
- 复现原书表 32.2/32.3 的单因子棘轮和黏性 caplet;
- 对模拟的远期利率日变动做 PCA,按 (32.20) 把 \(\Lambda_j\) 拆分到两个因子上。
import numpy as np
from scipy.stats import norm
# 表 32.1:年度 caplet 的 Black 波动率 -> 剥离出 LMM 的 Lambda_i
sig_black = np.array([15.50,18.25,17.91,17.74,17.27,16.79,16.30,16.01,15.76,15.54])/100
k = np.arange(1, 11)
Lam = np.sqrt(np.diff(np.r_[0, k*sig_black**2])) # 式 (32.11),delta=1
N = 11 # 远期利率 F_0..F_10,覆盖 t=0..11 年
delta = 1.0
F0 = np.full(N, np.exp(0.05)-1) # 平坦 5% 连续复利 = 5.127% 年复利
spread = 0.0025
def simulate(n_paths, seed=0):
"""单因子 LMM,冻结漂移的离散格式 (32.14)。返回实现利率 R[path, k]=F_k(t_k)。"""
rng = np.random.default_rng(seed)
half = n_paths//2
eps = rng.standard_normal((half, N))
eps = np.vstack([eps, -eps]) # 对偶变量
F = np.tile(F0, (n_paths, 1))
R = np.empty((n_paths, N)); R[:, 0] = F0[0]
for j in range(N-1): # 从 t_j 推进到 t_{j+1}
live = np.arange(j+1, N) # 仍未重置的远期利率
lam = Lam[live-j-1] # Lambda_{k-j-1}
x = delta*F[:, live]*lam/(1+delta*F[:, live])
drift = np.cumsum(x, axis=1)*lam - 0.5*lam**2
F[:, live] = F[:, live]*np.exp(drift*delta + lam*eps[:, [j]]*np.sqrt(delta))
R[:, j+1] = F[:, j+1]
return R
R = simulate(200_000)
# 滚动贴现:t_{k+1} 支付贴现到 0 = prod_{i<=k} 1/(1+delta R_i)
disc = np.cumprod(1/(1+delta*R), axis=1)
# 1) 普通 caplet:MC vs Black
K = F0[0]
for kk in [1, 5, 10]:
x = 100*delta*np.maximum(R[:, kk]-K, 0)*disc[:, kk]
mc, se = x.mean(), x.std()/np.sqrt(len(x))
s = sig_black[kk-1]; T = kk
d1 = (np.log(F0[kk]/K)+s*s*T/2)/(s*np.sqrt(T)); d2 = d1-s*np.sqrt(T)
black = 100*delta*np.exp(-0.05*(kk+1))*(F0[kk]*norm.cdf(d1)-K*norm.cdf(d2))
print(f"caplet 起点 {kk:2d} 年: LMM-MC={mc:.4f}(±{se:.4f}) Black={black:.4f}")
# 2) 棘轮与黏性 caplet
Kr = R[:, :-1] + spread # 棘轮:K_{j+1}=R_j+s
pay_r = np.maximum(R[:, 1:]-Kr, 0)
Ks = np.empty_like(R); Ks[:, 0] = R[:, 0] # 黏性:K_{j+1}=min(R_j,K_j)+s
for j in range(N-1):
Ks[:, j+1] = np.minimum(R[:, j], Ks[:, j]) + spread
pay_s = np.maximum(R[:, 1:]-Ks[:, 1:], 0)
for kk in [1, 5, 10]:
vr = 100*np.mean(pay_r[:, kk-1]*disc[:, kk])
vs = 100*np.mean(pay_s[:, kk-1]*disc[:, kk])
print(f"起点 {kk:2d} 年: 棘轮={vr:.3f} 黏性={vs:.3f}")
# 3) 因子拆分:对(模拟的)远期利率日变动做 PCA,按式 (32.20) 拆分 Lambda
rng = np.random.default_rng(1)
load_true = np.vstack([np.ones(10), # 水平
np.linspace(-1, 1, 10), # 斜率
(np.linspace(-1, 1, 10))**2-0.35]) # 曲率
f = rng.standard_normal((2500, 3))*np.array([6, 2.5, 1.0]) # 因子日变动(bp)
dF = f@load_true + 0.3*rng.standard_normal((2500, 10))
eigval, eigvec = np.linalg.eigh(np.cov(dF, rowvar=False))
idx = np.argsort(eigval)[::-1]; eigval, eigvec = eigval[idx], eigvec[:, idx]
print("\n前三个主成分解释的方差比例:", np.round(eigval[:3]/eigval.sum(), 4))
p = 2
s_q, alpha = np.sqrt(eigval[:p]), eigvec[:, :p] # 因子得分标准差、因子载荷
alpha = alpha*np.sign(alpha[-1]) # 特征向量符号任意,统一为长端为正
lam = Lam[:, None]*s_q*alpha/np.sqrt(((s_q*alpha)**2).sum(axis=1, keepdims=True)) # (32.20)
print("两因子分量 lambda_{j,1}, lambda_{j,2} (%),以及平方和开方:")
for j in [0, 4, 9]:
print(f" j={j}: {100*lam[j,0]:6.2f} {100*lam[j,1]:6.2f} -> {100*np.sqrt((lam[j]**2).sum()):.2f} = Lambda_{j}")
关键输出:
caplet 起点 1 年: LMM-MC=0.2862(±0.0010) Black=0.2866
caplet 起点 5 年: LMM-MC=0.5799(±0.0022) Black=0.5815
caplet 起点 10 年: LMM-MC=0.5710(±0.0021) Black=0.5741
起点 1 年: 棘轮=0.194 黏性=0.194
起点 5 年: 棘轮=0.187 黏性=0.483
起点 10 年: 棘轮=0.152 黏性=0.483
前三个主成分解释的方差比例: [0.9309 0.0638 0.0036]
两因子分量 lambda_{j,1}, lambda_{j,2} (%),以及平方和开方:
j=0: 14.26 -6.07 -> 15.50 = Lambda_0
j=4: 15.23 -0.65 -> 15.25 = Lambda_4
j=9: 12.47 4.91 -> 13.40 = Lambda_9
读法:
- 普通 caplet 的 LMM 价格与 Black 价格相差都在 1.5 个标准误以内,印证了"冻结漂移近似无害"的结论,也说明剥离出的 \(\Lambda\) 与 caplet 报价一致。
- 单因子棘轮 caplet 0.194/0.187/0.152、黏性 caplet 0.194/0.483/0.483,与原书单因子列 0.196/0.187/0.153 和 0.196/0.484/0.488 吻合到蒙特卡洛误差量级(剩余差别来自随机数和第一期执行价的细节约定)。黏性 caplet 远贵于棘轮:黏性执行价以"封顶后的利率"为基础,利率持续上升时执行价跟不上,期权深度价内。
- PCA 的第一主成分(水平)解释了 93% 的方差。按 (32.20) 拆分后,每个期限两个分量的平方和恰好还原 \(\Lambda_j\),即拆分只改变相关结构,不改变总波动率——这正是"普通上限价格与因子数无关"的数学原因。第二个分量从负变正,体现斜率因子:短端和长端在这个因子上反向变动,从而降低了两者的相关性。
要把这段代码升级为多因子,只需把 eps[:, [j]] 换成 \(p\) 维正态向量,把漂移中的 \(\Lambda_i\Lambda_k\) 换成 \(\sum_q\lambda_{i,q}\lambda_{k,q}\)(式 32.16)。读者可以用两因子版本重算棘轮 caplet,验证它比单因子更贵。
本章小结
HJM 框架从零息债的风险中性过程出发,得出瞬时远期利率的漂移必须满足 \(m=s\int_t^Ts\,d\tau\):风险中性下,远期利率的漂移由波动率唯一确定。一般 HJM 是非马尔可夫的,需要蒙特卡洛;Ho–Lee 和 Hull–White 是可以用重合树实现的特例。LMM 把同样的思想用于可观察的离散远期利率:每个 \(F_k\) 在自己的远期测度下是对数正态鞅,与 Black caplet 公式一致;在滚动远期测度下统一模拟所有远期利率,漂移由 (32.10)/(32.15) 给出。校准时,总波动率 \(\Lambda\) 由上限或互换期权价格确定,因子拆分由历史数据的 PCA 确定。依赖多个远期利率联合分布的产品对因子数敏感。危机后的多曲线框架要求用 OIS 贴现、用 \(F_{OD}\) 作为远期 LIBOR,并把 LIBOR–OIS 利差作为非负变量单独建模。机构 MBS 的提前还款期权使其具有负凸性,通常用蒙特卡洛和 OAS 分析。
| 概念 | 公式 / 要点 |
|---|---|
| HJM 远期利率过程 | \(dF(t,T)=vv_T\,dt-v_T\,dz\) |
| HJM 漂移条件 | \(m=s\int_t^Ts\,d\tau\);多因子 \(m=\sum_ks_k\int_t^Ts_k\,d\tau\) |
| HJM 特例 | \(s=\sigma\) → Ho–Lee;\(s=\sigma e^{-a(T-t)}\) → Hull–White |
| LMM 远期测度 | \(dF_k=\zeta_kF_k\,dz\)(关于 \(P(t,t_{k+1})\)) |
| LMM 滚动远期测度 | \(\dfrac{dF_k}{F_k}=\sum_{i=m(t)}^k\dfrac{\delta_iF_i\zeta_i\zeta_k}{1+\delta_iF_i}dt+\zeta_kdz\) |
| 波动率剥离 | \(\sigma_k^2t_k=\sum_{i=1}^k\Lambda_{k-i}^2\delta_{i-1}\) |
| 因子拆分 | \(\lambda_{j,q}=\Lambda_js_q\alpha_{j,q}/\sqrt{\sum_qs_q^2\alpha_{j,q}^2}\) |
| 因子数的影响 | 普通上限无关;棘轮、黏性、弹性上限、互换期权有关 |
| OIS 贴现 | 用 \(F_{OD}\)(关于 \(P_{OD}(t,t_2)\) 的鞅) |
| MBS | 提前还款函数、CMO 分档、IO/PO、OAS |
练习
基础
-
解释马尔可夫与非马尔可夫短期利率模型的区别,以及为什么非马尔可夫模型不能用重合树实现(原书习题 32.1)。 提示:非马尔可夫时同一节点的利率值可能对应不同的未来分布,节点无法合并。
-
在 HJM 中取 \(s(t,T)=\sigma\),用 (32.5) 求瞬时远期利率漂移,并说明它与 Ho–Lee 模型的关系(原书习题 32.3)。 提示:\(m=\sigma^2(T-t)\);对 \(F(t,t)=r(t)\) 求微分可得 \(\theta(t)=F_t(0,t)+\sigma^2t\)。
-
复算例 32.1;若第 4 个 caplet 的 Black 波动率为 19%,\(\Lambda_3\) 是多少?若为 16% 呢? 提示:\(\Lambda_3^2=4\times0.19^2-3\times0.20^2=0.0244\),\(\Lambda_3=15.6\%\);若为 16%,\(\Lambda_3^2=0.1024-0.12<0\),无解——这正是直接剥离可能失败的例子。
-
为什么棘轮上限的价值随因子数增加而增加?为什么黏性上限比棘轮上限贵(原书习题 32.6、32.8)? 提示:因子越多,相邻远期利率相关性越低;黏性的执行价基于封顶后的利率,偏低。
-
解释 IO 和 PO 对提前还款率的敏感性为何方向相反;利率下降 100bp 时,IO 和 PO 各自的价格怎样变化(原书习题 32.9)。
进阶
-
证明当 \(\delta_i\to0\) 时 (32.10) 退化为 HJM 的 (32.4)(原书习题 32.7)。 提示:把求和写成黎曼和,\(\delta_iF_i/(1+\delta_iF_i)\to F\,d\tau\),并注意 \(s(t,T)=\zeta F\) 的对应关系。
-
推导多因子 HJM 漂移条件 (32.6) 和多因子 LMM 的漂移 (32.15)(原书习题 32.2、32.11)。
-
用 Itô 引理推导互换利率方差公式 (32.17)(原书习题 32.12、32.13)。 提示:先对 \(\ln s\) 关于 \(\ln(1+\tau_kG_k)\) 求偏导,得到 \(\gamma_k\)。
-
把本章代码扩展为两因子 LMM(用代码第 3 部分得到的 \(\lambda_{j,q}\)),重算棘轮 caplet,与单因子结果比较;再实现原书的弹性上限(至多 5 个价内 caplet 行权),与原书 3.43/3.58 比较。 提示:弹性上限在每条路径上按时间顺序行权前 5 个价内 caplet。
-
设计一个简化的 MBS 估值器:用 Hull–White 模型模拟短期利率,提前还款率取 \(\text{CPR}=0.06+0.5\max(c-R_{10},0)\)(\(c\) 为贷款利率,\(R_{10}\) 为模拟的 10 年利率),计算 30 年期过手证券的价格,再迭代求 OAS。 提示:每月现金流 = 计划本息 + 提前还款;OAS 用
brentq求解。观察利率下降时价格上涨幅度小于不含期权债券(负凸性)。
原书推荐习题:32.1(马尔可夫与非马尔可夫);32.2、32.11(多因子 HJM 漂移条件与多因子 LMM 漂移);32.3、32.4(HJM 的两个特例给出 Ho–Lee 和 Hull–White,理解 HJM 与短期利率模型关系的关键);32.7(\(\delta\to0\) 时 LMM 退化为 HJM);32.6、32.8(棘轮上限随因子数增值、黏性上限比棘轮上限贵的直观解释);32.12、32.13(互换利率方差公式的推导);32.14(从 caplet 波动率剥离 LMM 远期波动率);32.15(不同定义的弹性上限的定价难点);32.9、32.10(IO/PO 敏感性,OAS 与收益率的类比)。
原书对照
| 本章小节 | 原书章节 | PDF 页码 |
|---|---|---|
| 章首导言 | Chapter 32 introduction | p.763 |
| 32.1 HJM 模型 | 32.1 The Heath, Jarrow, and Morton Model | p.763–766 |
| 32.2 LIBOR 市场模型(例 32.1、32.2,表 32.1–32.5) | 32.2 The LIBOR Market Model | p.765–775 |
| 32.3 多条零息曲线 | 32.3 Handling Multiple Zero Curves | p.775–777 |
| 32.4 机构 MBS(Business Snapshot 32.1) | 32.4 Agency Mortgage-Backed Securities | p.777–779 |
| 小结、延伸阅读、习题 | Summary, Further Reading, Practice Questions 32.1–32.15 | p.779–782 |
注:PDF 页码 = 书页码 + 1。