4. 几何布朗运动:股票价格建模的标准范式
聊到股票价格建模,绕不开的一个概念就是几何布朗运动。说实话,我刚入行那会儿,觉得这名字挺唬人的。什么「几何」?什么「布朗运动」?不就是个随机过程嘛。
但后来我在实盘里吃过亏。有一次用普通布朗运动去模拟某只股票的路径,结果价格跑出了负数。你想想看,股票价格怎么可能为负?那次之后,我才真正理解了为什么业界都用几何布朗运动——它保证了价格始终为正。
4.1 为什么是几何布朗运动?
普通布朗运动(也叫算术布朗运动)的公式是:
dS = μ dt + σ dW
这里 S 是价格,μ 是漂移率,σ 是波动率,dW 是维纳过程增量。问题在哪?价格变化是绝对的,不是相对的。比如股价从 100 跌到 90,和从 10 跌到 0,绝对跌幅都是 10,但意义完全不同。
几何布朗运动改成了相对变化:
dS / S = μ dt + σ dW
说白了,就是价格的变化率服从布朗运动。这样价格永远大于零,而且波动幅度会随着价格水平调整。嗯,这里要注意:这个假设在大多数情况下成立,但遇到极端行情时也会失效。
4.2 核心公式与推导
把上面的式子改写一下:
dS = μ S dt + σ S dW
这是一个随机微分方程。它的解析解是:
S(t) = S(0) * exp((μ - σ²/2)t + σ W(t))
我个人习惯把这个公式记成三部分:
- S(0):初始价格,起点
- exp((μ - σ²/2)t):确定性趋势,注意有个 σ²/2 的修正项
- exp(σ W(t)):随机扰动,布朗运动驱动
为什么会有 σ²/2?我在项目中遇到过不少新手直接忽略这个修正项,结果模拟出来的期望值偏大。其实这是伊藤引理的结果,简单理解就是:波动本身会拖累价格的长期增长率。
4.3 参数估计:μ 和 σ 怎么算?
实际应用中,我们通常用历史数据来估计这两个参数。方法很简单:
- 计算每日对数收益率:r_i = ln(S_i / S_{i-1})
- 计算 r_i 的均值 μ_hat 和标准差 σ_hat
- 年化处理:μ_annual = μ_hat * 252,σ_annual = σ_hat * sqrt(252)
这里有个坑。我曾经用 5 年的日数据去估计某只股票的波动率,结果发现 σ 在不同时间段差异很大。后来我改用滚动窗口估计,才勉强捕捉到波动率的时变性。
4.4 代码实现:模拟股票价格路径
下面是我常用的模拟代码。你直接复制就能跑:
import numpy as np
import matplotlib.pyplot as plt
def simulate_gbm(S0, mu, sigma, T, N, n_paths=10):
"""
模拟几何布朗运动路径
参数:
S0: 初始价格
mu: 年化收益率
sigma: 年化波动率
T: 时间长度(年)
N: 时间步数
n_paths: 模拟路径数
"""
dt = T / N
# 生成布朗运动增量
dW = np.random.normal(0, np.sqrt(dt), (n_paths, N))
# 计算价格路径
S = np.zeros((n_paths, N+1))
S[:, 0] = S0
for t in range(1, N+1):
S[:, t] = S[:, t-1] * np.exp(
(mu - 0.5 * sigma**2) * dt + sigma * dW[:, t-1]
)
return S
# 示例:模拟苹果股票
S0 = 150.0 # 当前价格
mu = 0.12 # 预期年化收益 12%
sigma = 0.25 # 年化波动率 25%
T = 1.0 # 模拟 1 年
N = 252 # 每日数据
paths = simulate_gbm(S0, mu, sigma, T, N, n_paths=5)
# 画图
plt.figure(figsize=(10, 6))
for i in range(5):
plt.plot(paths[i], lw=1.5, alpha=0.8)
plt.title('几何布朗运动模拟 - 5条路径')
plt.xlabel('交易日')
plt.ylabel('价格')
plt.grid(True, alpha=0.3)
plt.show()
4.5 几何布朗运动的局限性
任何模型都有假设,几何布朗运动也不例外。我总结了几条:
| 假设 | 现实问题 | 影响 |
|---|---|---|
| 波动率恒定 | 实际波动率会聚集 | 低估尾部风险 |
| 收益率正态分布 | 实际有尖峰厚尾 | 极端事件概率被低估 |
| 连续交易 | 市场有开盘收盘 | 跳跃风险被忽略 |
| 无交易成本 | 实际有滑点和手续费 | 高频策略失效 |
你想想看,如果这些假设都成立,那交易也太简单了。现实是,几何布朗运动只是一个起点。我在做统计套利时,通常用它做基准模型,然后加上跳跃扩散项或者随机波动率来改进。
4.6 在统计套利中的应用
几何布朗运动在统计套利里主要干两件事:
- 生成模拟数据:测试配对交易策略时,用 GBM 生成合成价格序列
- 计算理论价格:比如期权定价中的 Black-Scholes 模型就基于 GBM
我记得有一次做 ETF 配对交易,需要估计两个标的的协整关系。我先用 GBM 模拟了 10000 条路径,然后计算协整系数的分布。虽然最终实盘效果一般,但至少让我对参数的不确定性有了直观认识。
好了,这一章就到这里。记住:模型是地图,不是 territory。用 GBM 做分析时,时刻问自己——如果现实偏离了假设,我的结论还站得住吗?
公众号:蓝海资料掘金营,微信deep3321