量化交易中文教材

第 19a 章 希腊字母(上):Delta 对冲与合成期权

金融机构在场外市场把期权卖给客户以后,就背上了风险。如果卖出的期权和交易所的标准期权一模一样,在交易所买一份对冲掉即可;但为客户定制的期权通常没有现成的对冲工具,只能用标的资产和少数流动性好的期权去"拼"。本章和下一章讨论交易员如何做到这一点。

工具是一组被称为**希腊字母(Greek letters,简称 Greeks)**的敏感度指标。每个希腊字母度量期权头寸风险的一个维度:delta 度量对标的价格小幅变动的敏感度,gamma 度量 delta 本身变化的速度,vega 度量对波动率的敏感度,theta 度量时间流逝的影响,rho 度量对利率的敏感度。交易员的任务是管理这些希腊字母,使每一种风险都在可接受范围内。这套分析同样适用于交易所做市商和场外交易员。

原书第 19 章是全册最核心的内容之一,我们拆成两章。本章(19a)从"怎样对冲一份卖出的看涨期权"这个具体问题出发,先看几种失败的方案,再讲清楚 delta 对冲为什么有效、它的成本从哪里来,最后讨论 delta 对冲的反面——合成期权与组合保险,以及它在 1987 年股灾中的角色。下一章(19b)讨论 theta、gamma、vega、rho 以及它们之间的关系,并把 delta、gamma、vega 对冲放在一起。

学习目标

  1. 说明裸露头寸、有保护头寸和止损策略为什么都不是好的对冲,特别是止损策略失败的真正原因。
  2. 写出欧式期权(含收益率 \(q\))的 delta,计算组合的 delta 和使其 delta 中性所需的标的头寸。
  3. 描述动态 delta 对冲的过程,解释为什么对冲成本的期望现值等于 BSM 价格,以及"高买低卖"的成本来源。
  4. 用蒙特卡洛模拟评估对冲策略,理解对冲误差随再平衡频率下降的规律。
  5. 计算远期与期货的 delta,会用期货替代现货做 delta 对冲。
  6. 用合成看跌期权实现组合保险(卖出组合或卖空指数期货),理解其在 1987 年失灵的原因。

读前导读

这一章在解决什么问题

如果你管理过债券组合的利率风险,你已经掌握了本章的核心思想。债券价格对收益率的一阶敏感度是(美元)久期,用国债期货把组合久期调到目标值就是久期对冲;收益率变化后久期会变,需要定期调整。期权的 delta 就是期权价格对标的价格的一阶敏感度,delta 对冲就是把组合的 delta 调到零;股价变化后 delta 会变,需要再平衡。下一章的 gamma 则对应凸性。

债券 期权
美元久期 \(\partial P/\partial y\) Delta \(\partial f/\partial S\)
凸性 \(\partial^2P/\partial y^2\) Gamma \(\partial^2f/\partial S^2\)
用国债期货调久期 用股票或期货调 delta
收益率变动后久期漂移,需再调整 股价变动后 delta 漂移,需再平衡

这一章要回答的问题有三个:为什么简单的方案(不对冲、全额持股、止损)不行;delta 对冲为什么有效、它的成本从哪里来(答案是"高买低卖",总成本的期望恰好是 BSM 价格);以及反过来用 delta 对冲的方法"制造"一份期权——组合保险,以及它在 1987 年的失败。

需要先想起来的数学

1. 导数是斜率。 \(\Delta=\partial c/\partial S\) 是期权价格—股价曲线在当前点的切线斜率。股价变动很小时 \(\delta c\approx\Delta\cdot\delta S\)。例:\(\Delta=0.6\),股价涨 0.5,期权约涨 0.3。见 第 00 册第 02 章 导数与泰勒展开。

