4. 几何布朗运动:定义、解的形式、模拟方法、用于股票价格建模
聊到股票价格建模,几何布朗运动(GBM)绝对是个绕不开的经典。我个人习惯把它看作是随机过程在金融领域的「敲门砖」。你想想看,Black-Scholes 公式的底层假设,就是它。
说白了,GBM 描述的是这样一种资产价格:它的对数收益率服从正态分布,并且价格本身永远不会变成负数。嗯,这一点很关键——真实股票价格也确实不会跌到零以下(除非公司退市破产)。
4.1 定义与随机微分方程
几何布朗运动的标准形式,用随机微分方程(SDE)写出来是这样的:
dS(t) = μ S(t) dt + σ S(t) dW(t)
其中:
- S(t):t 时刻的资产价格
- μ:漂移率(预期收益率)
- σ:波动率(标准差)
- dW(t):标准布朗运动的增量
这个方程的含义很直观:价格的瞬时变化由两部分组成——确定性的趋势项 μS(t)dt,和随机性的波动项 σS(t)dW(t)。波动项前面乘了 S(t),意味着价格越高,绝对波动幅度越大。这符合实际市场的感觉:100块的股票一天波动1块很正常,1块的股票波动1块就离谱了。
核心要点:GBM 假设收益率(dS/S)服从正态分布,而不是价格本身。这是它区别于普通布朗运动的关键。
4.2 解的形式:伊藤引理的妙用
要解这个 SDE,我们需要用到伊藤引理。我记得刚学随机过程时,总觉得伊藤引理是个玄学。后来做项目多了才发现,它其实就是随机版本的链式法则。
令 f(S,t) = ln S(t),应用伊藤引理:
d(ln S) = (μ - σ²/2) dt + σ dW(t)
两边积分,得到显式解:
S(t) = S(0) * exp( (μ - σ²/2)t + σ W(t) )
这个形式太漂亮了。它告诉我们:
- 对数价格 ln S(t) 服从正态分布
- 价格 S(t) 服从对数正态分布
- 期望值 E[S(t)] = S(0) * exp(μt) —— 注意这里不是 exp(μt - σ²t/2) 再乘 S(0),因为对数正态的期望有修正项
避坑指南:我曾经在写定价引擎时,直接把 μ 当作预期收益率代入模拟,结果发现模拟出来的均值总是偏低。后来才意识到,μ 是瞬时漂移率,而实际期望收益率是 μ + σ²/2。这个「凸性调整」在期权定价中尤其重要。
4.3 模拟方法:从理论到代码
实际工作中,我们很少直接解析计算,更多是用蒙特卡洛模拟。模拟 GBM 路径有两种主流方式:
方法一:精确离散化(欧拉格式的变体)
利用显式解,我们可以直接写出离散时间步长 Δt 下的递推公式:
S(t+Δt) = S(t) * exp( (μ - σ²/2)Δt + σ * √Δt * Z )
其中 Z ~ N(0,1)。这种方式是精确的,没有离散误差。我个人习惯用这个,尤其是在做美式期权定价时,路径的精度直接影响早行权判断。
方法二:欧拉-丸山近似
直接对 SDE 做离散化:
S(t+Δt) = S(t) + μ S(t) Δt + σ S(t) √Δt * Z
这个方式有 O(Δt) 的离散误差,但实现简单。如果 Δt 足够小(比如日频数据),误差可以接受。
下面是一个 Python 实现示例:
import numpy as np
def simulate_gbm(S0, mu, sigma, T, N, n_paths):
"""
模拟几何布朗运动路径
S0: 初始价格
mu: 漂移率
sigma: 波动率
T: 时间长度(年)
N: 时间步数
n_paths: 路径数量
"""
dt = T / N
# 生成正态随机数
Z = np.random.normal(0, 1, (n_paths, N))
# 初始化价格矩阵
S = np.zeros((n_paths, N+1))
S[:, 0] = S0
# 精确离散化递推
drift = (mu - 0.5 * sigma**2) * dt
vol = sigma * np.sqrt(dt)
for t in range(N):
S[:, t+1] = S[:, t] * np.exp(drift + vol * Z[:, t])
return S
# 使用示例
S0, mu, sigma = 100.0, 0.05, 0.2
T, N, n_paths = 1.0, 252, 1000
paths = simulate_gbm(S0, mu, sigma, T, N, n_paths)
print(f"模拟结束,路径矩阵形状: {paths.shape}")
注意事项:模拟时一定要用足够多的路径(至少 10,000 条以上),否则蒙特卡洛估计的方差会很大。另外,随机数种子要固定,方便复现结果——我在做回测时吃过这个亏,换了种子结果对不上,排查了半天。
4.4 用于股票价格建模:优点与局限
GBM 之所以成为股票价格建模的基准,是因为它抓住了几个关键特征:
| 特征 | GBM 表现 | 实际市场 |
|---|---|---|
| 价格非负 | ✓ 对数正态保证 | ✓ 符合 |
| 收益率正态 | ✓ 假设成立 | ✗ 实际有厚尾 |
| 波动率恒定 | ✓ 假设成立 | ✗ 波动率聚集 |
| 独立增量 | ✓ 假设成立 | ✗ 有自相关性 |
从表中能看出来,GBM 是个「理想化」的模型。它简单、解析解漂亮、模拟方便,但真实市场要复杂得多。
我在做高频策略回测时,就发现 GBM 模拟的路径波动太「均匀」了。真实市场有波动率聚集现象——大涨大跌之后往往跟着更大的波动。这时候就需要上随机波动率模型(比如 Heston 模型)了。
但话说回来,对于大多数标准期权定价、风险管理场景,GBM 已经够用。它就像线性回归——虽然简单,但作为 baseline 和第一性原理的理解工具,价值巨大。
我的建议:先用 GBM 跑通整个定价流程,理解每个参数对价格的影响。然后再根据实际数据的特征,逐步引入更复杂的模型。这样你才能知道,复杂模型到底「好」在哪里。
4.5 知识体系框架
下面这张图总结了本章的核心逻辑,从定义到应用一目了然:
从图中你能看到,GBM 从定义出发,经过伊藤引理得到解析解,然后通过离散化方法进行模拟,最终落地到股票价格建模。但它也有明显的局限——实际市场的厚尾和波动率聚集,需要更复杂的模型来捕捉。
嗯,这一章就到这里。GBM 是随机过程在量化金融中的「Hello World」,把它吃透了,后面的随机波动率、跳跃扩散模型学起来会轻松很多。
公众号:蓝海资料掘金营,微信deep3321