第 18 章 期货期权与 Black 模型
到目前为止讨论的期权,行权时立即买卖标的资产本身,称为现货期权(spot options / options on spot)。本章讨论期货期权(futures options / options on futures):行权时持有人得到的是一个期货头寸。美国商品期货交易委员会(CFTC)1982 年试点批准期货期权,1987 年永久批准,此后它迅速成为商品、利率和股指衍生品市场的主力品种。
本章的理论核心可以浓缩成一句话:在风险中性世界里,期货价格是一个零漂移的过程(鞅),因此它的行为就像一只股息率 \(q=r\) 的股票。 有了这句话,第 17 章的所有结果——平价、二叉树、Merton 公式——都可以直接套用,得到 Black (1976) 模型。更重要的是,Black 模型可以为任何欧式现货期权估值,只要知道与期权同时到期的期货(或远期)价格,而且完全不需要估计标的资产的股息或便利收益。这正是交易员偏爱它的原因。
学习目标
- 说明期货期权的行权机制和到期月命名规则,会计算行权收益,了解利率期货期权的报价单位。
- 推导期货期权的看涨-看跌平价与价格界限。
- 用一步和多步二叉树为期货期权定价,理解 \(p=(1-d)/(u-d)\) 的来源。
- 证明风险中性世界中期货价格的期望漂移为零,写出对应的 PDE。
- 掌握 Black 模型,并会用它为欧式现货期权定价。
- 比较美式期货期权与美式现货期权,理解期货式期权的定价。
读前导读
这一章在解决什么问题
CFA 里你学过期货的逐日盯市:进入期货不花钱,每天按价格变化结算盈亏。这一章抓住的正是"进入期货不花钱"这一点:既然持有期货的成本是零,在风险中性世界里它的期望收益也必须是零,所以期货价格没有漂移。把它代入第 17 章的框架,等于令持有收益 \(q=r\)(融资成本与持有收益恰好抵消),得到 Black (1976) 模型。
Black 模型的价值远超期货期权本身:只要知道与期权同时到期的期货或远期价格,任何欧式期权——商品、外汇、股指、甚至利率(第 29 章的利率上限、互换期权)——都可以用同一个公式定价,而不必关心股息、便利收益、仓储成本这些难以观测的量。它们全都已经体现在远期价格里了。对熟悉固定收益的读者,可以这样理解:Black 模型之于期权,就像"用远期利率定价远期利率协议"一样,只需要远期价格这一个输入。
需要先想起来的数学
1. 期望的迭代性质(塔性质)。 \(E[E(X\mid Y)]=E(X)\):先在已知部分信息的条件下求期望,再对这部分信息求期望,等于直接求期望。例:明天期货价格的期望是今天的价格,后天价格在明天条件下的期望是明天的价格,那么今天看后天的期望也是今天的价格。见 第 00 册第 07 章 概率中的分析工具。
2. 鞅。 一个随机过程若"给定今天的信息,未来任意时刻的期望值等于今天的值",就叫鞅(martingale)。直观地说,它是一场公平赌局:没有可预测的涨跌趋势。期货价格在风险中性世界里是鞅;股票价格不是(它的期望增长率为 \(r\)),但"股价 / 银行账户"是鞅。见 第 00 册第 07 章 概率中的分析工具(条件期望),正式定义在本册第 28 章。
3. 一步二叉树复制。 用 \(\Delta\) 份标的加现金复制期权,\(\Delta=(f_u-f_d)/(S_u-S_d)\)。本章唯一的变化是:标的是期货,买入期货不花钱,所以组合今天的价值只有期权本身。
4. 偏导数与 PDE。 第 15a 章的 BSM 方程中,一阶项 \(rSf_S\) 来自持有标的的融资成本。期货不需要融资,这一项就消失了。
怎么读这一章
必读:18.4(平价)、18.6(二叉树中 \(p=(1-d)/(u-d)\) 的来源)、18.7(期货价格零漂移的证明)、18.8(Black 模型及其用于现货期权)。18.1 的合约细节和报价单位对实盘很重要,但概念上可以快速浏览。18.9、18.10 第一次可以只看结论。
18.1 期货期权的性质
期货期权是在某日期之前以某个期货价格进入期货合约的权利(不是义务)。看涨期货期权是建立期货多头的权利,看跌期货期权是建立期货空头的权利。交易所交易的期货期权通常是美式的。
行权机制。 看涨期权行权时,持有人得到标的期货的多头头寸,外加现金 = 最近结算的期货价格 − 执行价;看跌期权行权时,持有人得到期货空头,外加现金 = 执行价 − 最近结算期货价格。由于期货头寸本身价值为零(可立即按当前价平仓),持有人的有效收益为看涨 \(\max(F-K,0)\)、看跌 \(\max(K-F,0)\),\(F\) 为行权时的期货价格。
例 18.1 8 月 15 日,投资者持有一份 9 月铜期货看涨期权,执行价 320 美分/磅,一份期货 25,000 磅。当前 9 月期货价 331 美分,8 月 14 日收盘结算价 330。 行权得现金 \(25{,}000\times(330-320)\) 美分 = 2,500 美元,外加 9 月期货多头。若立即平仓,再得 \(25{,}000\times(331-330)\) 美分 = 250 美元(上次结算以来的价格变化)。总收益 2,750 美元 = \(25{,}000(F-K)\)。
例 18.2 12 月玉米期货看跌,执行价 600 美分/蒲式耳,一份 5,000 蒲式耳;当前期货价 580,最近结算价 579。 行权得现金 \(5{,}000\times(600-579)\) 美分 = 1,050 美元,外加期货空头;平仓需付 \(5{,}000\times(580-579)\) 美分 = 50 美元,净收益 1,000 美元 = \(5{,}000(K-F)\)。
到期月份
期货期权以标的期货的交割月命名,而不是以期权到期月命名。期权到期日通常在标的期货最后交易日之前不久(例如 CME 国债期货期权在期货交割月前一个月月底之前、至少两个营业日的最后一个周五到期)。例外是 CME 的中间曲线(mid-curve)欧洲美元期权,其标的期货在期权到期后 1 年或 2 年才到期。
美国热门的期货期权合约包括:玉米、大豆、棉花、国际原糖、原油、天然气、黄金、长期国债、中期国债、5 年期国债、30 天联邦基金、欧洲美元、1 年和 2 年 mid-curve 欧洲美元、Euribor、欧洲 Bund、S&P 500。
利率期货期权
美国最活跃的是长期国债期货、中期国债期货和欧洲美元期货的期权(这些期货本身见第 6 章)。
- 国债期货期权(CME):标的是面值 10 万美元国债的期货合约;期权价格以面值百分比报价,精确到 1% 的 1/64。
- 欧洲美元期货期权(CME):期货报价变动 1 个基点(0.01)对应 25 美元盈亏;期权定价中 1 个基点同样代表 25 美元。
利率期货价格随债券价格上涨(即利率下降)而上涨。所以:预期短期利率上升,买欧洲美元期货看跌;预期下降,买看涨。预期长期利率上升,买中/长期国债期货看跌;预期下降,买看涨。
例 18.3 2 月,6 月欧洲美元期货价格 93.82(对应 3 个月利率 6.18%);执行价 94.00 的看涨报价 0.1(10 个基点)。若利率下降约 100 个基点,在期货价 94.78(利率 5.22%)时行权,收益 \(25\times(94.78-94.00)\times100=1{,}950\) 美元;成本 \(10\times25=250\) 美元;利润 1,700 美元。
例 18.4 8 月,12 月国债期货价格 96-09(即 \(96\tfrac{9}{32}=96.28125\)),长期国债收益率约 6.4%。预期收益率下降的投资者买执行价 98 的 12 月看涨,价格 1-04(即 \(1\tfrac{4}{64}=1.0625\%\) 面值)。若长期利率降到 6%、期货价升到 100-00,每 100 美元面值净利 \(100-98-1.0625=0.9375\);合约面值 10 万美元,每份利润 937.50 美元。
注意两种报价的分母不同:国债期货以 1/32 报价,国债期货期权以 1/64 报价。回测或实盘计算盈亏时弄错这类单位是常见事故。
18.2 期货期权为什么流行
- 期货合约在许多情况下比标的资产流动性更好、更容易交易;期货价格可从交易所即时获得,现货价格未必。以国债为例:国债期货市场远比任何单只国债活跃,债券价格则需要向交易商询价。
- 交割期货比交割实物方便得多——交割活牛期货比交割活牛本身容易。
- 期货期权行权通常不会导致标的资产交割,期货大多在交割前平仓,所以期货期权最终多以现金结算,对资金有限的投资者有吸引力。
- 期货和期货期权在同一交易所并列交易,便于对冲、套利和投机,交易成本往往低于现货期权。
18.3 欧式现货期权与期货期权
欧式现货看涨的收益为 \(\max(S_T-K,0)\),欧式期货看涨的收益为 \(\max(F_T-K,0)\),\(F_T\) 是期权到期时的期货价格。若期货与期权同时到期,则 \(F_T=S_T\)(期货到期价格收敛于现货),两者完全等价;看跌同理。
交易所交易的期货期权多为美式,但研究欧式期货期权很有用:其结果可以直接用来为对应的欧式现货期权估值(18.8 节)。
18.4 看涨-看跌平价
考虑两个组合:
- 组合 A:一份欧式看涨期货期权 + 现金 \(Ke^{-rT}\);
- 组合 B:一份欧式看跌期货期权 + 一份期货多头 + 现金 \(F_0e^{-rT}\)。
到期时:A 的现金增长到 \(K\),若 \(F_T>K\) 看涨行权,A 值 \(F_T\),否则值 \(K\),即 A \(=\max(F_T,K)\)。B 的现金增长到 \(F_0\),看跌收益 \(\max(K-F_T,0)\),期货收益 \(F_T-F_0\)(假设期货像远期一样到期才结算),B \(=F_0+(F_T-F_0)+\max(K-F_T,0)=\max(F_T,K)\)。
两组合到期价值相等,欧式期权又不能提前行权,所以今天价值相等。期货合约今天价值为零,于是
白话解释:组合 B 里为什么要放现金 \(F_0e^{-rT}\)?因为期货多头到期只给你 \(F_T-F_0\) 这个差额,不给你 \(F_T\) 本身。要让 B 到期时"相当于持有一单位标的",必须另外备好 \(F_0\) 的现金,今天的成本是 \(F_0e^{-rT}\)。股票平价里的 \(S_0\) 是"今天就拿到一股"的成本;这里的 \(F_0e^{-rT}\) 是"\(T\) 时拿到一单位标的"的成本。
与不付息股票的平价相比,只是把 \(S_0\) 换成了贴现的期货价格 \(F_0e^{-rT}\)。当期货与期权同时到期时,(18.1) 也给出了现货看涨、现货看跌与期货价格之间的关系。
例 18.5 6 个月期现货白银欧式看涨价格 0.56 美元/盎司,执行价 8.50;6 个月白银期货价格 8.00,\(r=10\%\)。 看跌价格 \(=0.56+8.50e^{-0.1\times0.5}-8.00e^{-0.1\times0.5}=1.04\)。
美式期货期权满足(原书习题 18.19)
18.5 期货期权的价格界限
由 (18.1) 和 \(p\ge0\)、\(c\ge0\):
深度实值时欧式期权价格非常接近下界:看涨深度实值时对应的看跌深度虚值,\(p\approx0\),而 \(c\) 与下界之差恰好是 \(p\)。
美式期权可随时行权,所以 \(C\ge\max(F_0-K,0)\),\(P\ge\max(K-F_0,0)\)。利率为正时,美式的下界总是高于欧式的下界(少了贴现因子)——这意味着美式期货期权总有一定的提前行权可能,看涨和看跌都如此。直觉是:深度实值时,提前行权能立即拿到 \(F-K\) 的现金并开始计息,而继续持有只是等待一个期望不变的期货价格。
18.6 用二叉树为期货期权定价
与股票期权的关键区别:进入期货合约不需要前期成本。
一步树例 期货价格 30,一个月后升到 33 或降到 28;一个月期看涨期货期权执行价 29,忽略逐日结算。上升时期权收益 4、期货头寸价值 3;下降时期权收益 0、期货价值 −2。 组合"空 1 份期权 + 多 \(\Delta\) 份期货":上升时值 \(3\Delta-4\),下降时值 \(-2\Delta\),令二者相等得 \(\Delta=0.8\)。一个月后组合值 \(-2\times0.8=-1.6\),\(r=6\%\),今天值 \(-1.6e^{-0.06/12}=-1.592\)。期货今天价值为零,所以期权价值为 1.592。
一般化。 期货价格从 \(F_0\) 升到 \(F_0u\) 或降到 \(F_0d\),期权收益 \(f_u\)、\(f_d\)。无风险组合为空 1 份期权 + 多 \(\Delta=\frac{f_u-f_d}{F_0u-F_0d}\) 份期货。\(T\) 时组合值 \((F_0u-F_0)\Delta-f_u\),今天值等于 \(-f\)(期货价值为零),化简得
验证:\(u=1.1\),\(d=0.9333\),\(p=\frac{1-0.9333}{1.1-0.9333}=0.4\),\(f=e^{-0.06/12}(0.4\times4)=1.592\)。
推导拆解:从组合价值到 (18.6) 的化简如下。组合"空 1 份期权 + 多 \(\Delta\) 份期货"今天价值 \(-f\)(期货不占资金)。\(T\) 时价值(上行情形,下行情形相同)为 \((F_0u-F_0)\Delta-f_u\)。无风险,所以 \(-f=e^{-rT}[(F_0u-F_0)\Delta-f_u]\)。 代入 \(\Delta=\frac{f_u-f_d}{F_0(u-d)}\):\((F_0u-F_0)\Delta=\frac{(u-1)(f_u-f_d)}{u-d}\)。 于是 \(f=e^{-rT}\Big[f_u-\frac{(u-1)(f_u-f_d)}{u-d}\Big]=e^{-rT}\Big[\frac{(1-d)f_u+(u-1)f_d}{u-d}\Big]\)。 令 \(p=\frac{1-d}{u-d}\),则 \(1-p=\frac{u-1}{u-d}\),即得 (18.5)。 和股票树比:股票组合今天要花 \(\Delta S_0\) 买股票,这笔资金按 \(r\) 增长,于是分子出现 \(e^{r\Delta t}\);期货不用花钱,分子就是 1。这个"1"的含义是 \(pF_0u+(1-p)F_0d=F_0\):风险中性下期货价格的期望不变。
和股票的 \(p=(e^{r\Delta t}-d)/(u-d)\) 相比,这里分子中的 \(a\) 变成了 1——期货价格在风险中性世界中不增长。多步树与股票期权完全相同:\(u=e^{\sigma\sqrt{\Delta t}}\),\(\sigma\) 为期货价格波动率,\(p=(1-d)/(u-d)\),美式期权在每个节点比较行权价值与继续持有价值。
18.7 风险中性世界中期货价格的漂移
结论:风险中性世界中,期货价格的行为与股息率 \(q=r\) 的股票相同。
两条线索:期货二叉树的 \(p\) 与 \(q=r\) 时股息率股票的 \(p\) 相同((17.15) 中 \(a=e^{(r-q)\Delta t}=1\));期货期权平价 (18.1) 与股息率股票的平价 (17.3) 在 \(S_0\to F_0\)、\(q=r\) 时相同。
证明。 设结算日为 \(0,\Delta t,2\Delta t,\dots\)。在时刻 0 建立期货多头,价值为零;\(\Delta t\) 时收到 \(F_{\Delta t}-F_0\)。用 \(\Delta t\) 期短期利率 \(r\) 做风险中性定价:
同理 \(\hat E(F_{2\Delta t}\mid F_{\Delta t})=F_{\Delta t}\)……由期望的迭代性质,\(\hat E(F_T)=F_0\) 对任何 \(T\) 成立。所以风险中性世界中期货价格漂移为零;由 (17.7),这相当于 \(q=r\) 的股票。这个结论极其一般,不依赖利率是否随机、波动率是否恒定。
推导拆解:证明的每一步依据。(1) 进入期货的成本为零,所以今天的价值为 0。(2) 期货在 \(\Delta t\) 时结算一次,现金流 \(F_{\Delta t}-F_0\);按风险中性定价,今天价值 = 贴现的风险中性期望。(3) 两者相等,且 \(e^{-r\Delta t}>0\) 可以约去,得到 \(\hat E(F_{\Delta t})=F_0\)。(4) 在 \(\Delta t\) 时重新进入期货(成本仍为 0),同样的论证给出 \(\hat E(F_{2\Delta t}\mid F_{\Delta t})=F_{\Delta t}\)。(5) 对第 (4) 步两边再对 \(F_{\Delta t}\) 取期望,用塔性质得 \(\hat E(F_{2\Delta t})=\hat E(F_{\Delta t})=F_0\),逐步推到 \(T\)。 第 (2) 步中的利率 \(r\) 是 \([0,\Delta t]\) 这一小段的利率,在期初已知,所以即使利率随机,论证也成立——这就是"不依赖利率是否随机"的含义。
金融直觉:为什么零漂移?期货是"零成本的赌约"。如果风险中性下期货价格预期上涨,买入期货就是不花钱、期望赚钱,这在风险中性世界里不可能存在。股票不同:买股票要付 \(S_0\),这笔钱本可以存银行赚 \(r\),所以股票必须预期上涨 \(r\) 才公平。期货没有这笔机会成本,所以期望涨幅是零。
更精确的说法(原书第 28 章):在以货币市场账户为计价单位(numeraire)的传统风险中性世界中,期货价格是一个鞅(martingale)——零漂移过程;而远期价格是以 \(T\) 到期零息债为计价单位的风险中性世界中的鞅。利率确定时二者一致。
通常假设风险中性下期货价格服从
依赖于期货价格的衍生品满足的 PDE(Technical Note 7)是 (17.6) 中令 \(q=r\)、\(S\to F\):
注意它没有一阶项。量化实务的直接推论是:在风险中性蒙特卡洛模拟中,期货价格(以及远期价格)不加漂移——只有 \(-\frac12\sigma^2\) 的对数修正。
18.8 期货期权的 Black 模型
Fischer Black 1976 年首先给出。假设期货价格服从对数正态过程 (18.7),在 Merton 公式 (17.4)(17.5) 中令 \(S_0\to F_0\)、\(q=r\):
\(\sigma\) 是期货价格的波动率。当持有成本和便利收益只是时间的函数时,期货价格波动率等于标的资产波动率。用第 15b 章的对数正态引理看,这只是把 \(E(V)\) 取为 \(\hat E(F_T)=F_0\)。
例 18.6 商品期货欧式看跌,\(T=4/12\),\(F_0=K=20\),\(r=9\%\),\(\sigma=25\%\)。\(\ln(F_0/K)=0\),\(d_1=\sigma\sqrt T/2=0.07216\),\(d_2=-0.07216\);\(N(-d_1)=0.4712\),\(N(-d_2)=0.5288\)。 \(p=e^{-0.09\times4/12}(20\times0.5288-20\times0.4712)=1.12\)。
平值(\(F_0=K\))时,看涨与看跌价格相等——这是平价 (18.1) 的直接结果(原书习题 18.17)。
白话解释:Black 公式里的 \(N(d_1)\)、\(N(d_2)\) 与 BSM 含义相同:\(N(d_2)\) 是风险中性行权概率 \(\hat P(F_T>K)\);\(F_0N(d_1)\) 是"行权时拿到的期货价格"的截断期望。和 BSM 唯一不同的是把 \(e^{-rT}\) 提到了最外面:\(F_0\) 和 \(K\) 都是 \(T\) 时的金额,先在 \(T\) 时算出期望收益 \(F_0N(d_1)-KN(d_2)\),再整体贴现一次。注意 Black 看涨期权对期货价格的 delta 是 \(e^{-rT}N(d_1)\),不是 \(N(d_1)\),对冲时容易弄错。
金融直觉:例 18.7 里的黄金期货价格 1,240 已经包含了现货价格、利率、仓储成本和便利收益的全部信息(\(F_0=S_0e^{(r+u-y)T}\))。如果用 BSM 给现货期权定价,你需要分别估计仓储成本 \(u\) 和便利收益 \(y\),而后者几乎无法直接观测。Black 模型绕过了这一步,这和固定收益里"直接用市场远期曲线,而不是自己推导每个期限的期限溢价"是同一种思路。
用 Black 模型为现货期权估值
18.3 节说过,期权与期货同时到期时,欧式期货期权与欧式现货期权等价。所以 (18.9)(18.10) 可以为欧式现货期权估值。
例 18.7 6 个月期现货黄金欧式看涨,执行价 1,200;6 个月黄金期货价格 1,240,\(r=5\%\),期货价格波动率 20%。等同于 6 个月期货上的 6 个月欧式期权: \(d_1=\dfrac{\ln(1240/1200)+0.04\times0.5/2}{0.2\sqrt{0.5}}=0.3026\),\(d_2=0.1611\),\(c=e^{-0.025}[1240N(d_1)-1200N(d_2)]=88.37\)。
交易员偏好用 Black 模型为欧式现货期权估值,原因是:
- 适用面广:标的可以是消费型或投资型资产,可以有收益也可以没有;\(F_0\) 取与期权同时到期的期货或远期价格即可。(17.13)(17.14) 就是 Black 模型用于货币现货期权,(17.8)(17.9) 是用于指数现货期权。
- 无须估计收益或便利收益:期货/远期价格已经包含了市场对它们的估计。对商品而言,便利收益几乎不可能直接观测,这一点尤其重要。
实务上,像第 17.4 节那样,对有活跃期权的期限用平价反推远期价格,再插值得到其他期限的远期价格,这一方法适用于各种标的。
18.9 美式期货期权与美式现货期权
交易的期货期权通常是美式的。只要 \(r>0\),美式期货期权总有提前行权的可能,所以价值高于对应的欧式期货期权。
即使期货与期权同时到期,美式期货期权一般不等于对应的美式现货期权(执行价、到期日相同):
- 正向市场(normal market):到期前期货价格始终高于现货价格。提前行权时,期货看涨拿到 \(F-K>S-K\),所以美式看涨期货期权 > 美式现货看涨;反之美式看跌期货期权 < 美式现货看跌。
- 反向市场(inverted market):期货价格始终低于现货价格,结论相反。
白话解释:期货与期权同时到期时,到期那一刻 \(F_T=S_T\),所以欧式期货期权与欧式现货期权相同。美式的区别只在提前行权的那一刻:提前行权时,期货期权拿到的是当时的期货价格 \(F_t\),现货期权拿到的是当时的现货价格 \(S_t\),两者此时并不相等。正向市场 \(F_t>S_t\),期货看涨提前行权时拿得更多,所以更值钱;期货看跌则拿得更少,所以更便宜。
当期货比期权晚到期时,差异同样存在,而且期货到期越晚,差异越大。本章代码用同一棵现货树分别对现货价格和对应期货价格行权,演示了这一结论。
18.10 期货式期权
一些交易所(尤其在欧洲)交易期货式期权(futures-style options):以期权收益为标的的期货合约。普通期权的买方前期付现金、卖方收现金;期货式期权则像普通期货一样,双方缴纳保证金、逐日结算,最终结算价为期权收益。期货是对资产未来价格的押注,期货式期权是对期权收益的押注。
利率为常数时,期货式期权的"期货价格"等于以期权收益为标的的远期价格,也就是**延后支付(in arrears)**的期权价格——普通期权价值按无风险利率复利到到期日。由 Black 模型:
它们与利率水平无关。对期货上的期货式期权,\(F_0\) 为标的期货的当前价格;对资产现货的期货式期权,\(F_0\) 为与期权同时到期的期货价格。平价关系为 \(p+F_0=c+K\)。
美式期货式期权可以提前行权,届时按内在价值立即最终结算。期货上的美式期货式期权永远不应提前行权——其期货价格总大于内在价值——可以按对应的欧式期权处理。
量化实战:Black-76 定价引擎与期货期权二叉树
Black-76 是商品期权、利率期货期权以及所有"基于远期价格"的欧式期权的行业标准定价引擎。下面的代码:复现例 18.5、一步树、例 18.6、例 18.7;用二叉树计算美式与欧式期货期权并观察树收敛到 Black 价格;在正向市场中比较美式期货期权和美式现货期权;展示期货式期权价格与利率无关;用蒙特卡洛验证期货价格的鞅性质。
代码中的 tree 函数有一个技巧:对"期货价格"行权的美式期权,可以在现货树上计算,只要行权收益改用节点上的期货价格 \(F_t=S_te^{(r-q)(T-t)}\)。这样同一棵树上就能公平地比较现货期权和期货期权。
import numpy as np
from scipy.stats import norm
def black76(F, K, T, r, sigma, kind="call"):
"""Black (1976) 期货期权 / 基于远期价格的欧式期权定价。"""
d1 = (np.log(F / K) + 0.5 * sigma**2 * T) / (sigma * np.sqrt(T)); d2 = d1 - sigma * np.sqrt(T)
if kind == "call":
return np.exp(-r * T) * (F * norm.cdf(d1) - K * norm.cdf(d2))
return np.exp(-r * T) * (K * norm.cdf(-d2) - F * norm.cdf(-d1))
def tree(X0, K, T, r, q, sigma, n, kind, american=True, payoff_on=None):
"""通用 CRR 树。期货:q=r(p=(1-d)/(u-d))。
payoff_on: 若给定函数 g(X, t),则行权收益用 g 计算(用来对现货树上的'期货价格'行权)。"""
dt = T / n; u = np.exp(sigma * np.sqrt(dt)); d = 1 / u
p = (np.exp((r - q) * dt) - d) / (u - d); disc = np.exp(-r * dt)
sgn = 1 if kind == "call" else -1
g = payoff_on or (lambda X, t: X)
X = X0 * u ** np.arange(n, -1, -1) * d ** np.arange(0, n + 1)
V = np.maximum(sgn * (g(X, T) - K), 0)
for i in range(n - 1, -1, -1):
X = X0 * u ** np.arange(i, -1, -1) * d ** np.arange(0, i + 1)
V = disc * (p * V[:-1] + (1 - p) * V[1:])
if american:
V = np.maximum(V, sgn * (g(X, i * dt) - K))
return V[0]
# ---- 1) 例 18.5:用期货期权平价由看涨求看跌 ----
c, K, F, r, T = 0.56, 8.50, 8.00, 0.10, 0.5
print(f"例18.5 p = {c + K*np.exp(-r*T) - F*np.exp(-r*T):.2f}")
# ---- 2) 一步二叉树:F=30 -> 33 或 28,K=29,r=6%,一个月 ----
u, d = 1.1, 28 / 30
p = (1 - d) / (u - d)
print(f"一步树 p={p:.4f},Delta={(4-0)/(33-28):.2f},期权价值={np.exp(-0.06/12)*(p*4):.3f}")
# ---- 3) 例 18.6、18.7:Black 模型 ----
print(f"例18.6 看跌={black76(20, 20, 4/12, 0.09, 0.25, 'put'):.2f}")
print(f"例18.7 现货黄金看涨(用期货价格)={black76(1240, 1200, 0.5, 0.05, 0.20):.2f}")
# ---- 4) 美式 vs 欧式期货期权(二叉树收敛到 Black)----
for n in (50, 200, 800):
eu = tree(20, 20, 4/12, 0.09, 0.09, 0.25, n, "put", american=False)
am = tree(20, 20, 4/12, 0.09, 0.09, 0.25, n, "put", american=True)
print(f"n={n:3d} 欧式树={eu:.4f} 美式树={am:.4f}")
# ---- 5) 正向市场(期货 > 现货):美式期货期权 vs 美式现货期权 ----
S0, K, T, r, q, sig = 100.0, 100.0, 1.0, 0.08, 0.0, 0.25 # 期货与期权同时到期,F_t = S_t e^{(r-q)(T-t)}
fut = lambda S, t: S * np.exp((r - q) * (T - t))
for kind in ("call", "put"):
on_spot = tree(S0, K, T, r, q, sig, 1000, kind)
on_fut = tree(S0, K, T, r, q, sig, 1000, kind, payoff_on=fut)
eu = tree(S0, K, T, r, q, sig, 1000, kind, american=False)
print(f"{kind:4s}: 美式现货期权={on_spot:.4f} 美式期货期权={on_fut:.4f} 欧式(二者相同)={eu:.4f}")
# ---- 6) 期货式期权:价格 = 普通期权价值复利到到期日,与利率无关 ----
for r in (0.01, 0.05, 0.10):
c = black76(1240, 1200, 0.5, r, 0.20)
print(f"r={r:.2f}: 普通期权={c:.3f} 期货式期权价格 c*e^(rT)={c*np.exp(r*0.5):.3f}")
# ---- 7) 风险中性下期货价格是鞅:dF = sigma F dz,F_T = F0 exp(-sigma^2 T/2 + sigma sqrt(T) Z) ----
rng = np.random.default_rng(18)
F0, sig, T, r = 50.0, 0.3, 2.0, 0.05
FT = F0 * np.exp(-0.5 * sig**2 * T + sig * np.sqrt(T) * rng.standard_normal(1_000_000))
pay = np.exp(-r * T) * np.maximum(FT - 50, 0)
print(f"E[F_T]={FT.mean():.3f}(F0={F0}),MC 看涨={pay.mean():.3f}±{1.96*pay.std()/np.sqrt(pay.size):.3f},Black={black76(50,50,T,r,sig):.3f}")
关键输出:
例18.5 p = 1.04
一步树 p=0.4000,Delta=0.80,期权价值=1.592
例18.6 看跌=1.12
例18.7 现货黄金看涨(用期货价格)=88.37
n= 50 欧式树=1.1111 美式树=1.1185
n=200 欧式树=1.1152 美式树=1.1222
n=800 欧式树=1.1163 美式树=1.1231
call: 美式现货期权=13.8897 美式期货期权=14.2462 欧式(二者相同)=13.8897
put : 美式现货期权=7.0740 美式期货期权=6.3004 欧式(二者相同)=6.2013
r=0.01: 普通期权=90.159 期货式期权价格 c*e^(rT)=90.611
r=0.05: 普通期权=88.374 期货式期权价格 c*e^(rT)=90.611
r=0.10: 普通期权=86.192 期货式期权价格 c*e^(rT)=90.611
E[F_T]=49.995(F0=50.0),MC 看涨=7.604±0.029,Black=7.600
读输出要点:
- 原书数字(1.04、1.592、1.12、88.37)全部复现;欧式树随步数增加收敛到 Black 价格 1.12,美式期货看跌比欧式贵约 0.007——平值、4 个月、利率 9% 时提前行权溢价很小但不为零。
- 正向市场(\(r=8\%>q=0\),期货高于现货)中:美式期货看涨 14.25 > 美式现货看涨 13.89(后者等于欧式,因为不付息股票的美式看涨不提前行权);美式期货看跌 6.30 < 美式现货看跌 7.07。与 18.9 节的结论一致。
- 期货式期权价格在利率 1%、5%、10% 下都是 90.611,而普通期权价格随利率下降。
- 风险中性模拟中 \(E[F_T]\approx F_0\),蒙特卡洛价格与 Black 价格在误差范围内一致。
在回测商品或利率期货期权策略时,这些细节都很关键:用 Black-76 而不是 BSM(标的是期货价格,没有 \(S_0\) 和股息);期货价格模拟不加漂移;美式期货期权要考虑提前行权;合约乘数和报价单位(铜 25,000 磅、欧洲美元 1 基点 25 美元、国债期货期权 1/64)必须与交易所规则一致。
本章小结
期货期权行权时交割标的期货:看涨得到期货多头加"期货价格 − 执行价"的现金,看跌得到期货空头加"执行价 − 期货价格"的现金,有效收益为 \(\max(F-K,0)\) 或 \(\max(K-F,0)\);期权以标的期货交割月命名。风险中性世界中期货价格是鞅,相当于股息率为 \(r\) 的股票,于是平价为 \(c+Ke^{-rT}=p+F_0e^{-rT}\)、二叉树 \(p=(1-d)/(u-d)\)、PDE 没有一阶项,欧式期权由 Black 模型给出。期货与期权同时到期时,欧式期货期权等价于欧式现货期权,所以 Black 模型常用来为现货期权估值,无须估计标的收益。美式期货期权总有提前行权可能;正向市场中美式期货看涨比美式现货看涨贵、看跌便宜,反向市场相反。期货式期权价格与利率无关,期货上的美式期货式期权不会提前行权。
| 概念 | 公式 / 要点 |
|---|---|
| 行权收益 | 看涨 \(\max(F-K,0)\),看跌 \(\max(K-F,0)\) |
| 平价 | \(c+Ke^{-rT}=p+F_0e^{-rT}\) |
| 美式不等式 | \(F_0e^{-rT}-K\le C-P\le F_0-Ke^{-rT}\) |
| 下界 | \(c\ge\max[(F_0-K)e^{-rT},0]\),\(p\ge\max[(K-F_0)e^{-rT},0]\) |
| 二叉树 | \(p=\dfrac{1-d}{u-d}\),\(\Delta=\dfrac{f_u-f_d}{F_0u-F_0d}\) |
| 风险中性过程 | \(dF=\sigma F\,dz\),\(\hat E(F_T)=F_0\) |
| PDE | \(f_t+\frac12\sigma^2F^2f_{FF}=rf\) |
| Black 模型 | \(c=e^{-rT}[F_0N(d_1)-KN(d_2)]\),\(d_1=\dfrac{\ln(F_0/K)+\sigma^2T/2}{\sigma\sqrt T}\) |
| 期货式期权 | 价格 \(F_0N(d_1)-KN(d_2)\),与 \(r\) 无关;平价 \(p+F_0=c+K\) |
练习
基础
- 解释"日元看涨期权"与"日元期货看涨期权"的区别。 提示:前者行权得到日元,后者行权得到日元期货多头和现金差额(原书习题 18.1)。
- 为什么债券期货期权比债券期权交易活跃? 提示:期货流动性好、价格透明、易交割(原书习题 18.2)。
- "期货价格就像一只股息率为 \(q\) 的股票",\(q\) 等于多少?为什么? 提示:\(q=r\),风险中性期望漂移为零(原书习题 18.3)。
- 期货价格 19,4 个月后要么 22 要么 17,执行价 18 的欧式看涨期货期权,\(r=12\%\)。用一步树求价格。 提示:\(u=22/19\),\(d=17/19\),\(p=(1-d)/(u-d)=0.4\),\(c=e^{-0.04}\times0.4\times4=1.537\)(原书习题 18.4)。
- 期货价格 25,执行价 26,\(r=10\%\),\(\sigma=30\%\),\(T=1\),求欧式看涨与看跌期货期权的价格。 提示:\(d_1=0.0193\),\(d_2=-0.2807\),\(c\approx2.32\),\(p\approx3.23\);平价检验 \(c-p=(25-26)e^{-0.1}\)。
进阶
- 9 个月期欧式看涨期货期权价格 2,看跌 2(同执行价 30),\(r=10\%\),期货价格 30.5。是否存在套利? 提示:平价要求 \(c-p=(F_0-K)e^{-rT}=0.464\),实际为 0;买看涨、卖看跌、卖期货(原书习题 18.16 同类)。
- 证明美式期货期权的不等式 (18.2)。 提示:仿照第 11 章美式股票期权不等式的证明,组合中用期货代替股票(原书习题 18.19)。
- 用两步树(每步 3 个月,\(u=1.12\),\(d=0.92\))为执行价 60、期货价格 60、\(r=8\%\) 的 6 个月期欧式和美式看跌期货期权定价,并检验欧式结果满足平价。
提示:\(p=(1-0.92)/(1.12-0.92)=0.4\);美式在下行节点提前行权(原书习题 18.12、18.13 同类,可用
tree函数的思路手算)。 - 用玉米期货期权的报价(多个执行价)反解隐含波动率,你预期会看到什么形状? 提示:多为波动率偏斜/微笑,不是一条水平线(原书习题 18.25,详见第 20 章)。
- 某投资者希望保证 3 个月后一笔 90 天投资的收益率不低于 6.5%。说明如何用欧洲美元期货期权实现,并计算所需执行价。 提示:利率下降对应期货价格上升,所以要买看涨期货期权;执行价 \(100-6.5=93.50\)(原书习题 18.21)。
原书推荐习题:18.12、18.13(两步树、平价与提前行权);18.16(平价违背的套利);18.19(美式期货期权平价不等式);18.25(真实报价的隐含波动率与偏斜);18.28(Black 模型与期货式期权);18.21(利率期货期权套保设计)。
原书对照
| 本章小节 | 原书章节 | PDF 页码 |
|---|---|---|
| 18.1 期货期权的性质 | 18.1 Nature of Futures Options(含例 18.1–18.4) | p.406–409 |
| 18.2 流行原因 | 18.2 Reasons for the Popularity of Futures Options | p.409 |
| 18.3 现货期权与期货期权 | 18.3 European Spot and Futures Options | p.409–410 |
| 18.4 平价 | 18.4 Put–Call Parity | p.410–411 |
| 18.5 价格界限 | 18.5 Bounds for Futures Options | p.411–412 |
| 18.6 二叉树 | 18.6 Valuation Using Binomial Trees | p.412–414 |
| 18.7 风险中性漂移 | 18.7 Drift of a Futures Price in a Risk-Neutral World | p.414–415 |
| 18.8 Black 模型 | 18.8 Black's Model for Valuing Futures Options | p.415–417 |
| 18.9 美式期货期权 vs 美式现货期权 | 18.9 American Futures Options vs. American Spot Options | p.417 |
| 18.10 期货式期权 | 18.10 Futures-Style Options | p.417–418 |
| 小结与习题 | Summary, Further Reading, Practice Questions | p.418–421 |
延伸阅读:Black, F. (1976), "The Pricing of Commodity Contracts," Journal of Financial Economics.