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)知识体系 定义与 SDE dS = μS dt + σS dW 漂移项 + 扩散项 价格非负保证 解的形式 S(t)=S₀·exp((μ-σ²/2)t+σW) 伊藤引理推导 对数正态分布 模拟方法 精确离散化 欧拉-丸山近似 蒙特卡洛路径 股票价格建模应用 Black-Scholes 定价基础 风险管理 · 回测模拟 · 情景分析 局限:厚尾 · 波动率聚集 · 杠杆效应 → 扩展:Heston · SABR · 跳跃扩散

从图中你能看到,GBM 从定义出发,经过伊藤引理得到解析解,然后通过离散化方法进行模拟,最终落地到股票价格建模。但它也有明显的局限——实际市场的厚尾和波动率聚集,需要更复杂的模型来捕捉。

嗯,这一章就到这里。GBM 是随机过程在量化金融中的「Hello World」,把它吃透了,后面的随机波动率、跳跃扩散模型学起来会轻松很多。


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