第 15b 章 BSM 模型(下):定价公式、隐含波动率与股息
上一章我们得到了 BSM 偏微分方程和风险中性定价原理。本章把它们变成一个可以直接计算的公式,并回答实务中马上会碰到的三个问题:公式里唯一观测不到的参数——波动率——从哪里来?股票分红怎么办?公司自己发行的认股权证与普通期权有什么不同?
本章的公式和代码是全册后续内容(希腊字母、波动率微笑、数值方法)的基础,建议读者亲手把 BSM 定价与隐含波动率求解写一遍。
学习目标
- 写出并会用 BSM 欧式看涨、看跌公式,能用风险中性定价完整证明看涨公式。
- 解释 \(N(d_1)\) 与 \(N(d_2)\) 的含义,并用极限情形检查公式是否合理。
- 理解隐含波动率的定义与用途,会用二分法和 Newton–Raphson 法稳健地反解,知道什么情况下无解。
- 处理已知离散股息的欧式期权,判断含股息的美式看涨何时可能提前行权,会用 Black 近似。
- 计算新发行认股权证的价值与稀释成本,说明为何已公告的权证不必再做稀释调整。
读前导读
这一章在解决什么问题
CFA 一级、二级你已经背过 BSM 公式,也知道"\(N(d_2)\) 和行权概率有关、\(N(d_1)\) 是 delta"。这一章回答的是为什么:公式是怎么从上一章的风险中性定价"期望收益按 \(r\) 贴现"一步步算出来的,\(d_1\) 和 \(d_2\) 为什么只差一个 \(\sigma\sqrt T\),\(N(d_1)\) 为什么不是概率而 \(N(d_2)\) 是。
整条推导的骨架很简单:看涨期权到期收益是 \(\max(S_T-K,0)\),把它拆成两块——"行权时拿到一股股票"减去"行权时付出 \(K\) 元现金"。第二块的期望就是 \(K\times\) 行权概率,第一块是"股票价值 \(\times\) 只在行权时才计入"的期望。两块分别算出来、再贴现,就是 BSM 公式。数学上用到的只是正态分布的积分和一个配方技巧。
后半章是实务:隐含波动率(期权市场真正的"报价单位",类似债券用收益率而不是价格报价)、离散股息、含股息美式看涨的提前行权、认股权证的稀释。
需要先想起来的数学
1. 累积正态分布 \(N(x)\) 与密度 \(N'(x)\)。 \(N(x)=P(Z\le x)\),\(Z\) 为标准正态;\(N'(x)=\frac1{\sqrt{2\pi}}e^{-x^2/2}\) 是钟形曲线的高度。对称性:\(N(-x)=1-N(x)\)。例:\(N(0)=0.5\),\(N(1.96)=0.975\),\(N'(0)=0.399\)。见 第 00 册第 07 章 概率中的分析工具。
2. 期望是积分、截断期望。 连续变量的期望 \(E[g(V)]=\int g(v)f(v)\,dv\)。期权只在 \(V>K\) 时有收益,所以积分下限是 \(K\),这叫"截断"。例:\(Z\) 标准正态,\(E[Z\mathbf 1_{Z>0}]=\int_0^\infty z N'(z)dz=N'(0)=0.399\)。\(\mathbf 1_{A}\) 是示性函数:事件 \(A\) 发生取 1,否则取 0。见 第 00 册第 03 章 积分。
3. 积分换元。 把对 \(V\) 的积分换成对标准化变量 \(Q=(\ln V-m)/w\) 的积分,积分上下限要跟着换。就像把债券的现金流从按日期排列换成按"距今年数"排列,内容不变,只是坐标变了。见 第 00 册第 03 章 积分。
4. 配方。 \(-\tfrac12Q^2+wQ=-\tfrac12(Q-w)^2+\tfrac12w^2\)。这一步把"指数函数乘正态密度"变成"平移后的正态密度乘常数",是 BSM 证明的核心技巧。可以展开右边自己验算一次。
5. 牛顿法。 解 \(g(x)=0\):从猜测 \(x_0\) 出发,\(x_{1}=x_0-g(x_0)/g'(x_0)\),即沿切线走到零点。你在 CFA 里用计算器求 IRR/YTM 时,计算器内部做的就是这件事。见 第 00 册第 02 章 导数与泰勒展开。
怎么读这一章
核心必读:15.8 节(公式、证明、\(N(d_1)\) 与 \(N(d_2)\) 的含义、极限检查)和 15.11 节(隐含波动率)。15.8 的引理证明建议对照讲解框逐行推一遍,这是全册最值得亲手推导的一段。15.12 节股息中"美式看涨提前行权"的条件推导可以先看结论;15.10 节权证是 CFA 熟悉的稀释概念,快速阅读即可。"验证 PDE"一段第一次可以跳过,第 19a 章算希腊字母时再回来读。
15.8 BSM 定价公式
公式
第 11–13 章已经提前借用这组公式生成"理论价"、作为二叉树收敛的参照,这里给出它的正式推导与含义。不付息股票的欧式看涨与看跌期权价格为
\(N(x)\) 是标准正态分布的累积分布函数(cumulative distribution function),即标准正态变量小于 \(x\) 的概率。\(S_0\) 为当前股价,\(K\) 为执行价,\(r\) 为连续复利无风险利率,\(\sigma\) 为波动率,\(T\) 为期限。
一般时刻 \(t\) 的形式只需把 \(S_0\) 换成 \(S\)、\(T\) 换成剩余期限 \(T-t\):
得到这个公式有两条路:一是在边界条件 \(c(S,T)=\max(S-K,0)\) 下求解 PDE (15.16);二是风险中性定价
下面走第二条路,它只需要一个关于对数正态变量的引理。
白话解释:先看整体结构再看证明。\(\max(S_T-K,0)=S_T\mathbf 1_{S_T>K}-K\mathbf 1_{S_T>K}\)(\(\mathbf 1_{S_T>K}\) 是"行权则为 1,否则为 0")。所以看涨期权 = 一个"到期若 \(S_T>K\) 就给你一股股票"的合约,减去一个"到期若 \(S_T>K\) 就给你 \(K\) 元现金"的合约。 第二个合约好算:期望是 \(K\times\hat P(S_T>K)\),贴现后是 \(Ke^{-rT}N(d_2)\)。 第一个合约难一点:股票只在涨得高时才计入,所以期望不是"股价期望 × 概率",而要算条件期望。下面的引理就是在处理这一块,结果是 \(S_0N(d_1)\)。 两块相减就是 BSM 公式。\(S_0N(d_1)\) 和 \(Ke^{-rT}N(d_2)\) 分别是这两个"二元期权"(资产或无、现金或无)今天的价值。
证明:一个关于对数正态的引理
引理。 若 \(V\) 服从对数正态分布,\(\ln V\) 的标准差为 \(w\),则
证明。 设 \(g(V)\) 为 \(V\) 的密度,则
记 \(\ln V\) 的均值为 \(m\)。由对数正态的期望公式 \(E(V)=e^{m+w^2/2}\),
作标准化 \(Q=(\ln V-m)/w\),\(Q\) 为标准正态,密度 \(h(Q)=\frac1{\sqrt{2\pi}}e^{-Q^2/2}\)。\(V=e^{Qw+m}\),\(V>K\) 等价于 \(Q>(\ln K-m)/w\),于是
推导拆解:从 (15A.2) 到 (15A.5) 做了三件事。 第一,换元:\(V=e^{Qw+m}\),所以对 \(V\) 的积分换成对 \(Q\) 的积分,\(g(V)dV\) 换成 \(h(Q)dQ\)(两者都表示"落在这一小段的概率",换元前后概率不变)。 第二,换积分下限:\(V>K\iff\ln V>\ln K\iff Q>(\ln K-m)/w\)。 第三,把 \((V-K)\) 拆开:\(\int(V-K)h\,dQ=\int Vh\,dQ-K\int h\,dQ\),其中 \(V=e^{Qw+m}\)。 第二个积分 \(\int_{a}^\infty h(Q)dQ\) 就是 \(P(Q>a)=1-N(a)=N(-a)\),所以它等于 \(N[(m-\ln K)/w]\),这就是行权概率。
第一个被积函数可以配方:
所以
第一个积分等于 \(1-N[(\ln K-m)/w-w]=N[(m-\ln K)/w+w]\),代入 (15A.3):
第二个积分等于 \(N[(m-\ln K)/w]=N(d_2)\)。又 \(e^{m+w^2/2}=E(V)\),引理得证。\(\square\)
推导拆解:配方这一步逐项展开如下。 \(e^{Qw+m}h(Q)=\frac1{\sqrt{2\pi}}\exp\!\big(Qw+m-\tfrac12Q^2\big)\)。 指数里 \(-\tfrac12Q^2+wQ=-\tfrac12(Q^2-2wQ+w^2)+\tfrac12w^2=-\tfrac12(Q-w)^2+\tfrac12w^2\)(加一个 \(w^2\) 再减一个 \(w^2\))。 所以整体 \(=e^{m+w^2/2}\cdot\frac1{\sqrt{2\pi}}e^{-(Q-w)^2/2}=E(V)\cdot h(Q-w)\)。 \(h(Q-w)\) 是均值为 \(w\) 的正态密度,即整条钟形曲线向右平移了 \(w\)。对它从 \(a=(\ln K-m)/w\) 积到 \(\infty\),等价于标准正态从 \(a-w\) 积到 \(\infty\),结果是 \(N(w-a)\)。 再把 \(m=\ln E(V)-w^2/2\) 代进去,就得到 \(d_1\) 的表达式。\(d_1\) 和 \(d_2\) 正好差 \(w=\sigma\sqrt T\),来源就是这次平移。
白话解释:这次平移有明确含义。"股票乘以行权示性函数"的期望里,股价高的情形权重更大(股价越高,那一股越值钱)。数学上,乘以 \(e^{Qw}\) 就是把概率重心往高股价方向推,推的距离恰好是一个 \(\sigma\sqrt T\)。所以 \(N(d_1)>N(d_2)\):在"以股票价值加权"的眼光看,行权的可能性比按普通概率看更大。第 28 章会把这个加权正式称为"以股票为计价单位的测度"。
应用到 BSM。 风险中性世界中 \(S_T\) 是对数正态的,\(\hat E(S_T)=S_0e^{rT}\),\(\ln S_T\) 的标准差 \(w=\sigma\sqrt T\)。代入引理:
看跌公式 (15.21) 可类似证明,或直接由看涨-看跌平价 \(c+Ke^{-rT}=p+S_0\) 加上 \(N(x)+N(-x)=1\) 得到。
这个引理很值得记住:后面第 17 章的 Merton 公式、第 18 章的 Black 模型,都只是把 \(E(V)\) 换成别的东西——分别是 \(S_0e^{(r-q)T}\) 和 \(F_0\)。
理解 \(N(d_1)\) 与 \(N(d_2)\)
把公式拆开看:
- \(N(d_2)\) 是风险中性世界中看涨期权被行权的概率 \(\hat P(S_T>K)\)。
- \(S_0N(d_1)e^{rT}\) 是风险中性世界中"\(S_T\) 若低于 \(K\) 记为 0"之后的期望,即 \(\hat E[S_T\mathbf 1_{S_T>K}]\)。
所以风险中性期望收益是 \(\hat E[S_T\mathbf 1_{S_T>K}]-K\hat P(S_T>K)=S_0N(d_1)e^{rT}-KN(d_2)\),贴现即得 (15.20)。也可以写成
各因子依次为:贴现因子、行权概率、行权条件下股价的期望值、行权时支付的执行价。
金融直觉:用例 15.6 的数字体会一下(\(S_0=42\),\(K=40\),\(N(d_1)=0.7791\),\(N(d_2)=0.7349\),\(Ke^{-rT}=38.049\),\(e^{rT}=1.0513\))。 风险中性行权概率 73.5%。若行权,你付 40 元,这部分现值 \(38.049\times0.7349=27.96\)。 若行权,你拿到股票;行权条件下股价的风险中性期望是 \(\frac{S_0e^{rT}N(d_1)}{N(d_2)}=\frac{42\times1.0513\times0.7791}{0.7349}=46.81\),高于执行价,这部分现值 \(42\times0.7791=32.72\)。 期权价值 \(32.72-27.96=4.76\)。 再看 delta:股价涨 1 元,期权大约涨 \(N(d_1)=0.78\) 元。这和债券的久期一样,是价格对标的的一阶敏感度。所以 \(N(d_1)\) 同时有两个身份:公式里"资产或无"那一块的权重,以及对冲时每份期权需要的股数。
两点提醒:(1)\(N(d_2)\) 是风险中性概率,真实世界的行权概率要把 \(d_2\) 中的 \(r\) 换成 \(\mu\)(原书习题 15.8);(2)\(N(d_1)\) 不是任何"行权概率",它的主要身份是看涨期权的 delta(第 19a 章),也是以股票为计价单位时的行权概率(第 28 章测度变换)。
极限检查
好的公式应当在极端情况下给出显然的答案。
\(S_0\) 很大。 看涨几乎必被行权,相当于交割价为 \(K\) 的远期,价值应为 \(S_0-Ke^{-rT}\)。此时 \(d_1,d_2\to+\infty\),\(N(d_1),N(d_2)\to1\),公式给出 \(S_0-Ke^{-rT}\);看跌价格 \(\to0\)。✓
\(\sigma\to0\)。 股票几乎无风险,\(S_T=S_0e^{rT}\),看涨收益为 \(\max(S_0e^{rT}-K,0)\),现值 \(\max(S_0-Ke^{-rT},0)\)。若 \(S_0>Ke^{-rT}\),则 \(\ln(S_0/K)+rT>0\),\(d_1,d_2\to+\infty\),\(c=S_0-Ke^{-rT}\);若 \(S_0<Ke^{-rT}\),则 \(d_1,d_2\to-\infty\),\(c=0\)。✓ 看跌同理趋于 \(\max(Ke^{-rT}-S_0,0)\)。
验证 PDE。 原书习题 15.17 要求直接验证 (15.20) 满足 PDE。关键恒等式是
推导拆解:下面的证明每一步依据如下。\(N'(x)=\frac1{\sqrt{2\pi}}e^{-x^2/2}\),所以 \(N'(d_2)/N'(d_1)=e^{-d_2^2/2+d_1^2/2}\);平方差公式 \(d_1^2-d_2^2=(d_1+d_2)(d_1-d_2)\);\(d_1-d_2=\sigma\sqrt{T-t}\),\(d_1+d_2=2[\ln(S/K)+r(T-t)]/(\sigma\sqrt{T-t})\),两者相乘再除以 2 正好是 \(\ln(S/K)+r(T-t)\)。求 \(\partial c/\partial S\) 时 \(d_1\)、\(d_2\) 都依赖 \(S\),所以要用链式法则(乘积法则加上 \(N(d_1(S))\) 对 \(S\) 求导 \(=N'(d_1)\cdot\partial d_1/\partial S\))。
证明:\(N'(d_2)/N'(d_1)=e^{(d_1^2-d_2^2)/2}=e^{(d_1+d_2)(d_1-d_2)/2}=e^{\ln(S/K)+r(T-t)}=\dfrac{S}{K}e^{r(T-t)}\)。有了它,\(\partial c/\partial S=N(d_1)+SN'(d_1)\partial d_1/\partial S-Ke^{-r(T-t)}N'(d_2)\partial d_2/\partial S=N(d_1)\)(后两项因 \(\partial d_1/\partial S=\partial d_2/\partial S\) 而抵消)。这个恒等式在第 19a、19b 章计算希腊字母时会反复用到。
美式期权与实务细节
- 不付息股票的美式看涨永远不应提前行权(第 11 章),所以 (15.20) 也是美式看涨的价格。
- 美式看跌没有精确的解析公式,需用二叉树等数值方法(原书第 21 章)。
- 实务中 \(r\) 取与期权期限 \(T\) 相同的零息利率。当 \(r\) 是时间的已知函数时这在理论上正确;利率随机时,只要 \(S_T\) 对数正态且波动率参数选得恰当,也正确。期限按"剩余交易日数 / 252"计。
15.9 累积正态分布函数与数值例
计算 \(N(x)\) 可以查书末附表,在 Excel 中用 NORMSDIST,在 Python 中用 scipy.stats.norm.cdf。
例 15.6 \(S_0=42\),\(K=40\),\(r=0.1\),\(\sigma=0.2\),\(T=0.5\)。 \(d_1=\dfrac{\ln(42/40)+(0.1+0.02)\times0.5}{0.2\sqrt{0.5}}=0.7693\),\(d_2=\dfrac{\ln(42/40)+(0.1-0.02)\times0.5}{0.2\sqrt{0.5}}=0.6278\),\(Ke^{-rT}=40e^{-0.05}=38.049\)。 \(N(0.7693)=0.7791\),\(N(0.6278)=0.7349\),\(N(-0.7693)=0.2209\),\(N(-0.6278)=0.2651\)。 \(c=42\times0.7791-38.049\times0.7349=4.76\),\(p=38.049\times0.2651-42\times0.2209=0.81\)。
不计资金的时间价值,看涨买方要股价上涨 2.76 才盈亏平衡(\(40+4.76-42\)),看跌买方要股价下跌 2.81(\(42-(40-0.81)\))。
15.11 隐含波动率
定义与求解
BSM 公式中,\(S_0\)、\(K\)、\(r\)、\(T\) 都能直接观测,唯一观测不到的是 \(\sigma\)。交易员实际使用的是隐含波动率(implied volatility):使模型价格等于市场价格的那个 \(\sigma\)。
例 不付息股票欧式看涨的市场价格为 1.875,\(S_0=21\),\(K=20\),\(r=0.1\),\(T=0.25\)。(15.20) 不能解析地反解出 \(\sigma\),只能迭代:
- 试 \(\sigma=0.20\),得 \(c=1.76\),偏低;看涨价格随 \(\sigma\) 递增,所以 \(\sigma\) 应更大。
- 试 \(\sigma=0.30\),得 \(c=2.10\),偏高;试 \(0.25\) 仍偏高,所以 \(\sigma\in(0.20,0.25)\)。
- 每次把区间减半(二分法),可达任意精度。答案 \(\sigma=23.5\%\)。
二分法稳健但慢(每次只减半区间)。实务多用 Newton–Raphson 法:
通常 3–5 次迭代就收敛到 \(10^{-10}\)。工程上要注意三件事:
金融直觉:隐含波动率之于期权价格,正如到期收益率之于债券价格。债券价格不同票息、不同期限无法直接比,换算成 YTM 就能比;期权价格不同执行价、不同期限无法直接比,换算成隐含波动率就能比。求 YTM 时你用的是"价格对收益率的导数(修正久期 × 价格)"做牛顿迭代,求隐含波动率时用的是 vega。vega 小时迭代不稳,正像久期很短的票据,价格差一点,倒推出的收益率会差很多。
- 解的存在性。 看涨价格关于 \(\sigma\) 严格递增,且 \(\sigma\to0\) 时趋于下界 \(\max(S_0-Ke^{-rT},0)\)、\(\sigma\to\infty\) 时趋于上界 \(S_0\)。所以只有当市场价格严格落在这两个界之间时才有唯一解;越界的报价(常见于深度实值、报价陈旧或含提前行权溢价的美式期权)应标记为无解,而不是硬算。
- vega 很小时 Newton 不稳定。 深度实值或虚值期权的 vega 接近 0,牛顿步长会爆炸。稳健做法是 Newton 失败时退回二分法或 Brent 法。
- 深度虚实值的隐含波动率噪声大。 价格误差 \(\delta c\) 造成的隐含波动率误差约为 \(\delta c/\mathcal V\),vega 越小放大得越厉害。构建波动率曲面时通常只用平值附近和虚值一侧的期权。
美式期权的隐含波动率用二叉树配合同样的搜索得到。
用途
- 隐含波动率反映市场对未来波动的看法,是向前看的;历史波动率是向后看的。
- 交易员常直接用隐含波动率报价而不是用价格报价,因为它比价格稳定得多:股价一动,期权价格就变,但隐含波动率可能几乎不动。
- 第 20 章将看到:同一标的、不同执行价和期限的期权,隐含波动率并不相同(波动率微笑),交易员用活跃期权的隐含波动率来推断其他期权的合适波动率。
VIX 指数
芝加哥期权交易所(CBOE)发布隐含波动率指数。最有名的 VIX 由大量标普 500 指数看涨、看跌期权计算,代表标普 500 的 30 天期隐含波动率,俗称"恐慌指数(fear factor)";VIX 为 15 表示 30 天隐含波动率约为 15%。计算方法见原书第 26.15 节。类似指数还有 Nasdaq 100 的 VXN、道琼斯工业指数的 VXD。
VIX 期货 2004 年上市,VIX 期权 2006 年上市,每份合约为指数 × 1,000 美元。
例 15.8 以 18.5 买入 4 月 VIX 期货,在 19.3 平仓,盈利 \((19.3-18.5)\times1{,}000=800\) 美元。
标普 500 期货和期权同时押注指数水平与波动率,VIX 期货、期权则只押注波动率。原书图 15.4 展示了 2004 年 1 月至 2013 年 6 月的 VIX:2004 年到 2007 年中多在 10–20 之间;2007 年下半年升到 30;雷曼破产后的 2008 年 10–11 月创下 80 的纪录;2010 年初回落,2010 年 5 月和 2011 年下半年因市场压力再次飙升。
15.12 股息
假设期权期内股息的金额和时间都能确定地预测(短期期权比较合理;长期期权通常改为假设已知股息率,见第 17 章)。股息按除息日(ex-dividend date)处理:除息日股价下跌股息额。严格说,因税收原因股价跌幅可能小于现金股息,期权定价中的"股息"应理解为除息日股价因股息而下跌的量——若股息 1 美元而股价通常下跌其 80%,就取 0.80。
欧式期权
把股价分成两部分:
- 无风险部分:期权期内已知股息的现值(各笔股息从除息日按无风险利率贴现到今天);
- 风险部分:其余。
到期时股息已经支付,无风险部分消失。所以只要把 \(S_0\) 换成风险部分、把 \(\sigma\) 理解为风险部分的波动率,BSM 公式依然正确。操作上就是:
将股价减去期权期内(除息日落在期内的)所有股息的现值,再代入 BSM。
(严格说,风险部分的波动率与整只股票的波动率不同,二者不可能同时服从 GBM;时刻 0 时前者约为后者乘以 \(S_0/(S_0-D)\),\(D\) 为股息现值。)
例 15.9 除息日在 2 个月和 5 个月后,每次 0.50 美元;\(S_0=40\),\(K=40\),\(\sigma=30\%\),\(r=9\%\),\(T=0.5\)。 股息现值 \(0.5e^{-0.09\times2/12}+0.5e^{-0.09\times5/12}=0.9742\),调整后 \(S_0=39.0258\)。 \(d_1=\dfrac{\ln(39.0258/40)+(0.09+0.045)\times0.5}{0.3\sqrt{0.5}}=0.2020\),\(d_2=0.0102\),\(N(d_1)=0.5800\),\(N(d_2)=0.4959\)。 \(c=39.0258\times0.5800-40e^{-0.045}\times0.4959=3.67\)。
一个争论。 有学者认为波动率应作用于整个股价,而不是扣除股息现值后的部分,并提出了多种数值方法(如 Areal & Rodrigues 2013 的离散股息快速树)。如果波动率来自历史数据,这些方法或许有意义;但实务中波动率几乎总是从其他期权价格隐含出来的(第 20 章),只要隐含和应用使用同一个模型,价格就是准确的,对模型细节不敏感。另外,实务中欧式期权常以标的的远期价格估值(第 18 章),不必显式估计股息;远期股价的波动率恰好等于"股价减股息现值"的波动率。所以这个两部分模型内部一致,被广泛使用。
美式看涨期权的提前行权
第 11 章证明了无股息时美式看涨不应提前行权。有股息时,提前行权只可能在除息日前的瞬间是最优的(其他时刻行权只会损失利息和期权的保险价值)。
设有 \(n\) 个除息日 \(t_1<\dots<t_n\),股息为 \(D_1,\dots,D_n\)。
最后一个除息日 \(t_n\)。 若在除息前行权,得 \(S(t_n)-K\)。若不行权,股价跌为 \(S(t_n)-D_n\),此后再无股息,期权价值由下界 (11.4) 不低于 \(S(t_n)-D_n-Ke^{-r(T-t_n)}\)。因此若
在 \(t_n\) 行权就不是最优的。反之若
白话解释:(15.24) 是一笔账:除息前行权,你拿到这笔股息 \(D_n\);但你要提前付出 \(K\),损失这笔钱从 \(t_n\) 到 \(T\) 的利息 \(K[1-e^{-r(T-t_n)}]\),同时放弃剩余期限内"股价跌回 \(K\) 以下可以不行权"的保险。下界只算了利息、没算保险价值,所以当股息连利息都抵不过时,提前行权一定不划算;股息超过利息时,只有在期权深度实值、保险几乎不值钱时才划算。
那么对任何合理的股价过程,当 \(S(t_n)\) 足够高时在 \(t_n\) 行权是最优的。最后除息日离到期越近(\(T-t_n\) 越小)、股息越大,(15.25) 越容易成立。
更早的除息日 \(t_i\)(\(i<n\))。 不行权时最早的下一个行权时点是 \(t_{i+1}\),同理可得:若
则在 \(t_i\) 之前行权不是最优。(15.26) 近似为 \(D_i\le Kr(t_{i+1}-t_i)\):当 \(K\) 接近股价时,相当于"两次除息之间的股息率低于无风险利率",通常成立。
结论。 在许多情况下,美式看涨最可能提前行权的时点是最后一个除息日之前。若对 \(i=1,\dots,n-1\) 都满足 (15.26),且 (15.24) 也成立,提前行权就从不是最优的,美式看涨可以按欧式处理。
Black 近似
Black 建议:分别计算到期日为 \(T\) 和 \(t_n\) 的两个欧式期权价格(都用上面的股息调整法),取两者中的较大者作为美式看涨价格的近似。之所以只是近似,是因为它实际上假设持有人必须在时刻 0 就决定在 \(T\) 还是在 \(t_n\) 行权,而真实的持有人可以等到 \(t_n\) 看情况再决定——所以 Black 近似低估美式期权价值。只有一个除息日时有 Roll–Geske–Whaley 精确公式,涉及二元正态分布(作者网站 Technical Notes 4、5)。
在例 15.9 的数据下,最后除息日 \(t_n=5/12\),\(K[1-e^{-r(T-t_n)}]=40[1-e^{-0.09/12}]=0.30<0.50\),满足 (15.25),提前行权可能最优。到期日 5 个月的欧式看涨(只扣除第一笔股息)价值 3.52,小于 6 个月欧式看涨的 3.67,因此 Black 近似给出 3.67(见下面代码输出)。
15.10 认股权证与员工股票期权
普通看涨期权行权时,卖方需从市场上买股票交给买方,公司流通股数不变。认股权证(warrants)和员工股票期权(employee stock options, ESO)不同:行权时公司增发新股,以执行价卖给持有人,这会稀释现有股东。
拟新发行权证的成本
公司有 \(N\) 股,股价 \(S_0\),计划发行 \(M\) 份期权,每份可按 \(K\) 买 1 股,期限 \(T\)。设"不发行权证"时到期股价为 \(S_T\),则权益总值为 \(NS_T\)。若持有人行权,公司收到 \(MK\) 现金,权益总值变为 \(NS_T+MK\),分摊到 \(N+M\) 股,每股值 \(\frac{NS_T+MK}{N+M}\)。持有人的收益为
所以每份权证的价值等于 \(\dfrac{N}{N+M}\) 份普通看涨期权(执行价 \(K\)、期限 \(T\))的价值,总成本是它的 \(M\) 倍。若发行没有带来补偿性收益,消息公布后股价会立即下跌 \(\dfrac{M}{N+M}\) 份普通看涨的价值。
例 15.7 公司有 100 万股,股价 40;拟发行 20 万份 5 年期权证,执行价 60;\(r=3\%\),\(\sigma=30\%\),无股息。 5 年期欧式看涨 BSM 价值 7.04;每份权证 \(\frac{1{,}000{,}000}{1{,}200{,}000}\times7.04=5.87\);总成本 \(200{,}000\times5.87\approx117\) 万美元;若市场认为发行毫无收益,股价下跌 1.17 至 38.83。
已发行的权证不必再调整稀释
Business Snapshot 15.3 权证、员工期权与稀释 公司有 10 万股,股价 50,意外宣布授予员工 10 万份执行价 50 的期权。若市场认为这对股东好处不大,股价立即下跌,比如跌到 45,现有股东的稀释成本为每股 5 美元、共 50 万美元。三年后股价 100,员工全部行权,每份获利 50。 有人会说"届时 10 万股每股值 100 的老股和 10 万股只付了 50 的新股合并,股价降到 75,员工每份只赚 25"——这是错的。行权早已被市场预期并反映在股价中,100 已经是"稀释后"的价格。
结论:市场有效时,稀释的影响在公告时就体现在股价里。为已发行(已公告)的权证或员工期权估值时,直接用观测到的股价,不要再做稀释调整。(也有分析师假设"权益 + 权证"总值服从对数正态,得到以权证价值表示的 BSM 型方程,见作者网站 Technical Note 3。)员工期权的其他特殊性(归属期、不可转让、提前行权)是第 16 章的主题。
量化实战:BSM 定价库与隐含波动率求解器
任何期权相关的量化系统——做市、波动率套利、风险管理、回测——底层都有两个函数:给定波动率算价格、给定价格反解隐含波动率。下面的实现:
bsm支持连续股息率 \(q\)(第 17 章会用到;\(q=0\) 即本章情形)且支持 numpy 向量化;implied_vol先做无套利界检查,再用 Newton–Raphson,失败时退回 Brent 法;- 依次复现例 15.6、隐含波动率例子(并对比二分法的迭代次数)、模拟一条有偏斜的期权链并加上报价噪声后反解隐含波动率、用风险中性蒙特卡洛核对价格和 \(N(d_2)\)、例 15.9 与 Black 近似、例 15.7 权证。
import numpy as np
from scipy.stats import norm
from scipy.optimize import brentq
def bsm(S, K, T, r, sigma, q=0.0, kind="call"):
"""欧式期权 BSM 价格(q 为连续股息率,q=0 即不付息股票)。支持 numpy 广播。"""
S, K, T, sigma = map(np.asarray, (S, K, T, sigma))
d1 = (np.log(S / K) + (r - q + 0.5 * sigma**2) * T) / (sigma * np.sqrt(T))
d2 = d1 - sigma * np.sqrt(T)
if kind == "call":
return S * np.exp(-q * T) * norm.cdf(d1) - K * np.exp(-r * T) * norm.cdf(d2)
return K * np.exp(-r * T) * norm.cdf(-d2) - S * np.exp(-q * T) * norm.cdf(-d1)
def vega(S, K, T, r, sigma, q=0.0):
d1 = (np.log(S / K) + (r - q + 0.5 * sigma**2) * T) / (sigma * np.sqrt(T))
return S * np.exp(-q * T) * np.sqrt(T) * norm.pdf(d1)
def implied_vol(price, S, K, T, r, q=0.0, kind="call", tol=1e-10):
"""先检查无套利界,再用 Newton–Raphson(以 vega 为导数),失败时退回 Brent 法。"""
disc_S, disc_K = S * np.exp(-q * T), K * np.exp(-r * T)
lower = max(disc_S - disc_K, 0) if kind == "call" else max(disc_K - disc_S, 0)
upper = disc_S if kind == "call" else disc_K
if not (lower < price < upper):
return np.nan # 价格越界,无解
sig = np.sqrt(2 * abs(np.log(S / K) + (r - q) * T) / T) + 0.1 # 常用初值
for _ in range(50):
diff = bsm(S, K, T, r, sig, q, kind) - price
v = vega(S, K, T, r, sig, q)
if abs(diff) < tol:
return float(sig)
if v < 1e-8:
break
sig -= diff / v
if not (1e-4 < sig < 5):
break
f = lambda s: bsm(S, K, T, r, s, q, kind) - price
return brentq(f, 1e-6, 5.0, xtol=tol)
# ---- 1) 例 15.6 ----
c = bsm(42, 40, 0.5, 0.10, 0.20); p = bsm(42, 40, 0.5, 0.10, 0.20, kind="put")
print(f"例15.6 c={c:.4f} p={p:.4f} 平价检查 c+Ke^-rT-p-S0={c+40*np.exp(-0.05)-p-42:.2e}")
# ---- 2) 隐含波动率:原书 15.11 节的例子,二分法与 Newton 对比 ----
S, K, T, r, mkt = 21, 20, 0.25, 0.10, 1.875
lo, hi, it = 0.20, 0.30, 0
while hi - lo > 1e-6:
mid = 0.5 * (lo + hi); it += 1
lo, hi = (mid, hi) if bsm(S, K, T, r, mid) < mkt else (lo, mid)
print(f"二分法 {it} 次迭代: sigma={0.5*(lo+hi):.5f};Newton+Brent: {implied_vol(mkt, S, K, T, r):.5f}")
print("越界价格 0.5(低于下界 S-Ke^-rT)的隐含波动率:", implied_vol(0.5, S, K, T, r))
# ---- 3) 模拟一条期权链:带偏斜的"真实"波动率 -> 价格 -> 反解隐含波动率 ----
S0, T, r = 100.0, 0.5, 0.03
strikes = np.arange(70, 135, 5.0)
true_iv = 0.22 - 0.25 * np.log(strikes / S0) + 0.4 * np.log(strikes / S0)**2
prices = bsm(S0, strikes, T, r, true_iv)
rng = np.random.default_rng(7)
noisy = prices + rng.normal(0, 0.005, size=prices.size) # 半个美分的报价噪声
iv_back = np.array([implied_vol(pr, S0, k, T, r) for pr, k in zip(noisy, strikes)])
for k, a, b, pr in zip(strikes, true_iv, iv_back, noisy):
print(f"K={k:5.0f} 价格={pr:7.3f} 真实IV={a:.4f} 反解IV={b:.4f}")
# ---- 4) 风险中性蒙特卡洛核对 BSM,以及 N(d2) = 风险中性行权概率 ----
S0, K, T, r, sig = 42, 40, 0.5, 0.10, 0.20
Z = rng.standard_normal(1_000_000)
ST = S0 * np.exp((r - 0.5 * sig**2) * T + sig * np.sqrt(T) * Z)
mc = np.exp(-r * T) * np.maximum(ST - K, 0)
d2 = (np.log(S0 / K) + (r - 0.5 * sig**2) * T) / (sig * np.sqrt(T))
print(f"MC 价格 {mc.mean():.4f} ± {1.96*mc.std()/np.sqrt(mc.size):.4f};P(S_T>K)={np.mean(ST>K):.4f},N(d2)={norm.cdf(d2):.4f}")
# ---- 5) 离散股息:例 15.9 与 Black 近似 ----
S0, K, sig, r, T = 40, 40, 0.30, 0.09, 0.5
divs = [(2/12, 0.5), (5/12, 0.5)]
pv_all = sum(D * np.exp(-r * t) for t, D in divs)
c_T = bsm(S0 - pv_all, K, T, r, sig) # 持有到期
pv_first = divs[0][1] * np.exp(-r * divs[0][0])
c_tn = bsm(S0 - pv_first, K, 5/12, r, sig) # 在最后除息日前行权
print(f"股息现值={pv_all:.4f} 欧式看涨={c_T:.4f} 到期日=5个月的欧式={c_tn:.4f} Black 近似={max(c_T, c_tn):.4f}")
print(f"最后除息日能否提前行权? D_n={divs[1][1]} vs K(1-e^(-r(T-t_n)))={K*(1-np.exp(-r*(T-5/12))):.4f}")
# ---- 6) 例 15.7:认股权证 ----
c5 = bsm(40, 60, 5, 0.03, 0.30)
w = 1_000_000 / 1_200_000 * c5
print(f"5年看涨={c5:.4f} 每份权证={w:.4f} 总成本={200_000*w/1e6:.3f} 百万 股价跌幅={200_000*w/1_000_000:.3f}")
关键输出:
例15.6 c=4.7594 p=0.8086 平价检查 c+Ke^-rT-p-S0=0.00e+00
二分法 17 次迭代: sigma=0.23451;Newton+Brent: 0.23451
越界价格 0.5(低于下界 S-Ke^-rT)的隐含波动率: nan
K= 70 价格= 31.717 真实IV=0.3601 反解IV=0.3601
K= 75 价格= 26.982 真实IV=0.3250 反解IV=0.3252
K= 80 价格= 22.364 真实IV=0.2957 反解IV=0.2956
...
K= 100 价格= 6.927 真实IV=0.2200 反解IV=0.2200
...
K= 125 价格= 0.338 真实IV=0.1841 反解IV=0.1843
K= 130 价格= 0.152 真实IV=0.1819 反解IV=0.1820
MC 价格 4.7581 ± 0.0097;P(S_T>K)=0.7353,N(d2)=0.7349
股息现值=0.9742 欧式看涨=3.6712 到期日=5个月的欧式=3.5246 Black 近似=3.6712
最后除息日能否提前行权? D_n=0.5 vs K(1-e^(-r(T-t_n)))=0.2989
5年看涨=7.0402 每份权证=5.8669 总成本=1.173 百万 股价跌幅=1.173
几点观察:
- 原书例题(4.76、0.81、23.5%、3.67、7.04、5.87)全部复现。二分法要 17 次迭代才达到 \(10^{-6}\) 精度,Newton 法一般只需 3–4 次;在需要每秒反解成千上万个报价的做市系统里,这个差别很重要。
- 越界价格直接返回
nan。这一步不能省:真实期权数据里总有违背无套利下界的陈旧报价,若不过滤,求解器要么报错,要么返回一个毫无意义的极小波动率污染曲面。 - 同样 0.005 的报价噪声,在平值附近(vega 大)几乎不改变隐含波动率,在 \(K=75\)、\(K=125\) 等两翼(vega 小)造成约 2 个基点的误差;真实市场的买卖价差远大于 0.005,两翼隐含波动率的不确定性要大得多。
- 风险中性模拟的行权频率 0.7353 与 \(N(d_2)=0.7349\) 一致,印证了 \(N(d_2)\) 的概率含义。
在量化工作中,这套函数会被用来:把期权链的价格转换为隐含波动率曲面(第 20 章);比较隐含波动率与历史/预测波动率以构建波动率风险溢价策略;监控 VIX 期限结构;以及在回测中用隐含波动率而不是价格作为期权的状态变量。
本章小结
BSM 公式 \(c=S_0N(d_1)-Ke^{-rT}N(d_2)\) 可以由风险中性定价加上对数正态引理 \(E[\max(V-K,0)]=E(V)N(d_1)-KN(d_2)\) 一步得到;\(N(d_2)\) 是风险中性行权概率,\(N(d_1)\) 是看涨 delta;公式在股价极大、波动率趋零等极端情形下都给出正确的极限。波动率是唯一不可观测的参数,市场用隐含波动率报价和交流,反解时要先检查无套利界,并用 Newton 加二分/Brent 的稳健组合。已知离散股息时把股价减去期内股息现值;含股息的美式看涨只可能在除息前提前行权,最可能是最后一个除息日,Black 近似取两个欧式价格的较大者。新发行权证的价值是 \(N/(N+M)\) 份普通看涨,而已公告的权证稀释已反映在股价中。
| 概念 | 公式 / 要点 |
|---|---|
| BSM 看涨 | \(c=S_0N(d_1)-Ke^{-rT}N(d_2)\) |
| BSM 看跌 | \(p=Ke^{-rT}N(-d_2)-S_0N(-d_1)\) |
| \(d_1,d_2\) | \(d_1=\dfrac{\ln(S_0/K)+(r+\sigma^2/2)T}{\sigma\sqrt T}\),\(d_2=d_1-\sigma\sqrt T\) |
| 对数正态引理 | \(E[\max(V-K,0)]=E(V)N(d_1)-KN(d_2)\) |
| 概率含义 | \(\hat P(S_T>K)=N(d_2)\) |
| 关键恒等式 | \(SN'(d_1)=Ke^{-r(T-t)}N'(d_2)\) |
| 隐含波动率 Newton 步 | \(\sigma\leftarrow\sigma-(c(\sigma)-c_{\text{mkt}})/\mathcal V\),\(\mathcal V=S_0\sqrt TN'(d_1)\) |
| 离散股息 | \(S_0\to S_0-\text{PV(期内股息)}\) |
| 最后除息日不提前行权 | \(D_n\le K[1-e^{-r(T-t_n)}]\) |
| 权证 | 每份 \(=\dfrac{N}{N+M}\times c\) |
练习
基础
- \(S_0=52\),\(K=50\),\(r=12\%\),\(\sigma=30\%\),\(T=0.25\),求欧式看涨价格。 提示:\(d_1=0.5365\),\(d_2=0.3865\),\(c\approx5.06\)(原书习题 15.13)。
- \(S_0=69\),\(K=70\),\(r=5\%\),\(\sigma=35\%\),\(T=0.5\),求欧式看跌价格。 提示:\(p\approx6.40\)(原书习题 15.14)。
- 用例 15.6 的数据计算风险中性世界中看涨期权被行权的概率;若股票真实期望收益为 15%,真实世界的行权概率是多少? 提示:\(N(d_2)=0.7349\);把 \(d_2\) 中的 \(r=0.10\) 换成 \(\mu=0.15\) 得 \(d_2'=0.8046\),概率约 0.789。
- 某看涨期权市场价为 2.5,\(S_0=15\),\(K=13\),\(T=0.25\),\(r=5\%\)。求隐含波动率。 提示:迭代可得约 39.6%(原书习题 15.16)。
- 证明 BSM 看涨、看跌公式满足看涨-看跌平价。 提示:\(c-p=S_0[N(d_1)+N(-d_1)]-Ke^{-rT}[N(d_2)+N(-d_2)]=S_0-Ke^{-rT}\)(原书习题 15.18)。
进阶
- 证明 \(SN'(d_1)=Ke^{-r(T-t)}N'(d_2)\),并由此推出 \(\partial c/\partial S=N(d_1)\)。 提示:见 15.8 节"验证 PDE"(原书习题 15.17)。
- 股价 70,执行价 65,\(\sigma=32\%\),\(r=10\%\),\(T=0.5\),3 个月后有 1 美元股息。求欧式看涨价格,并判断美式看涨是否可能在除息日提前行权。 提示:调整后股价 \(70-e^{-0.025}=69.025\),\(c\approx10.17\);\(K[1-e^{-0.1\times0.25}]=1.60>1\),不应提前行权(原书习题 15.15 的同类计算)。
- 解释 Black 近似为什么会低估美式看涨价格。 提示:它强迫持有人在时刻 0 就选定行权时点,而实际持有人可在 \(t_n\) 根据股价再决定,多一个选择权(原书习题 15.20)。
- 一个反解器在某个看涨报价上返回了 0.1% 的隐含波动率。列出至少三种可能原因及处理办法。 提示:报价几乎等于下界(深度实值,时间价值近零);报价陈旧或买卖价中点偏离;美式期权含提前行权溢价、或股息/利率参数错误使下界计算偏差。处理:检查下界、改用虚值一侧期权、用平价反推远期替代 \(S_0\) 与股息。
- 公司有 50 万股,股价 30,拟发行 10 万份 3 年期执行价 35 的权证。\(r=4\%\),\(\sigma=35\%\)。估计每份权证价值和股价下跌幅度。 提示:普通看涨约 6.76,乘 \(500/600\) 得每份约 5.63,股价下跌约 \(100{,}000\times5.63/500{,}000\approx1.13\)。
原书推荐习题:15.4、15.13、15.14(BSM 基本计算);15.5、15.31(离散股息调整与提前行权判断);15.8、15.22(\(N(d_2)\) 与真实世界概率);15.16、15.19(隐含波动率,15.19 引出波动率微笑);15.17、15.18(验证 PDE 与平价);15.20、15.32(Black 近似);15.24、15.25(稀释与员工期权成本)。
原书对照
| 本章小节 | 原书章节 | PDF 页码 |
|---|---|---|
| 15.8 BSM 定价公式 | 15.8 Black–Scholes–Merton Pricing Formulas | p.358–361 |
| 15.9 累积正态分布函数 | 15.9 Cumulative Normal Distribution Function | p.361–362 |
| 15.10 认股权证与员工期权 | 15.10 Warrants and Employee Stock Options(含 Business Snapshot 15.3) | p.362–364 |
| 15.11 隐含波动率、VIX | 15.11 Implied Volatilities | p.364–365 |
| 15.12 股息 | 15.12 Dividends | p.366–369 |
| 小结与延伸阅读 | Summary, Further Reading | p.369–370 |
| 习题 | Practice Questions | p.371–374 |
| 公式证明 | Appendix: Proof of BSM Formula Using Risk-Neutral Valuation | p.375–376 |