第 21a 章 数值方法之一:二叉树与三叉树
BSM 公式只给出了欧式期权的解析价格。实务中大量衍生品没有解析解:美式期权、带离散股息的期权、路径依赖期权、依赖多个标的的期权。原书第 21 章介绍三类基本数值方法来为它们估值:
| 方法 | 计算方向 | 擅长 | 不擅长 |
|---|---|---|---|
| 树(trees) | 从到期日向后倒推 | 美式期权等需要在到期前做决策的衍生品 | 路径依赖;三个以上标的变量 |
| 蒙特卡洛模拟(Monte Carlo simulation) | 从今天向前模拟 | 路径依赖收益;多个标的变量 | 提前行权 |
| 有限差分法(finite difference methods) | 从到期日向后倒推 | 美式期权;与树同类的问题 | 路径依赖;高维 |
三种方法都能计算 delta、gamma、vega 等希腊字母。它们能处理实务中大多数估值问题;特殊情形需要第 27b 章的改进方法。
本教材把原书第 21 章拆成三章:本章(21a)讲树方法,21b 讲蒙特卡洛与方差缩减,21c 讲有限差分并比较三种方法。第 13 章已经讲过二叉树的原理(无套利、风险中性定价、CRR 参数),本章侧重于把树做成一个可用的数值引擎:通用的递推公式、从树上读出希腊字母、处理股息、提高精度和处理时变参数。
学习目标
- 从"匹配均值与方差"出发推导 CRR 参数 \(u=e^{\sigma\sqrt{\Delta t}}\)、\(d=1/u\)、\(p=(a-d)/(u-d)\),并会用 \(q\) 统一处理股指、外汇、期货。
- 能手算并编程实现美式期权的倒推,理解"实值并不意味着应该提前行权"。
- 会从一棵树上读出 delta、gamma、theta,知道 vega 和 rho 需要重建树。
- 掌握已知股息率和已知美元股息两种情形的建树方法,理解"股价减股息现值"法为什么能保持树重合。
- 会用控制变量技术改进美式期权估计,并知道它的局限。
- 了解等概率树、三叉树、自适应网格和时变参数树的构造。
读前导读
这一章在解决什么问题。 你在 CFA 里做过单步二叉树:股价一步涨到 \(Su\) 或跌到 \(Sd\),用风险中性概率加权、按无风险利率贴现,就得到期权价格。本章把这个"单步"做成"多步",再把它变成一台能算美式期权的机器。为什么需要机器?BSM 公式只能给欧式期权定价;美式期权可以提前行权,持有人在每个时点都要做"现在行权还是继续等"的决定,这个决定依赖未来,没有封闭公式。二叉树的做法是:先把未来所有可能的股价路径画成一张网格,从到期日往回一格一格算,每一格都比较"立刻行权拿到的钱"和"继续持有的价值",取大者。这和公司金融里评估"等待期权"(实物期权)是同一个思路,只是做得更系统。
本章的第二个主题是"一棵树能给出什么"。你熟悉的 delta 是期权价格对股价的敏感度,久期是债券价格对收益率的敏感度,二者都是导数。树上已经算好了邻近股价下的期权价值,所以用"差值除以差值"就能近似出导数,不用重新算一遍。第三个主题是工程细节:股息、外汇、期货怎么统一处理,怎样减少误差,参数随时间变化怎么办。
需要先想起来的数学。
- 指数函数的泰勒展开。 \(e^x\approx1+x+\frac12x^2\),\(x\) 越小越准。例:\(e^{0.02}=1.020201\),而 \(1+0.02+0.0002=1.0202\)。本章验证 CRR 参数时,就是把 \(u=e^{\sigma\sqrt{\Delta t}}\) 展开到 \(\Delta t\) 这一阶,再比较两边。见 第 00 册第 02 章 导数与泰勒展开。
- 大 O 记号。 \(O(\Delta t^2)\) 读作"量级与 \(\Delta t^2\) 相当的误差项"。当 \(\Delta t=0.01\) 时,\(\Delta t^2=0.0001\),比 \(\Delta t\) 小两个数量级,所以可以忽略。\(O(N^2)\) 用在计算量上,意思是"步数翻倍,计算量约翻四倍"。见 第 00 册第 07 章 概率中的分析工具。
- 用差商近似导数。 导数 \(f'(S)\) 可以用 \(\frac{f(S+h)-f(S-h)}{2h}\) 近似;二阶导数(gamma)是"一阶导数的变化率",用两个一阶差商再做一次差商。例:\(f(S)=S^2\) 在 \(S=10\),取 \(h=1\),\((121-81)/2=20\),正好等于 \(2S\)。见 第 00 册第 02 章。
- 方差的平移不变性。 \(\mathrm{Var}(X+c)=\mathrm{Var}(X)\),\(\mathrm{Var}(X)=E[X^2]-(E[X])^2\)。这两条你在 CFA 统计里都见过,本章推导方差条件时直接使用。
- 远期利率。 由两个即期利率推出一段未来区间的利率,CFA 固定收益里学过。21.5 节把同样的想法用到股息率和方差率上。
怎么读这一章。 21.1 节是核心,必须读透:参数推导、例 21.1 的手算、代数递推、从树上读希腊字母。建议拿纸笔把例 21.1 的节点 A、B 算一遍,体会"同样实值、一个该行权一个不该"。21.2 节很短,记住那张 \(q\) 的对照表即可。21.3 节的"股价减股息现值"法和控制变量技术是实务常用的,值得读。21.4 节的三叉树推导和 21.5 节的时变参数第一次可以只看结论。最后的"量化实战"代码建议对照 21.1 节的公式逐行读,它几乎是公式的直接翻译。
21.1 二叉树
基本设定
把期权期限 \(T\) 分成 \(N\) 个长度为 \(\Delta t\) 的小区间。假设在每个小区间内,资产价格从 \(S\) 变为 \(Su\) 或 \(Sd\)(\(u>1\),\(d<1\)),上升概率为 \(p\),下降概率为 \(1-p\)(原书图 21.1)。
估值使用第 13 章的风险中性定价:
- 假设所有可交易资产的期望收益都等于无风险利率 \(r\);
- 衍生品的价值等于其收益期望值按无风险利率贴现。
BSM 与二叉树基于相同的假设。第 13 章附录证明了:步数趋于无穷时,二叉树的欧式期权价格收敛到 BSM 价格。所以对欧式期权二叉树并无必要;它的用武之地是美式期权(美式期权没有解析解,只有一些解析近似,如原书 Technical Note 8 的二次近似法)。
确定 \(p\)、\(u\)、\(d\)
参数的选取原则是:让 \(\Delta t\) 内资产价格变化的均值和方差与风险中性世界一致。
均值条件。资产提供收益率 \(q\) 时,风险中性世界中资本利得的期望收益率是 \(r-q\),所以区间末的期望价格为 \(Se^{(r-q)\Delta t}\):
方差条件。令 \(R\) 为 \(\Delta t\) 内的百分比变化,\(1+R\) 以概率 \(p\) 取 \(u\)、以 \(1-p\) 取 \(d\)。加一个常数不改变方差,所以 \(R\) 的方差就是 \(1+R\) 的方差:
由 (21.1) 可得恒等式 \(e^{(r-q)\Delta t}(u+d)=pu^2+(1-p)d^2+ud\)(把 \(p u+(1-p)d\) 乘以 \(u+d\) 展开即可验证),代入得
推导拆解:方差条件和 (21.2) 是怎么来的。 第一步,方差公式 \(\mathrm{Var}(X)=E[X^2]-(E[X])^2\) 用在 \(X=1+R\) 上:\(E[X^2]=pu^2+(1-p)d^2\),\(E[X]=e^{(r-q)\Delta t}\)(由均值条件 (21.1))。所以 \(\mathrm{Var}(1+R)=pu^2+(1-p)d^2-e^{2(r-q)\Delta t}\),令它等于 \(\sigma^2\Delta t\),就是上面第一个式子。这里把"\(\Delta t\) 内收益率的方差"设为 \(\sigma^2\Delta t\),和你熟悉的"年化波动率乘以 \(\sqrt{\text{时间}}\)"是同一件事。 第二步,恒等式:\((pu+(1-p)d)(u+d)=pu^2+pud+(1-p)du+(1-p)d^2=pu^2+(1-p)d^2+ud\)(中间两项合并成 \(ud\))。左边的 \(pu+(1-p)d\) 又等于 \(e^{(r-q)\Delta t}\)。 第三步,把恒等式移项得 \(pu^2+(1-p)d^2=e^{(r-q)\Delta t}(u+d)-ud\),代回方差式,\(p\) 就消掉了,得到只含 \(u,d\) 的 (21.2)。这一步的意义是:先用方差条件定 \(u,d\),再用均值条件定 \(p\)。
第三个条件。两个方程三个未知数,需要再加一个条件。Cox、Ross、Rubinstein(CRR,1979)取
忽略高于 \(\Delta t\) 阶的项,解为
\(a\) 称为增长因子(growth factor)。
验证:(21.4)(21.7) 精确满足 (21.1),(21.5)(21.6) 精确满足 (21.3)。对 (21.2),用展开 \(u\approx1+\sigma\sqrt{\Delta t}+\frac12\sigma^2\Delta t\),\(d\approx1-\sigma\sqrt{\Delta t}+\frac12\sigma^2\Delta t\),\(e^{(r-q)\Delta t}\approx1+(r-q)\Delta t\)。于是 \(u+d\approx2+\sigma^2\Delta t\),\(ud=1\),左边 \(\approx(1+(r-q)\Delta t)(2+\sigma^2\Delta t)-1-(1+2(r-q)\Delta t)=\sigma^2\Delta t+O(\Delta t^2)\),在 \(\Delta t\) 阶上成立。
推导拆解:这段验证在做什么。 \(u\) 的展开用的是 \(e^x\approx1+x+\frac12x^2\),取 \(x=\sigma\sqrt{\Delta t}\),于是 \(\frac12x^2=\frac12\sigma^2\Delta t\)。注意 \(\sqrt{\Delta t}\) 比 \(\Delta t\) 大得多(\(\Delta t=0.01\) 时 \(\sqrt{\Delta t}=0.1\)),所以展开到 \(x^2\) 才能保留全部 \(\Delta t\) 阶的项。 \(u+d\) 中 \(\pm\sigma\sqrt{\Delta t}\) 两项抵消,剩下 \(2+\sigma^2\Delta t\)。\(e^{2(r-q)\Delta t}\approx1+2(r-q)\Delta t\)。 把乘积展开:\((1+(r-q)\Delta t)(2+\sigma^2\Delta t)=2+\sigma^2\Delta t+2(r-q)\Delta t+(r-q)\sigma^2\Delta t^2\),减去 \(1\) 再减去 \(1+2(r-q)\Delta t\),只剩 \(\sigma^2\Delta t\) 和一个 \(\Delta t^2\) 项。 "在 \(\Delta t\) 阶上成立"的含义:误差是 \(\Delta t^2\) 量级,每步误差很小;步数越多(\(\Delta t\) 越小),这些误差累积起来也趋于零,所以树价格最终收敛。
资产价格树
在时刻 \(i\Delta t\),树上有 \(i+1\) 个节点,价格为
由于 \(u=1/d\),先升后降与先降后升回到同一价格,例如 \(j=2,i=3\) 时 \(S_0u^2d=S_0u\)。这样的树称为重合的(recombining)。重合性让节点数从 \(2^N\) 降到 \(O(N^2)\),这是树方法可用的关键。
倒推
从到期日 \(T\) 开始:看跌期权节点值为 \(\max(K-S_T,0)\),看涨为 \(\max(S_T-K,0)\)。往前每一步,节点值等于下一步两个节点值的风险中性期望,按 \(r\) 贴现 \(\Delta t\)。美式期权在每个节点还要比较提前行权的价值和继续持有的价值,取较大者。
例 21.1:美式看跌
5 个月期美式看跌,不付息股票,\(S_0=K=50\),\(r=10\%\),\(\sigma=40\%\),\(T=0.4167\),\(q=0\)。分 5 步,\(\Delta t=0.0833\):
每步贴现因子 \(e^{-0.1\times0.0833}=0.9917\)(原书图 21.3)。
几个节点的计算:
- 终值节点 G:股价 \(50\times0.8909^5=35.36\),期权值 \(50-35.36=14.64\)。
- 节点 E(\(i=4\),股价 50):继续持有的价值为 \((0.5073\times0+0.4927\times5.45)\times0.9917=2.66\);行权价值为 0。取 2.66。
- 节点 A(\(i=4,j=1\),股价 \(50\times1.1224\times0.8909^3=39.69\)):继续持有 \((0.5073\times5.45+0.4927\times14.64)\times0.9917=9.90\);行权 \(50-39.69=10.31>9.90\)。应提前行权,取 10.31。
- 节点 B(\(i=2,j=0\),股价同为 39.69):行权价值 10.31,继续持有 \((0.5073\times6.38+0.4927\times14.64)\times0.9917=10.36\)。不应提前行权。
节点 A 和 B 股价相同、实值程度相同,但一个该行权、一个不该。原因是 B 距到期还有 3 步,股价回升的可能性带来的期权价值超过了提前拿到 \(K\) 的利息收益。实值并不总意味着应该提前行权。
金融直觉:为什么 A 该行权、B 不该。提前行权看跌期权,你今天就拿到 \(K-S\),并能把 \(K\) 存起来赚利息;代价是放弃了"股价继续下跌、看跌期权更值钱"的那部分时间价值。A 只剩 1 步,时间价值很小,利息收益占上风;B 还剩 3 步,股价还有不少下跌空间,时间价值大于利息。这和债券里的可赎回条款类似:发行人是否赎回,不只看当前利率低不低,还要看等下去利率会不会更低。
倒推到初始节点,期权价值为 4.49。实务中会用更多步:30、50、100、500 步分别得到 4.263、4.272、4.278、4.283。
代数表达
把上面的计算写成通用公式。期限分 \(N\) 段,节点 \((i,j)\) 表示时刻 \(i\Delta t\) 自下而上的第 \(j\) 个节点(\(0\le i\le N\),\(0\le j\le i\)),资产价格 \(S_0u^jd^{i-j}\),期权值 \(f_{i,j}\)。
终值条件:
递推:从 \((i,j)\) 以概率 \(p\) 到 \((i+1,j+1)\),以 \(1-p\) 到 \((i+1,j)\)。
- 欧式:\(f_{i,j}=e^{-r\Delta t}[pf_{i+1,j+1}+(1-p)f_{i+1,j}]\)
- 美式看涨:\(f_{i,j}=\max\{S_0u^jd^{i-j}-K,\ e^{-r\Delta t}[pf_{i+1,j+1}+(1-p)f_{i+1,j}]\}\)
- 美式看跌:\(f_{i,j}=\max\{K-S_0u^jd^{i-j},\ e^{-r\Delta t}[pf_{i+1,j+1}+(1-p)f_{i+1,j}]\}\)
因为从 \(T\) 倒推,时刻 \(i\Delta t\) 的值不仅反映了在该时刻提前行权的可能,也反映了之后各时刻提前行权的可能——这就是动态规划。\(\Delta t\to0\) 时得到美式看跌的精确值;实务中 \(N=30\) 通常已给出合理结果。
白话解释:动态规划(dynamic programming)就是"把一个多期决策拆成很多个单期决策,从最后一期往前解"。站在节点 \((i,j)\) 时,你只需要知道下一步两个节点的价值,而那两个值已经包含了"之后每一步都按最优方式决定"的结果。所以每个节点只做一次比较,就等于考虑了所有未来的行权时点。如果从今天往后正向推,你需要列出所有路径上所有可能的行权时间组合,那是天文数字。 符号说明:\(f_{i,j}\) 的下标 \(i\) 是时间(第几步),\(j\) 是这一步里上升了几次。\(\Delta t\to0\) 读作"\(\Delta t\) 趋于 0",即步数无限加密的极限。
收敛特性:原书图 21.4 显示,例 21.1 的价格随步数增加呈振荡收敛——奇数步和偶数步交替偏高偏低。这是因为执行价相对于终值节点的位置随 \(N\) 周期性变化。实务中常把相邻两个 \(N\) 的结果平均,或用外推技术加速收敛。
复杂度:\(N\) 步树有 \((N+1)(N+2)/2=O(N^2)\) 个节点,计算量 \(O(N^2)\);倒推时只需保存一列,内存 \(O(N)\)。
从树上估计希腊字母
一棵树已经包含了邻近股价下的期权价值,因此 delta、gamma、theta 可以直接读出。
Delta。在时刻 \(\Delta t\),股价 \(S_0u\) 对应 \(f_{1,1}\),股价 \(S_0d\) 对应 \(f_{1,0}\):
Gamma。在时刻 \(2\Delta t\) 有两个 delta 估计:在 \((S_0u^2+S_0)/2\) 处为 \((f_{2,2}-f_{2,1})/(S_0u^2-S_0)\),在 \((S_0+S_0d^2)/2\) 处为 \((f_{2,1}-f_{2,0})/(S_0-S_0d^2)\)。两点间距 \(h=0.5(S_0u^2-S_0d^2)\),gamma 为 delta 的变化除以 \(h\):
严格地说,(21.8) 是时刻 \(\Delta t\) 的 delta,(21.9) 是时刻 \(2\Delta t\) 的 gamma,实务中把它们当作时刻 0 的估计。若要更精确,可以从 \(-2\Delta t\) 开始建树,让 \(S_0\) 恰好位于 \(-2\Delta t\) 之后两步的中间节点,从而在时刻 0 得到三个股价下的期权价值。
推导拆解:gamma 公式是"差商的差商"。 第一步,在时刻 \(2\Delta t\) 有三个节点:\(S_0d^2\)、\(S_0\)、\(S_0u^2\)(中间那个是 \(S_0ud=S_0\))。相邻两点各算一个斜率,就得到两个 delta:上半段的 delta 代表股价在 \(S_0\) 与 \(S_0u^2\) 中点附近的斜率,下半段代表 \(S_0d^2\) 与 \(S_0\) 中点附近的斜率。 第二步,gamma 是 delta 对股价的变化率,所以用"两个 delta 之差 ÷ 两个中点之间的距离"。两个中点分别是 \((S_0u^2+S_0)/2\) 和 \((S_0+S_0d^2)/2\),相减正好是 \(h=0.5(S_0u^2-S_0d^2)\)。 这和你在固定收益里用"收益率上下各移 1bp 重算价格"来估计有效久期和有效凸性是同一套做法:久期对应 delta,凸性对应 gamma。区别只在于树上的"上下移动"是树自然给出的,不需要额外重算。
Theta。节点 \((0,0)\) 与 \((2,1)\) 股价相同(\(S_0ud=S_0\)),时间差 \(2\Delta t\):
Vega 和 rho。一棵树里波动率和利率是固定的,无法直接读出。做法是把波动率改变一个小量 \(\Delta\sigma\),保持步数不变重建树得到 \(f^*\),则 \(\mathcal V=(f^*-f)/\Delta\sigma\)。rho 类似。保持步数不变很重要:振荡误差与步数有关,步数相同时两次计算的误差大体抵消。
例 21.2:例 21.1 的希腊字母
- \(f_{1,0}=6.96\),\(f_{1,1}=2.16\):\(\Delta=\dfrac{2.16-6.96}{56.12-44.55}=-0.41\)
- 由节点 B、C、F:\(\Gamma=\dfrac{[(0.64-3.77)/(62.99-50.00)]-[(3.77-10.36)/(50.00-39.69)]}{11.65}=0.03\)
- 由节点 D、C:\(\Theta=\dfrac{3.77-4.49}{0.1667}=-4.3\)(每年),即每日历日 \(-0.012\)
用 50 步时,DerivaGem 给出 delta \(-0.415\)、gamma 0.034、theta \(-0.0117\)(每日历日);改变参数重建树得 vega 0.123、rho \(-0.072\)。
21.2 股指、外汇和期货期权的树
股指、货币和期货都可以看作提供已知收益率 \(q\) 的资产,只需在 (21.7) 中正确解释 \(q\):
| 标的 | \(q\) 取 | 增长因子 \(a\) |
|---|---|---|
| 股指 | 成分股的股息率 | \(e^{(r-q)\Delta t}\) |
| 外汇 | 外国无风险利率 \(r_f\) | \(e^{(r-r_f)\Delta t}\) |
| 期货 | 本国无风险利率 \(r\) | \(1\) |
期货一行的道理是:建立期货头寸不需要成本,在风险中性世界里期货价格的期望增长率为零(第 18 章),所以 \(a=1\)。
例 21.3:美式指数期货看涨
4 个月期,\(F_0=K=300\),\(r=8\%\),\(\sigma=30\%\),\(T=0.3333\),4 步,\(\Delta t=0.0833\)。
4 步树(原书图 21.5)估值 19.16;50 步 20.18,100 步 20.22。
例 21.4:美式英镑看跌
1 年期,\(S_0=1.61\),\(K=1.60\),\(r=8\%\),\(r_f=9\%\),\(\sigma=12\%\),4 步,\(\Delta t=0.25\)。
4 步估值 0.0710;50 步和 100 步均为 0.0738。
21.3 付息股票的二叉树
本节"股息"指除息日因股息导致的股价下降额。
已知股息率
对长期期权,常为方便起见假设股票支付已知的连续股息率 \(q\),完全按股指期权的方法处理。
更精确的做法是假设已知股息率离散支付。若期内只有一次除息,股息率 \(\delta\)(股息占股价的比例)已知:
- \(u,d,p\) 按无股息情形计算;
- 除息日之前的时刻 \(i\Delta t\),节点价格为 \(S_0u^jd^{i-j}\);
- 除息日之后,节点价格为 \(S_0(1-\delta)u^jd^{i-j}\)(原书图 21.7)。
树仍然是重合的。多次除息时,令 \(\delta_i\) 为 0 到 \(i\Delta t\) 之间所有除息日的累计股息率,节点价格为 \(S_0(1-\delta_i)u^jd^{i-j}\)。
已知美元股息
期权期限较短时,假设已知股息金额更符合现实。但如果坚持股价波动率 \(\sigma\) 恒定,树会不重合(原书图 21.8):
设单次股息 \(D\),除息日 \(\tau\) 在 \(k\Delta t\) 与 \((k+1)\Delta t\) 之间。
- \(i\le k\):节点为 \(S_0u^jd^{i-j}\),共 \(i+1\) 个;
- \(i=k+1\):节点为 \(S_0u^jd^{i-j}-D\);
- \(i=k+2\):从每个节点出发得到 \((S_0u^jd^{i-1-j}-D)u\) 和 \((S_0u^jd^{i-1-j}-D)d\)。以除息前价格 \(x\) 为例:先升后降得 \((xu-D)d=x-Dd\),先降后升得 \((xd-D)u=x-Du\),两者不等,树不再重合,节点数为 \(2i\) 而非 \(i+1\);
- \(i=k+m\):节点数为 \(m(k+2)\),而非 \(k+m+1\)。
多次除息时节点数增长更快,计算很快变得不可行。
解决办法(与第 15b 章 15.12 节一致):把股价分成两部分——期权期内股息的现值(确定),以及其余的不确定部分 \(S^*\)。
- 对于时刻 \(i\Delta t>\tau\):\(S^*=S\);
- 对于时刻 \(i\Delta t\le\tau\):\(S^*=S-De^{-r(\tau-i\Delta t)}\)。
假设 \(S^*\) 的波动率 \(\sigma^*\) 恒定,用 \(\sigma^*\) 代替 \(\sigma\) 计算 \(p,u,d\),为 \(S^*\) 建一棵常规的重合树。然后在每个节点加上未来股息的现值,转回 \(S\) 的树:
这棵树重合,时刻 \(i\Delta t\) 有 \(i+1\) 个节点,可以直接推广到多次股息。
白话解释:问题的根源是"减法"和"乘法"不能交换顺序。树的每一步是乘以 \(u\) 或 \(d\);股息是减去一个固定金额 \(D\)。先减后乘时,\(D\) 被乘上了 \(u\) 或 \(d\),不同路径减掉的有效金额不一样,节点就对不齐。 解决办法是把股价拆成两块:一块是"确定会作为股息流出的现金"(它的现值随时间按无风险利率增长,与股价涨跌无关),另一块是"真正有风险的部分" \(S^*\)。只对 \(S^*\) 做乘法,树自然重合;确定部分在每个时点都是同一个数,加到同一列所有节点上不会破坏重合。 金融上,这相当于把股票看成"一笔已知现金流 + 一个无股息的风险资产",和你在估值里把企业价值拆成"确定现金流现值 + 有风险部分"是同一种思路。
这种处理还有一层一致性上的理由:美式期权必须与欧式期权使用同一个模型。否则,一个在任何情况下都不应提前行权的美式期权,其价格会与对应欧式期权不同,这是不合理的。BSM 对离散股息的标准处理正是"股价减股息现值",所以树也应如此。实务中分析师从市价隐含出的波动率本来就是 \(\sigma^*\),通常无须显式区分 \(\sigma\) 和 \(\sigma^*\)。
例 21.5
5 个月期美式看跌,期内一次股息 2.06 美元,除息日在 3.5 个月;\(S_0=52\),\(K=50\),\(r=10\%\),\(\sigma=40\%\)。
股息现值 \(2.06e^{-0.2917\times0.1}=2.00\),所以 \(S_0^*=52-2=50\)。若 40% 指 \(S^*\) 的波动率,那么 \(S^*\) 的树就是图 21.3 那棵树。在除息日之前的每个节点加上股息现值,得到原书图 21.9(概率仍为 0.5073 和 0.4927)。倒推得期权价格 4.44;50 步 4.202,100 步 4.212。
控制变量技术
树的误差主要来自离散化,而这部分误差对美式和欧式期权很相似。**控制变量技术(control variate technique)**利用这一点:
- 用同一棵树同时计算美式期权价值 \(f_A\) 和对应欧式期权价值 \(f_E\);
- 用 BSM 公式算出欧式期权的真值 \(f_{BSM}\);
- 假设树为欧式期权定价的误差 \(f_{BSM}-f_E\) 等于为美式期权定价的误差,则美式期权的改进估计为
例:把图 21.3 的期权当作欧式期权重算(原书图 21.10),\(f_E=4.32\);BSM 欧式真值 \(f_{BSM}=4.08\);美式 \(f_A=4.49\)。控制变量估计为
而 100 步的良好估计为 4.278。5 步树的原始估计误差约 0.21,控制变量后约 0.03,改进明显。
本质上,控制变量就是用树只计算美式与欧式价格之差(提前行权溢价),欧式部分交给解析公式。差值的离散误差通常比各自的误差小得多。
金融直觉:控制变量和对冲是同一个想法。你持有一个难以定价的头寸(美式期权的树价格,含误差),再"做空"一个与它误差高度相关、但真值已知的头寸(欧式期权的树价格),两者的误差相互抵消。公式 \(f_A+(f_{BSM}-f_E)\) 可以读成:树算出的美式价格,加上"树在欧式期权上少算了多少"的修正。修正有效的前提是两种误差高度正相关,就像对冲有效的前提是两个资产高度相关。21b 章的蒙特卡洛方差缩减里会再次见到同名的技术。
不过这个假设只是近似:本章"量化实战"会看到,对某些步数,控制变量的误差反而与原始误差相当甚至更大。
21.4 构造树的其他方法
等概率树
风险中性世界中,\(\Delta t\) 内 \(\ln S\) 变化的均值为 \((r-q-\sigma^2/2)\Delta t\),标准差为 \(\sigma\sqrt{\Delta t}\)。可以令 \(p=0.5\),
验证:\(\ln S\) 的变化以各 0.5 的概率取 \((r-q-\sigma^2/2)\Delta t\pm\sigma\sqrt{\Delta t}\),均值和标准差都正确。
- 优点:无论 \(\sigma\) 和步数如何,概率总是 0.5。CRR 树在时间步过大、以致 \(\sigma<|(r-q)\sqrt{\Delta t}|\) 时会出现负概率(\(a\) 落到 \([d,u]\) 之外),等概率树没有这个问题。
- 缺点:树不再以初始股价为中心(\(ud\neq1\)),从树上计算 delta、gamma、theta 没有那么直接。
例 21.6:9 个月美式外币看涨,\(S_0=0.79\),\(K=0.795\),\(r=6\%\),\(r_f=10\%\),\(\sigma=4\%\),\(T=0.75\),3 步,\(\Delta t=0.25\),\(p=0.5\):
(原书图 21.11)期权值 0.0026。
三叉树
每个节点有三个分支(原书图 21.12):上升、不变、下降,概率为 \(p_u,p_m,p_d\)。对股息率 \(q\) 的资产,匹配 \(\ln S\) 变化均值与标准差的参数为
推导思路:令 \(\Delta x=\sigma\sqrt{3\Delta t}\),\(\nu=r-q-\sigma^2/2\)。三个条件为:概率和为 1;\(E[\Delta\ln S]=(p_u-p_d)\Delta x=\nu\Delta t\);\(E[(\Delta\ln S)^2]=(p_u+p_d)\Delta x^2\approx\sigma^2\Delta t\)(忽略 \(\nu^2\Delta t^2\))。由第三式 \(p_u+p_d=\sigma^2\Delta t/\Delta x^2=1/3\),故 \(p_m=2/3\);由第二式 \(p_u-p_d=\nu\Delta t/\Delta x=\nu\sqrt{\Delta t/(3\sigma^2)}\)。两式联立即得上面的 \(p_u,p_d\)。
推导拆解:把"联立"展开写出来。 第二式:\(\Delta\ln S\) 以 \(p_u\) 取 \(+\Delta x\)、\(p_m\) 取 0、\(p_d\) 取 \(-\Delta x\),期望是 \((p_u-p_d)\Delta x\)。令它等于 \(\nu\Delta t\),得 \(p_u-p_d=\nu\Delta t/(\sigma\sqrt{3\Delta t})=\nu\sqrt{\Delta t}/(\sigma\sqrt3)\)。 第三式:\((\Delta\ln S)^2\) 取 \(\Delta x^2\) 或 0,期望是 \((p_u+p_d)\Delta x^2=(p_u+p_d)\cdot3\sigma^2\Delta t\)。它应等于方差加均值平方,即 \(\sigma^2\Delta t+\nu^2\Delta t^2\),忽略高阶项后 \(p_u+p_d=1/3\)。这也解释了为什么选 \(\Delta x=\sigma\sqrt{3\Delta t}\):正是这个"3"让 \(p_m\) 成为整齐的 \(2/3\)。 联立:\(p_u=\frac12\left(\frac13+\frac{\nu\sqrt{\Delta t}}{\sigma\sqrt3}\right)=\frac16+\nu\sqrt{\frac{\Delta t}{12\sigma^2}}\)(因为 \(\frac{1}{2\sqrt3\,\sigma}=\sqrt{\frac{1}{12\sigma^2}}\)),\(p_d\) 同理取减号。
三叉树的倒推与二叉树类似:每个节点比较行权价值与继续持有价值 \(e^{-r\Delta t}(p_uf_u+p_mf_m+p_df_d)\)。21c 章将说明,三叉树等价于显式有限差分法。
自适应网格模型
Figlewski & Gao 提出自适应网格模型(adaptive mesh model):在低分辨率(大 \(\Delta t\))的树上嫁接高分辨率(小 \(\Delta t\))的树,只在需要的地方加密。对普通美式期权,最需要高分辨率的区域是到期前、执行价附近——那里期权价值的曲率最大,离散误差也最大。
21.5 时变参数
实务中 \(r\)、\(q\)、\(r_f\)、\(\sigma\) 往往随时间变化。在 \(t\) 到 \(t+\Delta t\) 之间,使用这些量的远期值(远期股息率、远期方差率的计算方式与远期利率相同;方差率是波动率的平方)。
时变利率与收益率
在 CRR 树中,时刻 \(t\) 的节点使用
其中 \(f(t)\) 为 \(t\) 到 \(t+\Delta t\) 的远期利率,\(g(t)\) 为 \(q\)(或 \(r_f\))的远期值。\(u,d\) 不依赖 \(a\),所以树的几何形状不变,只有分支概率随时间变化:
步数足够多时这些概率总是正的。\(t\) 到 \(t+\Delta t\) 的贴现使用 \(f(t)\)。
时变波动率
时变波动率要难一些,因为 \(u,d\) 依赖 \(\sigma\),波动率变化会破坏重合性。一种方法是让每一步的长度与该步的平均方差率成反比,从而使每一步的总方差相同、\(u,d\) 处处一样:
- 设 \(\sigma(t)\) 为期限 \(t\) 的期权定价所用的波动率,定义总方差 \(V=\sigma(T)^2T\);
- 令 \(t_i\) 为第 \(i\) 步的终点,选取 \(t_i\) 使 \(\sigma(t_i)^2t_i=iV/N\);
- 令 \(u=e^{\sqrt{V/N}}\),\(d=1/u\),\(p\) 按常数波动率公式计算。
这样时间步长不等,但每一步的方差都是 \(V/N\),树保持重合。这种方法可以与时变利率方法结合。
白话解释:可以把树的每一步理解为"消耗一份相同的方差预算",而不是"走过一段相同的日历时间"。波动率高的时段,一份方差预算很快用完,所以那一步很短;波动率低的时段,同样的方差要更长时间才累积到,那一步就长。\(\sigma(t)^2t\) 是"从今天到 \(t\) 累积的总方差",第 2 步条件要求累积方差在 \(N\) 个步点上等分。这和固定收益里"按久期而不是按日历时间来衡量风险暴露"的想法相近。
量化实战
本章内容在量化交易中的用途
- 美式期权定价引擎。个股期权(美股、港股的个股期权多为美式)、ETF 期权、商品期货期权的定价和隐含波动率反解,最常用的就是二叉树。一个可靠的实现需要:支持 \(q\)(股息率/外币利率/期货)、离散美元股息、提前行权、从树上读希腊字母。
- 隐含波动率反解。对美式期权反解隐含波动率时,需要在根求解器(如 Brent 法)的每次迭代中重建树。此时一定要固定步数,否则振荡误差会让价格对波动率不单调,求解器可能失败。
- 风险计算。delta、gamma、theta 从同一棵树读出,几乎零额外成本;vega、rho 需要扰动参数重建树。批量计算组合希腊字母时,这部分是主要开销。
- 数值稳健性。CRR 在大步长、低波动率、高利差时会出现负概率;等概率树和三叉树更稳健。生产系统应当检查概率是否在 \([0,1]\) 之内。
Python 示例:一个通用的 CRR 引擎
下面的函数实现了 21.1–21.3 节的全部内容:通用 \(q\)、美式/欧式、离散美元股息(股价减股息现值法)、从树上读 delta/gamma/theta。代码复算原书的例 21.1–21.5,比较控制变量的效果,并实现一个三叉树。
import numpy as np
from scipy.stats import norm
def crr(S0, K, T, r, sig, N, q=0.0, kind="put", american=True, div=None):
"""CRR 二叉树。div=(D, tau):单次美元股息,按"股价减股息现值"建树。
返回 (价格, delta, gamma, theta)。"""
dt = T / N
u = np.exp(sig*np.sqrt(dt)); d = 1/u
a = np.exp((r - q)*dt); p = (a - d)/(u - d); disc = np.exp(-r*dt)
D, tau = div if div else (0.0, -1.0)
Sstar0 = S0 - D*np.exp(-r*tau) if div else S0
def spot(i): # 时刻 i*dt 的全部节点股价
j = np.arange(i+1)
s = Sstar0 * u**j * d**(i-j)
t = i*dt
if div and t < tau:
s = s + D*np.exp(-r*(tau - t)) # 加回未来股息现值
return s
pay = (lambda s: np.maximum(K - s, 0)) if kind == "put" else (lambda s: np.maximum(s - K, 0))
f = pay(spot(N))
keep = {}
for i in range(N-1, -1, -1):
f = disc*(p*f[1:] + (1-p)*f[:-1])
if american:
f = np.maximum(f, pay(spot(i))) # 比较行权与继续持有
if i <= 2:
keep[i] = (spot(i), f.copy())
s1, f1 = keep[1]; s2, f2 = keep[2]
delta = (f1[1] - f1[0])/(s1[1] - s1[0]) # (21.8)
h = 0.5*(s2[2] - s2[0])
gamma = ((f2[2]-f2[1])/(s2[2]-s2[1]) - (f2[1]-f2[0])/(s2[1]-s2[0]))/h # (21.9)
theta = (f2[1] - keep[0][1][0])/(2*dt) # (21.10)
return keep[0][1][0], delta, gamma, theta
def bs_put(S, K, T, r, sig, q=0.0):
d1 = (np.log(S/K)+(r-q+0.5*sig**2)*T)/(sig*np.sqrt(T)); d2 = d1-sig*np.sqrt(T)
return K*np.exp(-r*T)*norm.cdf(-d2) - S*np.exp(-q*T)*norm.cdf(-d1)
# 例 21.1 / 21.2
args = dict(S0=50, K=50, T=5/12, r=0.10, sig=0.40)
v, de, ga, th = crr(**args, N=5)
print("例21.1 5步: 价格 %.2f delta %.2f gamma %.3f theta %.2f/年" % (v, de, ga, th))
for N in (30, 50, 100, 500):
print(f" N={N:4d}: {crr(**args, N=N)[0]:.3f}")
v50 = crr(**args, N=50)
print(" N=50 希腊字母: delta %.3f gamma %.3f theta/天 %.4f" % (v50[1], v50[2], v50[3]/365))
b = crr(**args, N=50)[0]; up = crr(**{**args, "sig": 0.41}, N=50)[0] # 同步数重建树
print(" vega (每1%%波动率) %.3f" % (up - b))
# 控制变量
fA = crr(**args, N=5)[0]
fE = crr(**args, N=5, american=False)[0]
fBS = bs_put(50, 50, 5/12, 0.10, 0.40)
print("\n控制变量 fA=%.2f fE=%.2f fBSM=%.2f => %.2f" % (fA, fE, fBS, fA + fBS - fE))
true = 4.2842 # N=5000 左右的收敛值
for N in (5, 10, 25, 50, 100):
a_ = crr(**args, N=N)[0]; e_ = crr(**args, N=N, american=False)[0]
print(f" N={N:3d} 原始 {a_:.4f} (误差 {a_-true:+.4f}) 控制变量 {a_+fBS-e_:.4f} (误差 {a_+fBS-e_-true:+.4f})")
# 例 21.3 期货期权(q=r),例 21.4 外汇期权(q=rf),例 21.5 离散美元股息
print("\n例21.3 期货美式看涨:", [round(float(crr(300, 300, 1/3, 0.08, 0.30, N, q=0.08, kind="call")[0]), 2) for N in (4, 50, 100)])
print("例21.4 英镑美式看跌:", [round(float(crr(1.61, 1.60, 1.0, 0.08, 0.12, N, q=0.09)[0]), 4) for N in (4, 50, 100)])
print("例21.5 付息美式看跌:", [round(float(crr(52, 50, 5/12, 0.10, 0.40, N, div=(2.06, 3.5/12))[0]), 3) for N in (5, 50, 100)])
# 三叉树(u = exp(sig*sqrt(3dt)), pm = 2/3)
def trinomial(S0, K, T, r, sig, N, q=0.0, american=True):
dt = T/N; dx = sig*np.sqrt(3*dt); nu = r - q - 0.5*sig**2
pu = np.sqrt(dt/(12*sig**2))*nu + 1/6; pm = 2/3; pd = 1/6 - np.sqrt(dt/(12*sig**2))*nu
disc = np.exp(-r*dt)
S = lambda i: S0*np.exp(dx*np.arange(-i, i+1))
f = np.maximum(K - S(N), 0)
for i in range(N-1, -1, -1):
f = disc*(pu*f[2:] + pm*f[1:-1] + pd*f[:-2])
if american: f = np.maximum(f, K - S(i))
return f[0]
print("\n三叉树 例21.1:", [round(float(trinomial(50, 50, 5/12, 0.10, 0.40, N)), 4) for N in (50, 100, 500)])
关键输出:
例21.1 5步: 价格 4.49 delta -0.41 gamma 0.034 theta -4.30/年
N= 30: 4.263
N= 50: 4.272
N= 100: 4.278
N= 500: 4.283
N=50 希腊字母: delta -0.415 gamma 0.034 theta/天 -0.0117
vega (每1%波动率) 0.123
控制变量 fA=4.49 fE=4.32 fBSM=4.08 => 4.25
N= 5 原始 4.4885 (误差 +0.2043) 控制变量 4.2454 (误差 -0.0388)
N= 10 原始 4.2201 (误差 -0.0641) 控制变量 4.3456 (误差 +0.0614)
N= 25 原始 4.3282 (误差 +0.0440) 控制变量 4.2802 (误差 -0.0040)
N= 50 原始 4.2720 (误差 -0.0122) 控制变量 4.2974 (误差 +0.0132)
N=100 原始 4.2781 (误差 -0.0061) 控制变量 4.2908 (误差 +0.0066)
例21.3 期货美式看涨: [19.16, 20.18, 20.22]
例21.4 英镑美式看跌: [0.071, 0.0738, 0.0738]
例21.5 付息美式看跌: [4.44, 4.208, 4.214]
三叉树 例21.1: [4.2598, 4.2722, 4.2819]
读输出:
- 例 21.1–21.4 的价格、50 步希腊字母和 vega 与原书完全一致。例 21.5 的 5 步结果 4.44 一致;50 步、100 步为 4.208、4.214,与原书(4.202、4.212)在第三位小数上略有差别,可能来自 DerivaGem 对除息日落在两步之间时的处理细节。
- 控制变量在 \(N=5\) 和 \(N=25\)(奇数步)时把误差降了一个数量级,但在 \(N=10、50、100\)(偶数步)时误差与原始估计相当、符号相反。原因是平值期权的欧式和美式价格的振荡误差并不总是同号同幅。这提醒我们:控制变量的前提"两种期权的误差相同"是一个近似,用之前最好像这里一样做一次收敛性检查。
- 三叉树在相同步数下的误差与二叉树同一量级,但收敛更平滑。
本章小结
树方法把期权期限切成 \(N\) 步,每步让资产价格乘以 \(u\) 或 \(d\),参数的选取使风险中性世界中每步价格变化的均值与方差正确。CRR 树取 \(u=e^{\sigma\sqrt{\Delta t}}\)、\(d=1/u\)、\(p=(a-d)/(u-d)\)、\(a=e^{(r-q)\Delta t}\),股指、外汇、期货只需把 \(q\) 分别解释为股息率、外国利率和本国利率。从到期日向后倒推,美式期权在每个节点取立即行权与继续持有的较大值;实值并不意味着应当提前行权。一棵树可直接读出 delta、gamma、theta,vega 和 rho 要在相同步数下扰动参数重建树。离散美元股息会破坏重合性,解决方法是对"股价减股息现值"建树再加回现值。控制变量技术用树只计算提前行权溢价,通常能显著提高精度,但不是每个步数都有效。等概率树避免负概率,三叉树收敛更平滑,自适应网格只在执行价附近加密,时变参数可用远期利率调整概率、用不等步长处理时变波动率。
| 概念/公式 | 内容 |
|---|---|
| CRR 参数 | \(u=e^{\sigma\sqrt{\Delta t}}\),\(d=1/u\),\(a=e^{(r-q)\Delta t}\),\(p=\dfrac{a-d}{u-d}\) |
| \(q\) 的解释 | 股指:股息率;外汇:\(r_f\);期货:\(r\)(\(a=1\)) |
| 美式递推 | \(f_{i,j}=\max\{\text{行权值},\ e^{-r\Delta t}[pf_{i+1,j+1}+(1-p)f_{i+1,j}]\}\) |
| 树上 delta | \(\Delta=\dfrac{f_{1,1}-f_{1,0}}{S_0u-S_0d}\) |
| 树上 gamma | (21.9),用 \(2\Delta t\) 时三个节点 |
| 树上 theta | \(\Theta=\dfrac{f_{2,1}-f_{0,0}}{2\Delta t}\) |
| 离散美元股息 | 对 \(S^*=S-\text{PV(股息)}\) 建树,节点再加回股息现值 |
| 控制变量 | \(f_A+(f_{BSM}-f_E)\) |
| 等概率树 | \(p=0.5\),\(u,d=e^{(r-q-\sigma^2/2)\Delta t\pm\sigma\sqrt{\Delta t}}\) |
| 三叉树 | \(u=e^{\sigma\sqrt{3\Delta t}}\),\(p_m=2/3\),\(p_{u,d}=\frac16\pm\sqrt{\frac{\Delta t}{12\sigma^2}}(r-q-\frac{\sigma^2}{2})\) |
| 时变参数 | \(a=e^{[f(t)-g(t)]\Delta t}\);时变波动率用 \(\sigma(t_i)^2t_i=iV/N\) 定步长 |
| 复杂度 | 节点数 \(O(N^2)\),计算量 \(O(N^2)\) |
练习
基础
-
一棵二叉树能直接估计哪些希腊字母?哪些需要重建树?为什么重建时要保持步数不变? 提示:delta、gamma、theta 可直接读出;vega、rho 需要扰动参数重建树。保持步数不变是为了让两次计算的离散误差大致抵消(原书习题 21.1)。
-
手算:不付息股票美式看跌,\(S_0=60\),\(K=60\),\(r=10\%\),\(\sigma=45\%\),\(T=3\) 个月,3 步(每步 1 个月)。求期权价格。 提示:\(u=e^{0.45\sqrt{1/12}}=1.1387\),\(d=0.8782\),\(p=(e^{0.1/12}-d)/(u-d)\approx0.4997\);逐节点比较行权与继续持有,结果约 5.16。用本章
crr函数核对(原书习题 21.2 类型)。 -
例 21.3 中为什么期货的增长因子 \(a=1\)?如果把同样的参数用于一个以期货价格 300 为标的价格、但 \(q=0\) 的"股票",美式看涨价格会怎样变化? 提示:风险中性下期货价格期望增长率为零;\(q=0\) 的不付息股票美式看涨不会提前行权,价格等于欧式 BSM 价格(大于期货期权)。
-
写出 CRR 树出现负概率的条件。 提示:\(p<0\) 要求 \(a<d\),\(p>1\) 要求 \(a>u\)。即 \(|(r-q)\Delta t|>\sigma\sqrt{\Delta t}\)(一阶近似),也就是 \(\sigma<|(r-q)\sqrt{\Delta t}|\)(原书习题 21.7)。
-
解释为什么离散美元股息会让 CRR 树不重合,而对 \(S^*\) 建树能恢复重合。 提示:除息后节点为 \((x-D)\),再乘 \(u\) 或 \(d\) 时 \(D\) 被放大不同倍数;\(S^*\) 的树是纯乘法的,加上的股息现值只依赖时间不依赖节点(原书习题 21.6)。
进阶
-
能否用二叉树为"到期股价超过 0 到 \(T\) 期间平均股价的部分"这种收益的期权定价?为什么? 提示:收益依赖整条路径的平均值,重合树的节点丢失了路径信息;需要在节点上增加状态变量(第 27b 章)或改用蒙特卡洛(原书习题 21.5)。
-
验证等概率树的 \(u,d\) 在 \(\Delta t\) 阶上使 \(S\)(而不只是 \(\ln S\))的均值正确:证明 \(0.5u+0.5d=e^{(r-q)\Delta t}+O(\Delta t^2)\)。再按"量化实战"代码的风格实现等概率树,为例 21.6 定价。 提示:\(0.5(u+d)=e^{(r-q-\sigma^2/2)\Delta t}\cosh(\sigma\sqrt{\Delta t})\approx e^{(r-q-\sigma^2/2)\Delta t}(1+\sigma^2\Delta t/2)\);例 21.6 的 3 步结果应为 0.0026(原书习题 21.29)。
-
用本章
crr函数,对例 21.1 比较 \(N\) 与 \(N+1\) 结果的平均值和单独的 \(N\) 步结果,看平均能否抑制振荡。再把控制变量与"相邻步数平均"结合,观察误差。 提示:振荡误差在奇偶步之间交替,平均可以抵消大部分(原书习题 21.30 的思路)。 -
用 21.5 节的方法构造时变波动率树:设 \(\sigma(t)\) 从 0.2(\(t\to0\))线性上升到 0.3(\(t=1\)),即期限 \(t\) 的期权使用 \(\sigma(t)=0.2+0.1t\)。求 10 步树的各步终点 \(t_i\),并为 1 年期平值欧式看涨定价,与用 \(\sigma(1)=0.3\) 的 BSM 价格比较。 提示:\(V=0.09\),解 \((0.2+0.1t_i)^2t_i=0.009i\);由于 \(u=e^{\sqrt{V/N}}\) 只依赖总方差,欧式期权价格应接近 BSM(\(\sigma=0.3\))的价格;但要注意 \(p\) 中 \(\Delta t\) 应取每步的实际长度。
-
美国铜期货价格的期限结构给出各期限的期货价格。解释为什么可以用"期货价格 = 风险中性期望价格"来设定每一步的增长因子,并说明这如何对应 21.5 节的时变参数思想。 提示:\(a_i=F(t_{i+1})/F(t_i)\),概率按 (21.12) 的形式随时间变化,树的几何不变(原书习题 21.19、21.20)。
原书推荐习题:21.2、21.10(手算美式看跌二叉树,熟悉倒推与提前行权判断);21.12、21.27(离散美元股息的树构造);21.13、21.26(控制变量技术);21.19、21.20(由期货期限结构构造非恒定增长率的树);21.29(从矩匹配角度推导树参数);21.30(编程研究收敛性、控制变量与隐含波动率反解)。此外 21.4、21.11(玉米、小麦期货美式看涨)、21.14、21.33(指数美式看跌与希腊字母)、21.25(瑞郎美式看跌)、21.31、21.32(例 21.3、21.4 的延伸)可作为额外练手。
原书对照
| 本章小节 | 原书章节 | PDF 页码 |
|---|---|---|
| 章首导言 | Chapter 21 introduction | p.473 |
| 21.1 二叉树 | 21.1 Binomial Trees(例 21.1、21.2,图 21.1–21.4) | p.473–481 |
| 21.2 股指、外汇、期货 | 21.2 Using the Binomial Tree for Options on Indices, Currencies, and Futures Contracts(例 21.3、21.4) | p.481–483 |
| 21.3 付息股票 | 21.3 Binomial Model for a Dividend-Paying Stock(例 21.5,控制变量技术) | p.483–488 |
| 21.4 其他构造方法 | 21.4 Alternative Procedures for Constructing Trees(例 21.6,三叉树,自适应网格) | p.488–491 |
| 21.5 时变参数 | 21.5 Time-Dependent Parameters | p.491–492 |
| 习题 | Practice Questions 21.1–21.33 中与树相关的部分 | p.513–516 |
蒙特卡洛模拟(21.6–21.7 节)见第 21b 章,有限差分法(21.8 节)与本章小结见第 21c 章。延伸阅读:Cox, Ross & Rubinstein (1979);Figlewski & Gao (1999) 自适应网格;Hull & White (1988) 控制变量在数值方法中的应用;Rendleman & Bartter (1979);Clewlow & Strickland《Implementing Derivatives Models》。