跳到正文

几何布朗运动:推导股票模型的主力

一步步推导 GBM、股票价格 SDE,以及为什么对数收益服从正态既有用又错。

第 2 篇 · 共 12 篇 约 11 分钟

如果你曾经为期权定价、跑过股票的 Monte Carlo、或者看过一道量化面试题,你见过几何布朗运动。它是让 Black-Scholes 公式干净地出现的 SDE。它也是一个大家都喜欢又都讨厌的模型。我们会好好推导它,看数学说了什么,老老实实说它在哪里坏掉。

这里的目标不是背公式。目标是理解 GBM 是什么、为什么、为什么量化金融这么多东西是从一个简单观察里流出来的:股票价格的对数表现得很乖。

股票价格的谜题

股票价格表现得不乖。它们上上下下,有时剧烈波动。它们有肥尾、波动率聚集,偶尔跳跃。看标普 500 日收益的经验分布,它大致是钟形,但尾部的质量太多,不是高斯。任何经历过 1987、2008 或 2020 的人都知道,“二十个 sigma”的日子比应该发生的更频繁。

那为什么用高斯驱动的 SDE 来建模?因为数学好处理。因为对很多应用(vanilla 期权定价、基础风险管理、对冲),高斯近似已经够用。因为当你推导出 Black-Scholes 这种闭式价格,你能用它拟合市场报价、再用来对冲。模型不是真相。它是有用的虚构。

几何布朗运动是我们拥有的最有用的虚构。让我告诉你为什么。

两条假设

随机过程 StS_t 是几何布朗运动,如果它满足

dSt=μSt dt+σSt dWtdS_t = \mu S_t \, dt + \sigma S_t \, dW_t

这就是整个模型。两个项:漂移 μSt\mu S_t 和扩散 σSt\sigma S_t。两者都跟当前价格成比例,这就是为什么它是几何的而不是算术的布朗运动。

直觉很直接。漂移说股票平均按速率 μ\mu 增长。扩散说噪声跟当前价格成比例。如果股票在 $100,1% 的变动是 $1$。如果股票在 $10,1% 的变动是 10 分。两者都是”1%“。这种尺度不变性正是我们建模百分比收益而不是绝对变化的原因。

第二个关键洞见是 dWtdW_t 是标准布朗运动的增量。它服从均值为 0、方差为 dtdt 的正态分布。所以在任意时刻,股票变化的均值是 μSt dt\mu S_t \, dt,标准差是 σStdt\sigma S_t \sqrt{dt}。两者都跟 StS_t 成比例,这让过程是乘性的, 绝对波动率跟水平成比例。

SDE 形式及含义

方程 dSt=μSt dt+σSt dWtdS_t = \mu S_t \, dt + \sigma S_t \, dW_t 是一个随机微分方程的简写。要严格理解它,必须写成积分形式:

St=S0+∫0tμSu du+∫0tσSu dWuS_t = S_0 + \int_0^t \mu S_u \, du + \int_0^t \sigma S_u \, dW_u

第一个积分是普通微积分。第二个是 Itô 积分,是 ∑σSti(Wti+1−Wti)\sum \sigma S_{t_i} (W_{t_{i+1}} - W_{t_i}) 这种和的极限,其中函数 σS\sigma S 在每个子区间的左端点求值。这个约定很重要。Itô 积分(在适当条件下)是鞅,这就是为什么它有好的概率性质。

对我们的目的,非正式的微分形式就够。我们可以用 Itô 引理操纵 dStdS_t,把 dWt2=dtdW_t^2 = dt 当成形式规则,恢复正确答案。这是物理学家的做法。它能工作是因为 Itô 引理保证了只要你按规则来,结果是严格的。

求解 SDE:对数技巧

要解 dSt=μSt dt+σSt dWtdS_t = \mu S_t \, dt + \sigma S_t \, dW_t,我们对 log⁡St\log S_t 应用 Itô 引理。设 f(S)=log⁡Sf(S) = \log S,所以 f′(S)=1/Sf'(S) = 1/S、f′′(S)=−1/S2f''(S) = -1/S^2。Itô 引理给出

d(log⁡St)=f′(St) dSt+12f′′(St)(dSt)2d(\log S_t) = f'(S_t) \, dS_t + \frac{1}{2} f''(S_t) (dS_t)^2

平方的微分是

(dSt)2=(μSt dt+σSt dWt)2=σ2St2(dWt)2=σ2St2 dt(dS_t)^2 = (\mu S_t \, dt + \sigma S_t \, dW_t)^2 = \sigma^2 S_t^2 (dW_t)^2 = \sigma^2 S_t^2 \, dt

因为 dt2=0dt^2 = 0、dt⋅dWt=0dt \cdot dW_t = 0、dWt2=dtdW_t^2 = dt。代入,

