4、几何布朗运动:股票价格路径模拟,理解漂移率与波动率的作用
说到衍生品定价,绕不开的一个基础模型就是几何布朗运动(GBM)。
我刚开始做量化那会儿,觉得这东西就是一堆数学公式堆砌。后来真刀真枪去模拟股票路径,才发现——漂移率和波动率这两个参数,才是整个模型的灵魂。
说白了,GBM 就是描述股票价格怎么随机走动的数学工具。它假设价格的变化是连续的,而且未来的价格只跟当前价格有关,跟过去没关系。嗯,这就是马尔可夫性。
4.1 几何布朗运动的数学形式
先看公式,别怕,其实很直观:
dS = μ * S * dt + σ * S * dW
拆开来看:
- S:股票当前价格
- μ:漂移率,代表股票的预期年化收益率
- σ:波动率,代表价格的不确定性
- dt:时间微元
- dW:维纳过程,也就是标准布朗运动
公式左边是价格的变化量,右边有两项:
- μ * S * dt:确定性部分,就是趋势项。股票长期来看会涨,靠的就是它。
- σ * S * dW:随机性部分,就是噪声项。市场每天的涨跌起伏,就是它在捣乱。
核心理解:漂移率决定了股票长期走的方向,波动率决定了路径有多曲折。两者共同决定了你最终看到的那条价格曲线。
4.2 离散化:从理论到代码
实际做模拟时,我们没法用连续时间。得把公式离散化。
我常用的方法是欧拉离散化,简单直接:
S(t+Δt) = S(t) * exp( (μ - 0.5 * σ²) * Δt + σ * √Δt * Z )
这里 Z 是标准正态分布的随机数。注意那个 -0.5 * σ²,这是伊藤引理带来的修正项。很多人刚开始会漏掉它,结果模拟出来的价格长期均值对不上。
我的经验:用这个公式模拟时,时间步长 Δt 别太大。我一般选 1/252(交易日),或者更细的 1/2520(每半小时)。步长太大,离散化误差会累积,路径就不准了。
4.3 漂移率的作用:决定趋势
漂移率 μ 代表的是股票的预期收益率。你想想看,如果 μ 是 0,股票长期来看就不涨不跌,只在原地随机波动。这显然不符合现实。
我做过一个实验:把 μ 设成 0.1(年化 10%),模拟 1000 条路径。结果大部分路径的终点都在起点之上。这就是漂移率的威力——它像一只无形的手,把价格往上推。
| 漂移率 μ | 模拟结果特征 |
|---|---|
| 0.05 | 缓慢上涨,路径较平缓 |
| 0.10 | 明显上涨,路径有起伏 |
| 0.20 | 快速上涨,波动剧烈 |
| -0.05 | 持续下跌,趋势向下 |
注意:漂移率不是你能直接观察到的。它是个隐含参数,得从历史数据里估计。我见过有人直接用过去一年的平均收益率当 μ,结果模拟出来的路径跟未来走势差很远。因为历史收益率波动太大,估计出来的 μ 很不稳定。
4.4 波动率的作用:决定不确定性
波动率 σ 决定了路径的「抖动幅度」。σ 越大,价格上蹿下跳得越厉害。
我曾经帮一家私募做期权定价,他们给的波动率参数是 0.15。我模拟出来的路径看起来太「乖」了,跟实际市场走势完全不像。后来一查,实际波动率已经飙到 0.35 了。嗯,这就是为什么波动率被称为「恐慌指数」——市场越动荡,它越高。
波动率的影响:
- σ 小(如 0.1):路径平滑,像一条温和的曲线
- σ 大(如 0.4):路径锯齿状,一天涨 5% 跌 4% 很正常
- σ 极端(如 0.8):路径几乎失控,价格可能翻倍也可能腰斩
4.5 代码实战:模拟一条股票路径
光说不练假把式。我写个简单的 Python 代码,让你直观感受一下:
import numpy as np
import matplotlib.pyplot as plt
# 参数设置
S0 = 100 # 初始价格
mu = 0.08 # 年化漂移率 8%
sigma = 0.2 # 年化波动率 20%
T = 1.0 # 模拟 1 年
N = 252 # 交易日数量
dt = T / N # 时间步长
# 生成随机数
np.random.seed(42)
Z = np.random.standard_normal(N)
# 模拟价格路径
S = np.zeros(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 * np.sqrt(dt) * Z[t-1])
# 绘制路径
plt.figure(figsize=(10, 6))
plt.plot(S)
plt.title('几何布朗运动模拟的股票价格路径')
plt.xlabel('交易日')
plt.ylabel('价格')
plt.grid(True)
plt.show()
小技巧:每次运行代码前,记得设置随机种子(np.random.seed),这样结果可复现。我在做回测时,会固定种子,方便对比不同参数的效果。
4.6 多次模拟:理解路径的分布
单条路径说明不了问题。真正有价值的是模拟成千上万条路径,看它们的统计特征。
我习惯模拟 10000 条路径,然后看终点的分布。你会发现:
- 终点价格大致呈对数正态分布
- 均值接近 S0 * exp(μ * T)
- 方差随 σ 和 T 增大而增大
这就是蒙特卡洛模拟的核心思想——用大量随机路径来逼近真实分布。
4.7 避坑指南
做 GBM 模拟这些年,我踩过不少坑。分享几个最常见的:
- 忘记伊藤修正项:公式里那个 -0.5*σ² 不能省。我曾经漏掉它,模拟出来的价格长期均值偏高,导致期权定价全错了。
- 时间步长不一致:如果 μ 和 σ 是年化的,Δt 也得用年为单位。用天数时记得除以 252。
- 忽略数值稳定性:当 σ 很大且 dt 很小时,指数项可能溢出。我一般用 log 空间计算,再转回来。
- 误用正态分布:实际市场有肥尾特征,但 GBM 假设收益率是正态的。做风控时要小心这个假设的局限性。
4.8 知识体系总览
下面这张图,帮你把本章的核心逻辑串起来:
这张图把 GBM 的脉络理清了:从核心公式出发,理解两个参数的作用,然后离散化,最后落地到模拟和应用。
我个人觉得,掌握 GBM 的关键不在于背公式,而在于动手调参数、看路径、感受变化。你试试把 μ 从 0.05 改成 0.2,或者把 σ 从 0.2 改成 0.6,看看路径会变成什么样。这种直观感受,比读十遍理论都有用。
总结一句话:几何布朗运动是衍生品定价的基石。漂移率给你方向感,波动率给你真实感。两者配合,才能模拟出像模像样的股票价格路径。
公众号:蓝海资料掘金营,微信deep3321