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 知识体系总览

下面这张图,帮你把本章的核心逻辑串起来:

几何布朗运动:知识体系 dS = μ·S·dt + σ·S·dW 漂移率 μ:决定趋势方向 波动率 σ:决定路径抖动 欧拉离散化:S(t+Δt) = S(t)·exp(...) 单条路径:随机轨迹 多条路径:分布特征 应用:期权定价、风险分析、策略回测

这张图把 GBM 的脉络理清了:从核心公式出发,理解两个参数的作用,然后离散化,最后落地到模拟和应用。

我个人觉得,掌握 GBM 的关键不在于背公式,而在于动手调参数、看路径、感受变化。你试试把 μ 从 0.05 改成 0.2,或者把 σ 从 0.2 改成 0.6,看看路径会变成什么样。这种直观感受,比读十遍理论都有用。

总结一句话:几何布朗运动是衍生品定价的基石。漂移率给你方向感,波动率给你真实感。两者配合,才能模拟出像模像样的股票价格路径。


公众号:蓝海资料掘金营,微信deep3321