d(log⁡St)=1St(μSt dt+σSt dWt)+12(−1St2)(σ2St2 dt)d(\log S_t) = \frac{1}{S_t} (\mu S_t \, dt + \sigma S_t \, dW_t) + \frac{1}{2} \left(-\frac{1}{S_t^2}\right)(\sigma^2 S_t^2 \, dt) =μ dt+σ dWt−12σ2 dt=(μ−σ22)dt+σ dWt= \mu \, dt + \sigma \, dW_t - \frac{1}{2} \sigma^2 \, dt = \left(\mu - \frac{\sigma^2}{2}\right) dt + \sigma \, dW_t

所以股票价格的对数服从带常数漂移 μ−σ2/2\mu - \sigma^2/2 和常数扩散 σ\sigma 的算术布朗运动。这是关键事实。它解释了为什么 GBM 分析上好处理而算术布朗运动不好处理。

两边从 0 到 tt 积分:

log⁡St−log⁡S0=(μ−σ22)t+σWt\log S_t - \log S_0 = \left(\mu - \frac{\sigma^2}{2}\right) t + \sigma W_t

取指数:

St=S0exp⁡[(μ−σ22)t+σWt]S_t = S_0 \exp\left[\left(\mu - \frac{\sigma^2}{2}\right) t + \sigma W_t\right]

这就是显式解。GBM 的每条路径都是带漂移的布朗运动的确定性指数。指数里的 σ2/2\sigma^2/2 项是著名的 Itô 修正。它来自指数函数的凸性,普通微积分里它不会出现。初学者第一次学这个材料时最常犯的错误之一就是漏掉它。

StS_t 的分布

因为 Wt∼N(0,t)W_t \sim \mathcal{N}(0, t),我们可以直接读出 log⁡St\log S_t 的分布。它是均值为 log⁡S0+(μ−σ2/2)t\log S_0 + (\mu - \sigma^2/2)t、方差为 σ2t\sigma^2 t 的高斯。等价地,StS_t 本身是对数正态:

St∼LogNormal(log⁡S0+(μ−σ22)t,  σ2t)S_t \sim \text{LogNormal}\left(\log S_0 + \left(\mu - \frac{\sigma^2}{2}\right) t, \; \sigma^2 t\right)

对数正态分布是你把高斯取指数时得到的右偏、肥尾分布。它的均值是

E[St]=S0eμt\mathbb{E}[S_t] = S_0 e^{\mu t}

方差是