2. 链式法则。 求 \(N(d_1(S))\) 对 \(S\) 的导数要乘上内层导数:\(\frac{d}{dS}N(d_1)=N'(d_1)\cdot\frac{\partial d_1}{\partial S}\)。第 15b 章证明 \(\Delta=N(d_1)\) 时用的就是它。

3. 线性组合的导数。 组合的 delta 等于各头寸 delta 按数量加总,因为求导是线性运算——和"组合久期 = 各债券久期按市值加权"一样。

4. 方差随时间可加与 \(\sqrt{\Delta t}\) 规律。 \(n\) 个独立误差相加,方差相加。如果每期误差方差为 \(c\,\Delta t^2\),共 \(n=T/\Delta t\) 期,总方差 \(cT\Delta t\),标准差正比于 \(\sqrt{\Delta t}\)。所以再平衡间隔缩小 4 倍,误差只减半。见 第 00 册第 07 章 概率中的分析工具。

怎么读这一章

必读:19.3(止损为什么失败,理解它才能理解 delta 对冲的"成本")、19.4(delta 定义、动态对冲过程、成本来源)、19.13(合成期权)。"远期与期货的 delta"读结论和例 19.8 即可。19.14 的历史案例对风控很有启发,值得一读。两个量化实战建议至少读一遍输出,理解"成本现值均值收敛到 BSM 价格"的含义。


19.1 贯穿本章的例子

某金融机构以 30 万美元卖出 10 万股不付息股票的欧式看涨期权。参数:

\[S_0=49,\quad K=50,\quad r=5\%,\quad \sigma=20\%,\quad T=20\text{ 周}=0.3846\text{ 年},\quad \mu=13\%.\]

BSM 价格约为每股 2.40 美元,10 万股约 24 万美元。金融机构比理论价多卖了 6 万美元,但它必须对冲风险,否则这 6 万美元的"利润"可能变成巨额亏损。(期望收益 \(\mu\) 不影响定价,但会影响对冲方案在真实世界中的表现,所以这里也给出了它。)


19.2 裸露头寸与有保护头寸

裸露头寸(naked position):什么也不做。若 20 周后股价低于 50,期权作废,机构净赚 30 万;若期权被行权,机构须按届时市价买入 10 万股交给持有人,成本为 10 万 × (股价 − 执行价)。股价涨到 60 时,成本为 100 万,远超收到的 30 万。

有保护头寸(covered position):卖出期权后立即买入 10 万股。期权被行权时效果很好;但若股价下跌,股票会大亏——股价跌到 40,股票亏 90 万。(由平价关系可知,卖出有保护看涨的风险敞口等同于卖出一份裸露看跌。)

两者都不是好的对冲。若 BSM 的假设成立,两种方法的平均成本(准确说是按适当风险调整的贴现率计算的期望成本现值)都是 24 万;但单次的实际成本可能从 0 到 100 万以上。好的对冲应当使成本总是接近 24 万。


19.3 止损策略

一个看起来很聪明的方案是止损策略(stop-loss strategy):卖出执行价 \(K\) 的看涨期权(1 股)后,股价一升破 \(K\) 就买入 1 股,一跌破 \(K\) 就卖出。目标是:\(S<K\) 时处于裸露状态,\(S>K\) 时处于有保护状态,从而保证到期时若实值就持有股票、若虚值就不持有。

表面上看,总成本就是期权的初始内在价值

\[Q=\max(S_0-K,0),\tag{19.1}\]

因为之后所有的买卖都发生在价格 \(K\)。如果这是对的,对冲就是完美的,而且成本总低于 BSM 价格——那就存在无风险套利了。所以一定有哪里不对。

(19.1) 错在两点:(1)现金流发生在不同时间,必须贴现;(2)更关键的是,买卖不可能恰好都在 \(K\) 发生。在有效市场中,当股价恰好等于 \(K\) 时,交易员无法知道它接下来会向上还是向下。实际操作中只能在 \(K+\epsilon\) 买入、在 \(K-\epsilon\) 卖出,每完成一次"买入再卖出"就损失 \(2\epsilon\)(不计交易费)。更密切地监控可以缩小 \(\epsilon\),但交易次数随之增加;当 \(\epsilon\to0\) 时,期望交易次数趋于无穷——维纳过程在任一有限区间内触及某个水平的次数是无限的。所以止损策略的成本不会收敛到 \(Q\)。

白话解释:止损策略的问题可以这样想。它其实也是一种"跌了卖、涨了买"的策略,只不过每次交易都押在 \(K\) 附近,而且一次买卖整整 1 股。股价在 \(K\) 附近来回抖动时,每抖一次你就在 \(K+\epsilon\) 买、在 \(K-\epsilon\) 卖,损失 \(2\epsilon\)。监控得越密,\(\epsilon\) 越小,但穿越次数越多,两者大致抵消,总损耗不会消失,而且完全取决于股价在 \(K\) 附近徘徊了多少次——这就是为什么它的成本方差始终很大。delta 对冲把"一次买卖 1 股"摊成"每次只调整一小部分",损耗变得平滑、可预期。

对虚值期权,如果股价始终没有触及 \(K\),止损对冲的成本为零;若股价路径多次穿越 \(K\),成本就会非常高。成本高度依赖于路径。

蒙特卡洛评估(表 19.1)。 原书模拟了 100 万条股价路径,每隔 \(\Delta t\) 观察一次:若在一个区间内股价从下方穿越 \(K\),就在区间末买入;从上方穿越,就在区间末卖出。用对冲绩效指标

\[\text{绩效}=\frac{\text{对冲成本的标准差}}{\text{期权的 BSM 价格}}\]

来衡量,越接近 0 越好:

\(\Delta t\)(周) 5 4 2 1 0.5 0.25
绩效 0.98 0.93 0.83 0.79 0.77 0.76

无论 \(\Delta t\) 多小,指标都高于 0.7。止损不是一个好的对冲策略。


19.4 Delta 对冲

定义

期权的 delta(\(\Delta\))是期权价格对标的资产价格的变化率,也就是期权价格—股价曲线的斜率:

\[\Delta=\frac{\partial c}{\partial S}.\]

例 股价 100,期权价格 10,\(\Delta=0.6\)。投资者卖出 2,000 股的看涨期权(20 份合约),买入 \(0.6\times2{,}000=1{,}200\) 股对冲。股价涨 1 美元:股票赚 1,200 美元,期权价格约涨 0.60,期权空头亏 \(0.60\times2{,}000=1{,}200\) 美元;股价跌时反过来。 卖出 2,000 份期权的 delta 为 \(0.6\times(-2{,}000)=-1{,}200\);股票的 delta 为 1.0,1,200 股的 delta 为 +1,200;总 delta 为零。这样的头寸称为 delta 中性(delta neutral)。

delta 会随股价和时间变化,所以头寸只在短时间内保持 delta 中性,需要周期性调整,称为再平衡(rebalancing)。例如一天后股价涨到 110,delta 从 0.60 升到 0.65,就需再买 \(0.05\times2{,}000=100\) 股。定期调整的对冲称为动态对冲(dynamic hedging);建立后不再调整的称为静态对冲(static hedging),也叫"hedge-and-forget"。

金融直觉:delta 就是期权对股价的"久期"。债券经理说"组合美元久期 50 万,收益率每升 1 个基点亏 50 万",期权交易员说"组合 delta \(-1{,}200\) 股,股价每涨 1 元亏 1,200 元"。delta 中性对应久期中性。也和久期一样,delta 只管小幅变动:股价大幅变动时,曲线的弯曲(凸性,即下一章的 gamma)会让一阶近似失准,这就是为什么要再平衡。

与 BSM 的联系。 第 15a 章推导 BSM 方程时构造的无风险组合——空 1 份期权、多 \(\partial f/\partial S\) 股——正是一个 delta 中性头寸。可以说,BSM 定价就是"构造 delta 中性头寸,并论证它在瞬间只能赚无风险利率"。delta 对冲是 BSM 的实践版本:如果模型假设成立、再平衡足够频繁,对冲的成本就是 BSM 价格。

欧式股票期权的 delta

不付息股票欧式看涨期权:

\[\Delta(\text{call})=N(d_1).\]

证明见第 15b 章(利用恒等式 \(SN'(d_1)=Ke^{-rT}N'(d_2)\),\(\partial c/\partial S\) 中多余的两项相互抵消)。所以看涨多头的 delta 为 \(N(d_1)\),空头为 \(-N(d_1)\):卖出 1 份看涨期权要持有 \(N(d_1)\) 股对冲,买入 1 份看涨要卖空 \(N(d_1)\) 股。

欧式看跌期权,对平价 \(c-p=S-Ke^{-rT}\) 两边对 \(S\) 求导:

\[\Delta(\text{put})=N(d_1)-1<0.\]

看跌多头用股票多头对冲,看跌空头用股票空头对冲。

推导拆解:看跌 delta 的推导只用了两件事。平价 \(c-p=S-Ke^{-rT}\) 对所有 \(S\) 都成立,所以两边对 \(S\) 求导仍然相等:左边 \(\partial c/\partial S-\partial p/\partial S\),右边 \(1-0=1\)(\(Ke^{-rT}\) 与 \(S\) 无关)。于是 \(\Delta_p=\Delta_c-1=N(d_1)-1\)。直观上:看涨多头 + 看跌空头 = 一股远期,其 delta 必须是 1。 为什么 \(N(d_1)\) 是 delta 而不是 \(N(d_2)\)?\(c=SN(d_1)-Ke^{-rT}N(d_2)\) 对 \(S\) 求导,除了 \(N(d_1)\) 本身,还有 \(d_1\)、\(d_2\) 随 \(S\) 变化带来的两项:\(SN'(d_1)\frac{\partial d_1}{\partial S}-Ke^{-rT}N'(d_2)\frac{\partial d_2}{\partial S}\)。由于 \(\frac{\partial d_1}{\partial S}=\frac{\partial d_2}{\partial S}=\frac1{S\sigma\sqrt T}\),且 \(SN'(d_1)=Ke^{-rT}N'(d_2)\),这两项正好抵消,只剩 \(N(d_1)\)。经济含义:行权概率随股价的变化不带来额外的一阶价值变化——在行权边界 \(S_T=K\) 上,期权收益恰好为零,边界的微小移动不影响价值。

delta 的形状(原书图 19.3、19.4):看涨 delta 随股价从 0 升到 1,看跌从 −1 升到 0,在 \(K\) 附近变化最快。随到期临近,实值看涨的 delta 趋于 1,虚值的趋于 0,平值的停留在 0.5 附近——这意味着临近到期的平值期权,delta 会在 0 和 1 之间剧烈摆动,对冲最难。

例 19.1 本章例子中,\(d_1=\dfrac{\ln(49/50)+(0.05+0.02)\times0.3846}{0.2\sqrt{0.3846}}=0.0542\),\(\Delta=N(d_1)=0.522\)。 卖出 10 万份看涨期权的头寸 delta 为 \(-52{,}200\)。

动态 delta 对冲的过程

机构卖出 10 万份看涨后每周再平衡一次。初始头寸 delta 为 \(-52{,}200\),须借入 \(52{,}200\times49=2{,}557{,}800\) 美元买入 52,200 股;利率 5%,第一周利息约 2,500 美元。

表 19.2(到期实值,成本 263,300 美元)。 第 1 周股价跌到 48.12,delta 降到 0.458,卖出 6,400 股,回收约 30.8 万美元,累计借款降到 2,252,300;第 2 周股价 47.37、delta 0.400,继续卖出……随后股价上涨,delta 逐步升高,到期前趋于 1.0。主要节点(周:股价 / delta):0:49.00/0.522;1:48.12/0.458;2:47.37/0.400;3:50.25/0.596;4:51.75/0.693;5:53.12/0.774;9:53.00/0.787;10:49.88/0.550;11:48.50/0.413;14:52.13/0.768;17:54.87/0.978;19:55.87/1.000;20:57.25/1.000。第 20 周头寸已完全有保护,累计成本(含利息)5,263,300 美元,收到执行价 500 万,净成本 263,300 美元。

表 19.3(到期虚值,成本 256,600 美元)。 股价最终为 48.12,delta 趋于 0,第 20 周头寸为裸露,累计成本 256,600 美元。

两个例子的成本贴现到今天后都接近、但不完全等于 BSM 价格 24 万。若对冲是完美的,每一条路径的贴现成本都应恰好等于 BSM 价格。偏差来自每周才再平衡一次;越频繁,偏差越小。两张表也是理想化的:假设波动率恒定、没有交易成本。

表 19.4(100 万条路径的模拟)。

再平衡间隔(周) 5 4 2 1 0.5 0.25
绩效 0.42 0.38 0.28 0.21 0.16 0.13

delta 对冲远远优于止损,并且随再平衡频率提高而稳步改善。规律是:间隔减半,绩效指标约缩小到 \(1/\sqrt2\)(0.21 → 0.16 → 0.13 附近)。原因是每个再平衡区间内的对冲误差主要来自 \(\frac12\Gamma(\Delta S)^2\) 与其期望之差(第 19b 章),单期误差的方差与 \(\Delta t^2\) 同阶,\(n=T/\Delta t\) 期累加后总方差与 \(\Delta t\) 同阶,标准差与 \(\sqrt{\Delta t}\) 同阶。

delta 对冲让头寸价值尽量保持不变。 以表 19.2 第 9 周为例:期权价值升到 414,500,期权空头亏了 174,500;现金头寸(累计成本)比第 0 周差 1,442,900;股票市值从 2,557,800 增到 4,171,100。三者合计,净变化只有 4,100 美元。

成本从哪里来

delta 对冲本质上合成了一份期权多头,用来中和卖出的期权空头。观察表 19.2:股价下跌后 delta 降低,要卖股;股价上涨后 delta 升高,要买股。对冲期权空头意味着跌了卖、涨了买——"高买低卖"。24 万美元的平均成本,正是这些买入价与卖出价之差的现值。

这给了我们一个看期权价格的新角度:期权价格 = 在 BSM 世界里复制该期权、不断"高买低卖"的期望成本。

推导拆解:为什么每次再平衡都"高买低卖",而期望总成本又恰好等于 BSM 价格?考虑一个再平衡区间,持股 \(\Delta\) 股,期权空头。股价变动 \(\delta S\) 时,用泰勒展开(时间项先略去): 期权空头损益 \(\approx-\Delta\,\delta S-\tfrac12\Gamma(\delta S)^2\),股票损益 \(=\Delta\,\delta S\),合计 \(\approx-\tfrac12\Gamma(\delta S)^2\)。 对看涨期权 \(\Gamma>0\),所以无论股价涨还是跌,对冲组合都小亏一点(股价涨,期权涨得比股票多;股价跌,期权跌得比股票少)。这个小亏就是"高买低卖"的会计表达:跌了以后你按较低价格卖出股票、涨了以后按较高价格买入。 但同时,期权空头随时间流逝赚取 theta(\(-\Theta\,\delta t>0\)),再加上资金利息。第 15a 章的 PDE 保证:在期望上,theta 收入正好抵消 \(\tfrac12\Gamma\sigma^2S^2\delta t\) 的凸性损失。卖期权的人收到的期权费,就是预付的这笔"高买低卖"损耗。第 19b 章会把这一关系写成 \(\Theta+\tfrac12\sigma^2S^2\Gamma=r\Pi\)。

金融直觉:这与持有负凸性债券(如 MBS)后用国债期货做久期对冲完全一样。负凸性意味着收益率下降时久期变短、上升时久期变长,你的对冲调整总是"追涨杀跌",每次收益率大幅波动都会亏一点。MBS 投资者因此要求更高的利差作为补偿;期权卖方收取期权费作为补偿。利率波动越大,MBS 的对冲损耗越大;股价波动越大,期权越贵。波动率越大,股价来回摆动越厉害,高买低卖的损耗越大,期权就越贵。

组合的 delta

依赖于单一资产价格 \(S\) 的组合,其 delta 为 \(\partial\Pi/\partial S\)。若组合由 \(w_i\) 份期权 \(i\) 构成,则

\[\Delta=\sum_i w_i\Delta_i .\]

例 某机构持有:(1) 10 万份 3 个月期、执行价 55 的看涨多头,delta 0.533;(2) 20 万份 5 个月期、执行价 56 的看涨空头,delta 0.468;(3) 5 万份 2 个月期、执行价 56 的看跌空头,delta −0.508。 组合 delta \(=100{,}000\times0.533-200{,}000\times0.468-50{,}000\times(-0.508)=-14{,}900\)。买入 14,900 股即可使组合 delta 中性。

交易成本

交易商通常每天再平衡一次。期权数量少时,买卖价差使每天再平衡的代价太高;但对大型组合来说是可行的:不论组合里有多少期权,只需在标的上做一笔交易就能使整个组合 delta 归零,价差成本被众多期权交易的利润吸收。这是衍生品交易存在规模经济的原因之一。


远期与期货的 delta

(对应原书 19.12 节后半部分。)

远期。 不付息股票远期多头的价值为 \(S_0-Ke^{-rT}\)(式 5.5)。股价变动 \(\Delta S\),远期价值也变动 \(\Delta S\),所以 1 股远期多头的 delta 恒为 1.0:远期多头可卖空 1 股对冲,远期空头可买入 1 股对冲。这是一个静态的"hedge-and-forget"对冲,无须调整。对收益率为 \(q\) 的资产,远期的 delta 为 \(e^{-qT}\)(式 5.7);股指远期取 \(q\) 为股息率,外汇远期取 \(q=r_f\)。

期货。 不付息股票的期货价格为 \(S_0e^{rT}\),股价变动 \(\Delta S\) 时期货价格变动 \(\Delta Se^{rT}\)。由于逐日结算,期货多头几乎立即获得这笔收益,所以期货的 delta 为 \(e^{rT}\);收益率为 \(q\) 的资产为 \(e^{(r-q)T}\)。可见,即使利率恒定、远期价格等于期货价格,逐日结算也让期货与远期的 delta 略有不同。

白话解释:期货 delta 为 \(e^{rT}\) 而不是 1 的原因:期货价格 \(F=Se^{rT}\),股价动 1 元,期货价格动 \(e^{rT}\) 元,而逐日结算让这笔差额当天就进账。远期也一样随股价动 \(e^{rT}\),但这笔钱要到 \(T\) 才结算,贴现回今天又变成 1。所以用期货对冲时,期货份数要比现货少一个因子 \(e^{-rT}\),即 (19.5)。这和固定收益里"用期货对冲时要按转换因子和久期比例调整合约数"是同类问题:找对两种工具之间的敏感度比例。

用期货做 delta 对冲。 设 \(T\) 为期货的期限,\(H_A\) 为所需的标的资产头寸,则等价的期货头寸为

\[H_F=e^{-rT}H_A\quad(\text{不付息股票})\tag{19.5}\]
\[H_F=e^{-(r-q)T}H_A\quad(\text{收益率 }q)\tag{19.6}\]
\[H_F=e^{-(r-r_f)T}H_A\quad(\text{货币})\tag{19.7}\]

例 19.8 一家美国银行的货币期权组合可以通过卖空 458,000 英镑实现 delta 中性;美国利率 4%,英国利率 7%。改用 9 个月期货:空头 \(e^{-(0.04-0.07)\times0.75}\times458{,}000\approx468{,}422\) 英镑(原书给出 468,442,按公式计算为 468,422,差异可忽略)。每份期货 62,500 英镑,\(468{,}422/62{,}500=7.49\),原书取整为卖空 7 份。


19.13 组合保险与合成期权

合成期权

基金经理常常希望为持有的组合买一份看跌期权:防范下跌,又保留上涨潜力。办法有二:一是直接买指数看跌期权(第 17.1 节);二是合成一份看跌期权。

**合成期权(synthetic option)**就是持有标的资产(或其期货)的一个头寸,使其 delta 等于所需期权的 delta,并随时间调整。合成某个期权与对冲它是互逆的:对冲一份期权空头,就是合成一份同样的期权多头。

为什么要合成而不直接购买?一是期权市场的流动性往往不足以吸收大基金的交易;二是基金经理需要的执行价、到期日常常与交易所期权不同。

用组合本身合成

组合欧式看跌期权的 delta(第 19b 章表 19.6)为

\[\Delta=e^{-qT}[N(d_1)-1],\qquad d_1=\frac{\ln(S_0/K)+(r-q+\sigma^2/2)T}{\sigma\sqrt T}\tag{19.8}\]

\(S_0\) 为组合价值,\(q\) 为组合股息率,\(\sigma\) 为组合波动率(通常可取 beta × 分散化市场指数的波动率),\(T\) 为期限。合成"组合 + 看跌期权"意味着:任何时刻应卖出原组合的比例为 \(e^{-qT}[1-N(d_1)]\),所得投资于无风险资产。

推导拆解:为什么是"卖出 \(e^{-qT}[1-N(d_1)]\)"?目标头寸是"组合 + 看跌期权",它对组合价值的 delta 是 \(1+\Delta_{\text{put}}=1+e^{-qT}[N(d_1)-1]=1-e^{-qT}[1-N(d_1)]\)。原来持有整个组合,delta 是 1。要把 delta 降到目标值,就得卖出 \(e^{-qT}[1-N(d_1)]\) 比例的组合,换成无风险资产(无风险资产 delta 为 0)。例 19.9 中这个比例是 32.15%,即"组合 + 保险"的整体 delta 只有约 0.68。

组合下跌时,看跌 delta 更负,卖出比例增加;组合上涨时,卖出比例减少,要买回一部分。资金在股票和无风险资产之间来回调配:股票涨了就卖无风险资产加仓股票,跌了就减仓股票买无风险资产。保险的成本来自总是在下跌后卖、上涨后买——又是"高买低卖"。

例 19.9 组合价值 9,000 万美元,经理需要 6 个月期、执行价 8,700 万的欧式看跌期权保护;\(r=9\%\),\(q=3\%\),\(\sigma=25\%\);标普 500 为 900,组合紧密跟踪标普 500。 方法一:买 1,000 份执行价 870 的标普 500 看跌合约(每份 100 倍指数)。 方法二:合成。\(S_0=90\),\(K=87\)(百万),\(T=0.5\): \(d_1=\dfrac{\ln(90/87)+(0.09-0.03+0.03125)\times0.5}{0.25\sqrt{0.5}}=0.4499\),delta \(=e^{-0.015}[N(0.4499)-1]=-0.3215\)。 初始应卖出 32.15% 的组合投入无风险资产。一天后若组合跌到 8,800 万,delta 变为 −0.3679,再卖出 4.64%;若涨到 9,200 万,delta 变为 −0.2787,买回 4.28%。

用指数期货

指数期货的交易成本一般低于成分股,所以更常用期货来合成。由 (19.6) 和 (19.8),卖空期货的美元金额占组合价值的比例为

\[e^{-qT}e^{-(r-q)T^*}[1-N(d_1)]=e^{q(T^*-T)}e^{-rT^*}[1-N(d_1)],\]

\(T^*\) 为期货的期限。若组合价值为 \(A_1\) 倍指数,每份期货为 \(A_2\) 倍指数,则卖空期货份数为 \(e^{q(T^*-T)}e^{-rT^*}[1-N(d_1)]A_1/A_2\)。

例 19.10 接例 19.9,用 9 个月标普 500 期货:\(T=0.5\),\(T^*=0.75\),\(A_1=100{,}000\),\(A_2=250\),\(d_1=0.4499\),应卖空 122.96 ≈ 123 份,并随时间和指数变化调整。

组合不跟踪指数时:(a) 计算组合 beta;(b) 求能提供所需保护的指数期权头寸——执行价是组合达到保险价值时指数的预期水平(17.1 节的 CAPM 映射),期权份数是 beta = 1 时的 beta 倍;(c) 用指数期货合成这些期权。


19.14 股市波动率与 1987 年股灾

组合保险可能加剧市场波动:市场下跌时它要求卖出股票或卖空指数期货,前者直接压低指数,后者通过指数套利(第 5 章)把期货抛压传导到现货;市场上涨时则要求买入,可能加剧上涨。很多投资者有意或无意地遵循着类似规则(例如"跌了就卖以限制损失")。这些交易是否影响波动,取决于市场吸收它们的能力:占比很小时没有影响;若组合保险非常流行,就可能破坏市场稳定。

Business Snapshot 19.2 组合保险是 1987 年股灾的罪魁吗? 1987 年 10 月 19 日(周一),道指下跌逾 20%。当时有 600–900 亿美元的股票资产受合成看跌的组合保险规则约束。10 月 14–16 日(周三到周五)市场已下跌约 10%,且多集中在周五下午;按规则这应引发至少 120 亿美元的股票或指数期货卖出,实际只卖出约 40 亿,周一开盘前积压了巨量待卖指令。估计 10 月 19 日三家组合保险机构的卖出程序占纽交所卖出量的近 10%,组合保险卖出占指数期货市场全部卖出量的 21.3%。其他投资者预期到组合保险机构会大量抛售,也抢先卖出,可能加剧了下跌。市场跌得太快,交易系统超载,许多保险机构根本无法执行模型要求的交易,也就没有得到所需的保护。此后组合保险大幅降温。 教训:当很多市场参与者都在做同一件事时,执行某个交易策略——哪怕是对冲策略——也是危险的。

对量化交易者,这个教训有现代版本:动态对冲、波动率目标、风险平价、CPPI 等规则化策略都是"跌了卖、涨了买"或与之相关的顺周期交易;做市商的 gamma 敞口(第 19b 章)同样会在市场中放大或抑制波动。拥挤交易与流动性枯竭叠加,是这类策略最大的尾部风险。


量化实战一:用蒙特卡洛复现表 19.1 与表 19.4

对冲规则的回测框架。 原书表 19.1、19.4 的模拟框架可以复用来回测任何对冲规则:在真实世界测度(这里 \(\mu=13\%\))下生成股价路径,按规则在每个观察时刻调整持股,记录现金流,统计成本的均值和标准差。下面的代码复现了这两张表,同时计算了组合 delta、例 19.8 的期货对冲和例 19.9、19.10 的合成看跌。

注意两种成本口径:原书的绩效指标按不计利息的累计成本计算(我们按此口径复现了原书数字);若把每笔现金流按无风险利率贴现到今天,delta 对冲成本的均值就收敛到 BSM 价格 2.40——即使真实世界的期望收益是 13% 而不是 5%。这正是"风险中性定价的结果在真实世界同样成立"的数值证据。

import numpy as np
from scipy.stats import norm

def bs_call(S, K, tau, r, sig):
    tau = np.maximum(tau, 1e-12)
    d1 = (np.log(S / K) + (r + 0.5 * sig**2) * tau) / (sig * np.sqrt(tau))
    return S * norm.cdf(d1) - K * np.exp(-r * tau) * norm.cdf(d1 - sig * np.sqrt(tau)), norm.cdf(d1)

# 原书 19.1 节的例子:卖出 10 万份 20 周欧式看涨
S0, K, r, sig, mu, T = 49.0, 50.0, 0.05, 0.20, 0.13, 20 / 52
c0, delta0 = bs_call(S0, K, T, r, sig)
print(f"BSM 价格={c0:.4f}/股(10 万股 {c0*1e5:,.0f} 美元),Delta={delta0:.3f}")

def hedge_costs(S, t, rule):
    """给定路径与持股规则,返回 (未贴现累计成本, 贴现到 0 时刻的成本)。
    成本 = 买股支出 - 卖股收入 - 到期被行权时收到的执行价。"""
    hold = rule(S, t)
    trade = np.diff(np.c_[np.zeros(len(S)), hold], axis=1)        # 每个观察时刻的买卖股数
    exercised = S[:, -1] > K
    out = []
    for disc in (np.ones_like(t), np.exp(-r * t)):
        cost = (trade * S * disc).sum(axis=1) - np.where(exercised, K * disc[-1], 0.0)
        out.append(cost)
    return out

def stop_loss(S, t):        # 观察时刻股价在 K 之上就持股 1 股,在 K 之下就不持股
    return (S > K).astype(float)

def delta_rule(S, t):       # 观察时刻持股 N(d1),到期时持股 = 是否被行权
    _, D = bs_call(S[:, :-1], K, T - t[:-1], r, sig)
    return np.c_[D, (S[:, -1] > K).astype(float)]

def simulate(dt_weeks, n_paths=100_000, seed=0):
    """真实世界(mu=13%)下模拟股价路径。"""
    rng = np.random.default_rng(seed)
    n = int(round(20 / dt_weeks)); dt = T / n
    t = np.arange(n + 1) * dt
    z = rng.standard_normal((n_paths, n))
    S = S0 * np.exp(np.cumsum(np.c_[np.zeros(n_paths), (mu - 0.5*sig**2)*dt + sig*np.sqrt(dt)*z], axis=1))
    return S, t

print("间隔(周) | 止损: 绩效 | Delta对冲: 绩效  成本现值均值")
for w in (5, 4, 2, 1, 0.5, 0.25):
    S, t = simulate(w)
    sl_raw, _ = hedge_costs(S, t, stop_loss)
    dh_raw, dh_pv = hedge_costs(S, t, delta_rule)
    # 绩效 = 对冲成本标准差 / BSM 价格(按原书口径,成本不计利息)
    print(f"{w:>7}  |     {sl_raw.std()/c0:5.2f}  |       {dh_raw.std()/c0:5.2f}       {dh_pv.mean():.3f}")

# ---- 组合的 delta(19.4 节例)----
port_delta = 100_000 * 0.533 - 200_000 * 0.468 - 50_000 * (-0.508)
print(f"组合 delta = {port_delta:,.0f},需买入 {-port_delta:,.0f} 股")

# ---- 例 19.8:用 9 个月货币期货替代现货做 delta 对冲 ----
HA = -458_000
HF = np.exp(-(0.04 - 0.07) * 0.75) * HA
print(f"期货头寸 {HF:,.0f} 英镑 ≈ {HF/62_500:.2f} 份合约")

# ---- 例 19.9 / 19.10:合成看跌做组合保险 ----
def put_delta(S, K, T, r, q, sig):
    d1 = (np.log(S / K) + (r - q + 0.5 * sig**2) * T) / (sig * np.sqrt(T))
    return np.exp(-q * T) * (norm.cdf(d1) - 1), d1
for V in (90, 88, 92):
    dlt, d1 = put_delta(V, 87, 0.5, 0.09, 0.03, 0.25)
    print(f"组合 {V} 百万: d1={d1:.4f} 看跌 delta={dlt:.4f} -> 应卖出原组合的 {-dlt:.2%}")
_, d1 = put_delta(90, 87, 0.5, 0.09, 0.03, 0.25)
n_fut = np.exp(0.03 * (0.75 - 0.5)) * np.exp(-0.09 * 0.75) * (1 - norm.cdf(d1)) * 100_000 / 250
print(f"用 9 个月标普 500 期货:卖空 {n_fut:.2f} 份")

关键输出:

BSM 价格=2.4005/股(10 万股 240,053 美元),Delta=0.522
间隔(周) | 止损: 绩效 | Delta对冲: 绩效  成本现值均值
      5  |      0.98  |        0.42       2.425
      4  |      0.93  |        0.38       2.417
      2  |      0.84  |        0.28       2.409
      1  |      0.79  |        0.21       2.403
    0.5  |      0.77  |        0.17       2.403
   0.25  |      0.76  |        0.13       2.401
组合 delta = -14,900,需买入 14,900 股
期货头寸 -468,422 英镑 ≈ -7.49 份合约
组合 90 百万: d1=0.4499 看跌 delta=-0.3215 -> 应卖出原组合的 32.15%
组合 88 百万: d1=0.3227 看跌 delta=-0.3679 -> 应卖出原组合的 36.79%
组合 92 百万: d1=0.5742 看跌 delta=-0.2787 -> 应卖出原组合的 27.87%
用 9 个月标普 500 期货:卖空 122.96 份

两张表几乎逐位复现(止损 2 周一栏为 0.84,原书 0.83,属模拟误差)。delta 对冲的成本现值均值随频率提高收敛到 2.40,而止损的标准差始终在 0.76 以上。合成看跌的数字与例 19.9、19.10 一致。

量化实战二:一条路径上的逐周 delta 对冲(仿表 19.2 格式)

下面用一条模拟路径把对冲过程逐周展开。读者可以对照表 19.2、19.3 观察:股价下跌时卖股、上涨时买股;到期时若虚值,持股降为 0。

import numpy as np
import pandas as pd
from scipy.stats import norm

S0, K, r, sig, mu, T, N = 49.0, 50.0, 0.05, 0.20, 0.13, 20 / 52, 100_000
dt = 1 / 52
rng = np.random.default_rng(5)
S = S0 * np.exp(np.cumsum(np.r_[0, (mu - 0.5*sig**2)*dt + sig*np.sqrt(dt)*rng.standard_normal(20)]))

rows, shares, cum = [], 0.0, 0.0           # cum: 累计成本(含利息),单位千美元
for w in range(21):
    tau = T - w * dt
    if w < 20:
        d1 = (np.log(S[w]/K) + (r + 0.5*sig**2)*tau) / (sig*np.sqrt(tau)); delta = norm.cdf(d1)
    else:
        delta = 1.0 if S[w] > K else 0.0
    buy = round(delta * N) - shares
    cum += buy * S[w] / 1000
    rows.append([w, S[w], delta, int(buy), buy * S[w] / 1000, cum, cum * (np.exp(r*dt) - 1) if w < 20 else 0.0])
    shares += buy
    cum *= np.exp(r * dt) if w < 20 else 1.0
df = pd.DataFrame(rows, columns=["周", "股价", "Delta", "买入股数", "买入成本(千)", "累计成本含息(千)", "本周利息(千)"])
print(df.round({"股价": 2, "Delta": 3, "买入成本(千)": 1, "累计成本含息(千)": 1, "本周利息(千)": 1}).to_string(index=False))
final = cum - (K * N / 1000 if S[-1] > K else 0.0)
print(f"到期{'实值,交割收到 5,000 千' if S[-1] > K else '虚值'};对冲净成本 {final:.1f} 千美元,"
      f"贴现到今天 {final*np.exp(-r*T):.1f} 千美元(BSM 价格 240.1 千)")

关键输出:

 周    股价  Delta   买入股数  买入成本(千)  累计成本含息(千)  本周利息(千)
 0 49.00  0.522  52160   2555.8     2555.8      2.5
 1 48.02  0.451  -7016   -336.9     2221.4      2.1
 2 46.39  0.333 -11820   -548.3     1675.2      1.6
 3 46.17  0.310  -2364   -109.1     1567.6      1.5
 4 46.81  0.344   3489    163.3     1732.5      1.7
 5 48.41  0.455  11057    535.3     2269.4      2.2
 6 48.66  0.468   1302     63.4     2334.9      2.2
 7 48.02  0.410  -5854   -281.1     2056.1      2.0
 8 47.09  0.324  -8556   -402.9     1655.2      1.6
 9 48.18  0.404   8011    385.9     2042.7      2.0
10 50.52  0.607  20275   1024.3     3068.9      3.0
11 51.01  0.650   4339    221.3     3293.2      3.2
12 49.40  0.493 -15697   -775.4     2521.0      2.4
13 48.21  0.356 -13748   -662.7     1860.7      1.8
14 50.50  0.605  24877   1256.3     3118.7      3.0
15 50.89  0.653   4850    246.8     3368.6      3.2
16 48.61  0.340 -31294  -1521.1     1850.7      1.8
17 48.60  0.306  -3447   -167.5     1684.9      1.6
18 47.15  0.077 -22862  -1078.0      608.5      0.6
19 46.44  0.004  -7259   -337.1      272.0      0.3
20 45.91  0.000   -443    -20.3      252.0      0.0
到期虚值;对冲净成本 252.0 千美元,贴现到今天 247.2 千美元(BSM 价格 240.1 千)

这条路径上股价反复在 50 附近穿越(第 10、14 周两度回到 50 以上又跌回),每次穿越都要"高买低卖",对冲成本贴现后为 24.7 万,略高于 BSM 的 24.0 万;换一条平稳的路径,成本可能低于 24.0 万。这些偏差的离散程度就是表 19.4 里每周再平衡对应的 0.21。

在实盘中,还需要在这个框架里加入:买卖价差和佣金(它们使最优再平衡频率有限,常用的做法是设"delta 容忍带",偏离超过阈值才交易)、隐含波动率与实现波动率的差异(第 19b 章 gamma 盈亏)、以及标的跳空。


本章小结

裸露头寸和有保护头寸的对冲成本可能从 0 到远超期权价格;止损策略表面上成本等于内在价值,实际上因为无法恰在 \(K\) 买卖而失败,对冲绩效始终高于 0.7。delta 是期权价格对标的价格的斜率,欧式看涨为 \(N(d_1)\)(含收益率时乘 \(e^{-qT}\)),看跌为 \(N(d_1)-1\)。delta 对冲建立 delta 中性头寸并定期再平衡,再平衡越频繁对冲误差越小(误差约与 \(\sqrt{\Delta t}\) 成正比),对冲成本的期望现值等于 BSM 价格;其成本来自"跌了卖、涨了买"。远期的 delta 为 \(e^{-qT}\)、期货为 \(e^{(r-q)T}\),用期货代替现货时头寸为 \(H_F=e^{-(r-q)T}H_A\)。合成期权与对冲期权互逆,组合保险可通过动态卖出 \(e^{-qT}[1-N(d_1)]\) 比例的组合或卖空指数期货实现;当大量参与者同时执行时,它会加剧下跌并可能失灵,1987 年 10 月 19 日就是例证。

概念 公式 / 要点
Delta \(\Delta=\partial\Pi/\partial S\)
欧式看涨 / 看跌 delta \(e^{-qT}N(d_1)\) / \(e^{-qT}[N(d_1)-1]\)
组合 delta \(\sum_iw_i\Delta_i\),买入 \(-\Delta\) 单位标的即 delta 中性
对冲绩效 对冲成本标准差 / BSM 价格;止损 ≥0.76,delta 对冲每周 0.21
误差规律 对冲误差标准差 \(\propto\sqrt{\Delta t}\)
成本来源 对冲空头期权 = 跌卖涨买
远期 / 期货 delta \(e^{-qT}\) / \(e^{(r-q)T}\)
期货替代现货 \(H_F=e^{-(r-q)T}H_A\)
合成看跌 卖出组合比例 \(e^{-qT}[1-N(d_1)]\)
期货合成 卖空份数 \(e^{q(T^*-T)}e^{-rT^*}[1-N(d_1)]A_1/A_2\)

练习

基础

  1. 解释止损策略为什么不是好的对冲。 提示:无法恰在 \(K\) 买卖,\(\epsilon\to0\) 时交易次数趋于无穷(原书习题 19.1)。
  2. 某看涨期权 delta 为 0.7,这意味着什么?若卖出 1,000 份,如何使头寸 delta 中性? 提示:股价小幅变动 \(\Delta S\),期权价变 \(0.7\Delta S\);买入 700 股(原书习题 19.2)。
  3. 求不付息股票 6 个月期平值欧式看涨的 delta,\(r=10\%\),\(\sigma=25\%\)。 提示:\(d_1=(0.10+0.03125)\times0.5/(0.25\sqrt{0.5})=0.3712\),\(N(d_1)=0.645\)(原书习题 19.3)。
  4. "合成一份期权"与"对冲一份期权"有什么关系? 提示:对冲期权空头 = 合成期权多头(原书习题 19.6)。
  5. 外汇期权组合需要卖空 100 万欧元才 delta 中性,\(r=3\%\),\(r_f=1\%\)。若改用 6 个月欧元期货(每份 12.5 万欧元),应卖空多少份? 提示:\(H_F=e^{-(0.03-0.01)\times0.5}\times1{,}000{,}000=990{,}050\),约 7.9 份,取 8 份。

进阶

  1. 某股票价格要么平稳上涨,要么剧烈震荡后回到同一水平。对一个合成看跌期权的基金经理,哪种情形保险更贵? 提示:剧烈震荡——高买低卖次数多(原书习题 19.9)。
  2. 用 simulate 和 hedge_costs 函数,把真实世界的 \(\mu\) 改为 \(-10\%\) 和 \(30\%\),观察 delta 对冲成本现值的均值和标准差。说明结论。 提示:均值仍收敛到 BSM 价格;标准差略有变化——\(\mu\) 影响路径分布,从而影响对冲误差的分布,但不影响期望成本。
  3. 在模拟中加入交易成本:每次买卖支付成交金额的 0.1%。比较每周与每天再平衡的总成本(均值 + 标准差),讨论最优频率。 提示:频率越高,对冲误差越小但交易成本越大;最优频率取决于风险厌恶程度,参见 Leland (1985) 用调整波动率吸收交易成本的思路。
  4. 一个 700 亿美元的资产池执行合成看跌(\(r\)、\(q\)、\(\sigma\) 自定),若市场单日下跌 23%,模型要求卖出多少?对比当天纽交所的成交额,讨论可执行性。 提示:在新股价下重算 \(e^{-qT}[1-N(d_1)]\) 的变化乘以资产规模(原书习题 19.20)。
  5. 组合保险的四种实现方式:买指数看跌;买指数看涨 + 无风险资产;把部分组合转为无风险资产;卖空指数期货。对一个 beta=1.5 的组合,说明每种方式的具体头寸如何确定。 提示:原书习题 19.16、19.17;执行价按 CAPM 映射,期权份数乘以 beta,合成时 \(\sigma\) 取 beta × 指数波动率。

原书推荐习题:19.1、19.8(止损策略及其期望交易次数);19.2、19.3(delta 的含义与计算);19.10、19.11(用不同期限的期货对冲 delta);19.16、19.17(组合保险的四种实现);19.20(大规模组合保险的卖压);19.30(复现表 19.2 的动态对冲)。


原书对照

本章小节 原书章节 PDF 页码
导言、19.1 示例 Chapter 19 introduction; 19.1 Illustration p.422–423
19.2 裸露与有保护头寸 19.2 Naked and Covered Positions p.423
19.3 止损策略 19.3 A Stop-Loss Strategy(表 19.1) p.423–425
19.4 Delta 对冲 19.4 Delta Hedging(表 19.2–19.4) p.425–432
远期与期货的 delta 19.12 Extension of Formulas(后半) p.443–444
19.13 组合保险 19.13 Portfolio Insurance p.445–447
19.14 股市波动率 19.14 Stock Market Volatility(Business Snapshot 19.2) p.447
小结与习题 Summary, Practice Questions p.447–452

希腊字母 theta、gamma、vega、rho 及其关系、对冲的现实与情景分析见第 19b 章。延伸阅读:Passarelli《Trading Option Greeks》;Taleb《Dynamic Hedging》。