3. 几何布朗运动:股票价格建模的标准范式

聊到期权定价,就绕不开一个核心问题:股票价格到底是怎么走的?

你想想看,如果我们能精确预测明天的股价,那期权定价就太简单了。但现实是,股价充满了随机性。那怎么用数学来描述这种随机性呢?

嗯,这就是几何布朗运动(GBM)要解决的问题。我个人习惯把它叫做“金融界的随机游走标准模型”。

3.1 为什么是几何布朗运动?

先说说布朗运动本身。它最早是用来描述花粉颗粒在水中的随机运动。后来被数学家们抽象成了维纳过程。

但直接用布朗运动来建模股价,有个问题。股价不能为负,对吧?而且股价的波动幅度,跟股价本身的大小有关。比如100块的股票,一天波动1块很正常;但1块的股票,一天波动1块就太夸张了。

所以就有了几何布朗运动。它加了一个“几何”前缀,说白了就是:股价的对数收益率服从正态分布。这样一来,股价本身永远为正,而且波动率跟股价成比例。

核心公式:

dS = μS dt + σS dW

其中:

  • S:股票价格
  • μ:漂移率(期望收益率)
  • σ:波动率
  • dW:维纳过程的增量

这个公式看着简单,但内涵很深。我在项目中遇到过不少新手,上来就把μ当成无风险利率,结果定价全偏了。μ其实是风险中性下的期望收益率,在BSM框架里,它等于无风险利率r。

3.2 离散化与模拟

实际应用中,我们没法用连续时间公式直接算。得把它离散化,才能在计算机上跑。

最常用的方法是欧拉离散化。把时间切成小段,每段Δt,然后递推:

import numpy as np

def simulate_gbm(S0, mu, sigma, T, N, seed=42):
    """
    模拟几何布朗运动路径
    
    参数:
    S0: 初始股价
    mu: 漂移率
    sigma: 波动率
    T: 时间长度(年)
    N: 时间步数
    """
    np.random.seed(seed)
    dt = T / N
    # 生成标准正态随机数
    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]
        )
    
    return S

# 示例:模拟一条路径
S0 = 100.0
mu = 0.05
sigma = 0.2
T = 1.0
N = 252  # 交易日数量

path = simulate_gbm(S0, mu, sigma, T, N)
print(f"最终价格: {path[-1]:.2f}")

避坑指南:

我曾经在模拟时直接用 dS = μS dt + σS dW 这个形式做离散化,结果发现模拟出来的价格路径经常出现负值。后来才意识到,应该用对数形式的精确解:

S(t+Δt) = S(t) * exp((μ - 0.5σ²)Δt + σ√Δt * Z)

这个公式保证了股价永远为正,而且模拟精度更高。

3.3 为什么是“几何”的?

你可能好奇,为什么叫“几何”布朗运动?

我解释一下。普通的布朗运动,增量是加性的。比如今天股价100,明天变成100 + 随机增量。但几何布朗运动,增量是乘性的。今天100,明天变成100 * 随机乘数。

这个乘数服从对数正态分布。所以股价本身也服从对数正态分布。你想想看,对数正态分布有个特点:它不会出现负值,而且右尾很长,正好符合真实股价的特征。

特征 普通布朗运动 几何布朗运动
增量形式 加性:S + 随机项 乘性:S × 随机乘数
价格范围 可能为负 永远为正
收益率分布 正态分布 对数正态分布
适用场景 利率建模 股票、指数

3.4 核心性质:伊藤引理的应用

说到几何布朗运动,就不得不提伊藤引理。这是随机微积分里最重要的工具之一。

假设股价S服从GBM,我们想求ln(S)的随机微分方程。用伊藤引理:

设 f(S) = ln(S)

则 df = (∂f/∂S) dS + (1/2)(∂²f/∂S²) (dS)²

计算偏导:
∂f/∂S = 1/S
∂²f/∂S² = -1/S²

代入GBM的dS = μS dt + σS dW:
df = (1/S)(μS dt + σS dW) + (1/2)(-1/S²)(σ²S² dt)
   = μ dt + σ dW - (1/2)σ² dt
   = (μ - σ²/2) dt + σ dW

这个结果很漂亮。ln(S)的漂移率是μ - σ²/2,而不是μ。这就是为什么在模拟时,我们要用μ - 0.5σ²作为漂移项。

注意:

很多初学者会忽略这个“-0.5σ²”项。但它在期权定价中至关重要。比如在蒙特卡洛模拟中,如果忘了这个修正项,模拟出来的期权价格会系统性偏高或偏低。

3.5 知识体系总览

为了让你更直观地理解几何布朗运动在期权定价中的位置,我画了一张图:

几何布朗运动知识体系 几何布朗运动 理论基础 维纳过程 · 伊藤引理 核心公式 dS = μS dt + σS dW 应用场景 期权定价 · 风险模拟 对数正态分布 伊藤引理推导 离散化方法 蒙特卡洛模拟 BSM定价模型 风险中性定价 关键参数 漂移率 μ · 波动率 σ · 时间步长 Δt · 随机数 Z 参数估计:历史波动率 vs 隐含波动率 GBM是连接随机过程与金融定价的桥梁

3.6 实际应用中的注意事项

最后,我想分享几个实际项目中的经验:

  1. 波动率不是常数。GBM假设σ是常数,但真实市场里波动率会变化。我建议在做长期模拟时,考虑使用随机波动率模型。
  2. 时间步长要合理。Δt太大,模拟精度不够;Δt太小,计算量太大。一般用交易日(252天/年)或更细的分钟级数据。
  3. 随机数质量很重要。普通的伪随机数可能不够用,可以考虑用Sobol序列等低差异序列,能提高收敛速度。
  4. 别忘了分红。如果股票有分红,需要在漂移项中扣除分红率q,变成dS = (r - q)S dt + σS dW。

我的一个小技巧:

在做蒙特卡洛模拟时,我习惯先跑1000条路径看看分布形状。如果发现尾部太厚或者有异常值,多半是随机数生成出了问题。这时候检查一下种子设置和随机数生成器,往往能解决问题。

好了,几何布朗运动就讲到这里。它是期权定价的基石,理解了它,后面的BSM公式推导就会顺畅很多。


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