\text{Var}[S_t] = S_0^2 e^{2\mu t} \left(e^{\sigma^2 t} - 1\right

注意均值是 S0eμtS_0 e^{\mu t},不是 S0e(μ−σ2/2)tS_0 e^{(\mu - \sigma^2/2)t}。指数里的 Itô 修正只影响中位数和众数。均值来自完整分布,包括右偏尾部的贡献。

为什么对数技巧能工作

StS_t 有干净的闭式形式的原因是系数 μSt\mu S_t 和 σSt\sigma S_t 关于 StS_t 是一次齐次的。当你对 log⁡St\log S_t 应用 Itô 引理时,乘性的 StS_t 因子消掉,你最后得到一个 log⁡St\log S_t 的线性 SDE。线性 SDE 是唯一能用初等函数显式求解的。

这是 GBM 的特殊性质。加跳跃项、把常数 μ\mu 换成 μ(St)\mu(S_t) 函数、让 σ\sigma 以非线性方式依赖 StS_t,闭式就消失。Black-Scholes 公式能工作是因为 Black 和 Scholes 选了 GBM。他们不是因为它真实才选它。他们是因为它能求解才选它。

Black-Scholes 的联系

现在我们可以推导 Black-Scholes 定价的核心。假设股票在风险中性测度 Q\mathbb{Q} 下服从 GBM,漂移为 rr(无风险利率)、波动率为 σ\sigma:

dSt=rSt dt+σSt dWtQdS_t = r S_t \, dt + \sigma S_t \, dW_t^{\mathbb{Q}}

考虑一份到期日 TT、收益为 (ST−K)+(S_T - K)^+ 的欧式看涨期权。风险中性定价公式说

C0=e−rTEQ[(ST−K)+]C_0 = e^{-rT} \mathbb{E}^{\mathbb{Q}}\left[(S_T - K)^+\right]

代入 STS_T 的显式形式:

ST=S0exp⁡[(r−σ22)T+σWTQ]S_T = S_0 \exp\left[\left(r - \frac{\sigma^2}{2}\right) T + \sigma W_T^{\mathbb{Q}}\right]

期望是一个对数正态期望,可以用换元法闭式计算。结果就是著名的公式:

C0=S0Φ(d1)−Ke−rTΦ(d2)C_0 = S_0 \Phi(d_1) - K e^{-rT} \Phi(d_2)

其中 Φ\Phi 是标准正态 CDF,

d1=log⁡(S0/K)+(r+σ2/2)TσT,d2=d1−σTd_1 = \frac{\log(S_0/K) + (r + \sigma^2/2) T}{\sigma \sqrt{T}}, \quad d_2 = d_1 - \sigma \sqrt{T}

同样的机器给出看跌价格、数字期权、一大堆奇异变体。整个股票衍生品定价的大厦建立在 GBM 加上风险中性定价之上。

模拟 GBM 路径

实务中,你经常想模拟 GBM 而不是用闭式。标准做法是模拟对数收益然后取指数。下面是一个紧凑的实现。

import numpy as np

def simulate_gbm(S0, mu, sigma, T, n_steps, n_paths, seed=42):
    rng = np.random.default_rng(seed)
    dt = T / n_steps
    drift = (mu - 0.5 * sigma**2) * dt
    diffusion = sigma * np.sqrt(dt)
    Z = rng.standard_normal((n_paths, n_steps))
    log_paths = np.cumsum(drift + diffusion * Z, axis=1)
    log_paths = np.concatenate([np.zeros((n_paths, 1)), log_paths], axis=1)
    return S0 * np.exp(log_paths)

cumsum 沿每条路径累加对数收益。我们前置一列零,让 paths[:, 0] 在每个模拟里都等于 S0S_0。这是最简单、最干净的模拟方案。它对 GBM 是精确的,意味着没有离散化误差, 唯一的随机性是标准正态抽样 ZZ,STS_T 的边际分布恰好是对数正态。

这种精确性又是 GBM 的特殊性质。对大多数 SDE,你需要 Euler-Maruyama 或 Milstein 离散化,会随着 nstepsn_{\text{steps}} 减小累积误差。对 GBM,闭式给出任何步数下的正确答案。

实务中的 Itô 修正

如果你曾经好奇为什么 μ−σ2/2\mu - \sigma^2/2 出现在 log⁡St\log S_t 的漂移里,而 μ\mu 出现在 StS_t 的漂移里,这里是一句话答案。过程 log⁡St\log S_t 有确定性的期望增长率 μ−σ2/2\mu - \sigma^2/2。过程 StS_t 的期望值是 S0eμtS_0 e^{\mu t},平均增长率为 μ\mu。这两件事不同。指数化过程的期望值不等于期望值的指数,因为 Jensen 不等式和 exp⁡\exp 的凸性。

当人们说”股票一年涨 8%“,他们通常指 StS_t 的期望值按 8% 增长。GBM 下,这对应 μ=0.08\mu = 0.08。log⁡St\log S_t 的期望值按 μ−σ2/2=0.08−0.5⋅0.162≈0.067\mu - \sigma^2/2 = 0.08 - 0.5 \cdot 0.16^2 \approx 0.067 增长(σ=0.16\sigma = 0.16)。两个说法一致。不要混淆它们。

GBM 哪里不行

老实说局限。经验股票收益有:

  • 波动率聚集。 波动率不是常数。它一波一波来。GARCH 模型处理这个。
  • 肥尾。 日收益的峰态远大于 3。对数正态低估了尾部风险。
  • 跳跃。 价格偶尔跳空。Merton 跳跃扩散和 variance-gamma 处理这个。
  • 偏度。 隐含波动率有偏,尤其股票。GBM 给出平的隐含 vol。

对 vanilla 期权定价,这些失败不太要紧。你可以拟合 σ\sigma 来匹配市场价格,跟模型一起生活。对风险管理,肥尾很重要。对多资产产品,相关性重要,模型说它们是常数。对长期期权或压力情景,模型是危险地乐观。

这些都没让 GBM 没用。它让它成为第一个模型,不是最后一个。大多数奇异定价从 Black-Scholes 基线开始,在上面叠修正。

Itô 修正的数值示例

σ2/2\sigma^2/2 项小但不是可忽略。取 σ=0.30\sigma = 0.30(约 30% 年化波动率,单只股票的典型数)。那么 σ2/2=0.045\sigma^2/2 = 0.045,所以 μ\mu 和 μ−σ2/2\mu - \sigma^2/2 之间每年差 4.5 个百分点。十年期累积:e0.045⋅10≈1.57e^{0.045 \cdot 10} \approx 1.57。所以 GBM 中位数路径比均值路径低约 60%。这是很大的差距。

如果你模拟 StS_t 的 10,000 条路径,μ=0.08\mu = 0.08、σ=0.30\sigma = 0.30、T=10T = 10、S0=100S_0 = 100,S10S_{10} 的样本均值约为 100⋅e0.08⋅10≈222100 \cdot e^{0.08 \cdot 10} \approx 222,但中位数约为 100⋅e(0.08−0.045)⋅10≈138100 \cdot e^{(0.08 - 0.045) \cdot 10} \approx 138。一半路径在 138 以下结束,一半以上。均值被对数正态的长右尾往上拉。

当你计算期望收益时这有关系。如果你的衍生品收益关于 STS_T 单调,期望由右尾主导,σ2/2\sigma^2/2 修正在很大程度上无关紧要。如果你的收益对中位数敏感(比如蝴蝶价差或任何集中在行权价附近的收益),修正很重要。

路径相关收益和 GBM

很多奇异期权依赖 StS_t 的路径,不只是终值。亚式期权对价格随时间求平均。回望期权依赖运行最大或最小。障碍期权在价格触及某个水平时敲出。对这些,完整路径很重要。

对 GBM,你可以用几何平均数闭式计算亚式期权价格, 但只有当平均是几何平均时,因为对数正态的几何平均还是对数正态。对算术平均,你就只能用数值。这是第一个提示:路径相关的收益比欧式收益难,即使在最可处理的模型下。

GBM 下的障碍期权更微妙。价格过程连续,但在连续时间里可以无限次触及障碍。在到期前触及一个水平的概率通过反射原理计算(见 Karatzas and Shreve,Brownian Motion and Stochastic Calculus,或者 Glasserman,3.4 节)。结果是对障碍 HH 在给定漂移和波动率下的存活概率的干净公式,但实务中你必须仔细选障碍监测约定(连续 vs. 离散),因为它们给出不同的价格。

远期价格和漂移

一个微妙但重要的点。在物理测度 P\mathbb{P} 下,StS_t 的漂移是 μ\mu,即资产的期望收益。在风险中性测度 Q\mathbb{Q} 下,漂移是 rr,即无风险利率。波动率 σ\sigma 在两个测度下相同(波动率在足够正则的等价测度变化下不变, 这是 Girsanov 定理的应用)。

当你模拟前瞻场景(现实世界预测、资产负债建模、退休预测)时,用 μ\mu。当你定价衍生品时,用 rr。混用两个是初学者最常犯的错误之一。Black-Scholes 公式用 rr,因为它对衍生品定价。一个为期权定价但用 μ\mu 的 Monte Carlo 会给出错的答案, 通常高得离谱。

两个测度之间的转换是风险中性测度变换,关键工具是 Girsanov 定理。我们后面会推导。现在记住:物理漂移是你期望的。风险中性漂移是你用来贴现的。

连续复利 vs. 离散收益

当你取每日价格的对数、算对数收益时,你隐含用了连续复利。对数收益和简单收益的关系是

rsimple=erlog−1≈rlog+12rlog2+⋯r_{\text{simple}} = e^{r_{\text{log}}} - 1 \approx r_{\text{log}} + \frac{1}{2} r_{\text{log}}^2 + \cdots

对 1% 量级的日收益,差异很小。对更长持有期,它会累积。股票指数的年对数收益标准差约 15–20%。年平均对数收益和年平均简单收益的差大约是每年 σ2/2\sigma^2/2, 就是我们一直在说的 Itô 修正。同一个事实,不同语言。

关于校准的一句话

实务中,你事先不知道 μ\mu 或 σ\sigma。你从数据估计它们。σ\sigma 的历史估计量是对数收益的标准差按 Δt\sqrt{\Delta t} 缩放。对日数据,你算

σ^2=1N−1∑i=1N(ri−rˉ)2,ri=log⁡(Sti/Sti−1)\hat{\sigma}^2 = \frac{1}{N-1} \sum_{i=1}^N (r_i - \bar{r})^2, \quad r_i = \log(S_{t_i}/S_{t_{i-1}})

然后缩放:σ^annual=σ^daily⋅252\hat{\sigma}_{\text{annual}} = \hat{\sigma}_{\text{daily}} \cdot \sqrt{252}。因子 252 是一年里的交易日数。

对定价,你通常要隐含波动率,不是历史波动率。你反解出使 Black-Scholes 价格匹配期权观测市场价的 σ\sigma。隐含 vol 是期权市场的语言。它用波动率而不是价格来报价,因为跨行权价和到期日更可比。

该带走的

GBM 是你施加三件事时得到的:常数百分比漂移、常数百分比波动率、连续(无跳跃)路径由高斯噪声驱动。闭式解是 St=S0exp⁡[(μ−σ2/2)t+σWt]S_t = S_0 \exp[(\mu - \sigma^2/2)t + \sigma W_t],是对数正态。它是 Black-Scholes 公式和大部分入门衍生品课程的基础。

数学漂亮,模型错,两者可以同时成立。当可处理性比真实性更重要时用 GBM。当尾部开始咬人的时候,去用更丰富的, local vol、随机 vol、跳跃扩散、variance-gamma。这个模块的下一篇文章从第一原理推导那些更丰富的模型。这里的参考文献是 Glasserman (2004) 第 3 章和 Hull (2018) 第 15 章。