3. 布朗运动与随机微积分:标准布朗运动、伊藤引理、几何布朗运动、随机过程模拟
说到期权定价,绕不开的一个核心就是随机过程。说白了,资产价格不是老老实实走直线的,它上蹿下跳,像个醉汉。我们要给这个醉汉的行为建模,这就是布朗运动和随机微积分要做的事。
我个人习惯把这一章看作是整个量化金融的「内功心法」。招式再花哨,内功不行,一上实盘就露馅。今天我们就来把这套内功拆开揉碎了讲。
3.1 标准布朗运动:醉汉的随机游走
标准布朗运动,也叫维纳过程。它有几个关键性质,你想想看:
- 起点为零:W(0) = 0,从原点出发。
- 独立增量:不同时间段的增量是相互独立的。今天涨了多少,跟明天涨多少没关系。
- 正态增量:在时间区间 [s, t] 内,增量 W(t) - W(s) 服从均值为0,方差为 (t-s) 的正态分布。
- 连续路径:路径是连续的,没有跳跃。但注意,它处处不可导,走势非常「毛糙」。
我在项目中遇到过一个问题:用太细的时间步长模拟布朗运动,结果路径看起来反而「不自然」。后来才意识到,布朗运动的方差随时间线性增长,步长越小,每一步的随机性看起来越剧烈。嗯,这里要注意,模拟时步长的选择会影响你对路径的直观感受。
核心公式:
dW(t) ~ N(0, dt),其中 dt 是无穷小的时间增量。
W(t) ~ N(0, t),即 t 时刻的分布是均值为0,方差为 t 的正态分布。
3.2 伊藤引理:随机世界的链式法则
普通微积分里,我们有链式法则。但在随机世界里,事情变得不一样了。因为布朗运动的二次变分不为零,导致泰勒展开中多出了一项。
伊藤引理,说白了就是随机版本的链式法则。它告诉我们,如果一个随机过程 X(t) 满足伊藤过程:
dX = μ dt + σ dW
那么对于任意光滑函数 f(X, t),它的微分 df 可以写成:
伊藤引理公式:
df = (∂f/∂t + μ ∂f/∂X + ½ σ² ∂²f/∂X²) dt + σ ∂f/∂X dW
注意那个 ½ σ² ∂²f/∂X² 项,这就是随机微积分和普通微积分的根本区别。我刚开始学的时候,总觉得这一项是凭空冒出来的。后来自己推导了一遍泰勒展开,才明白它来自 (dW)² = dt 这个神奇的关系。
我的经验:伊藤引理是推导BS公式的核心工具。你不需要每次都从头推导,但一定要理解它的几何意义——随机过程的曲率会贡献一个额外的漂移项。
3.3 几何布朗运动:资产价格的经典模型
几何布朗运动(GBM)是金融建模中最常用的随机过程。它假设资产价格的收益率服从正态分布,价格本身服从对数正态分布。
GBM 的随机微分方程是:
dS = μ S dt + σ S dW
其中 μ 是漂移率(预期收益率),σ 是波动率。应用伊藤引理,令 f = ln S,我们可以得到:
d(ln S) = (μ - ½ σ²) dt + σ dW
这个形式非常优雅。它告诉我们,对数价格是一个带漂移的布朗运动。漂移项是 μ - ½ σ²,而不是 μ。这个 ½ σ² 的修正项,就是伊藤引理带来的。
避坑指南:我曾经在模拟期权价格时,直接用 μ 作为对数收益率的漂移,结果模拟出来的价格长期均值偏高了。后来才想起来,对数收益率的漂移应该是 μ - ½ σ²。这个坑,很多新手都会踩。
GBM 的解析解是:
S(t) = S(0) * exp( (μ - ½ σ²) t + σ W(t) )
这个公式可以直接用来模拟资产价格路径,不需要用欧拉离散化。
3.4 随机过程模拟:从理论到代码
理论讲完了,我们来点实际的。模拟随机过程,最常用的方法是欧拉离散化。把时间区间 [0, T] 分成 N 个小段,每段长度 Δt = T/N。
对于 GBM,离散化形式是:
S(t+Δt) = S(t) * exp( (μ - ½ σ²) Δt + σ * √Δt * Z )
其中 Z 是标准正态随机数。
下面是一个简单的 Python 模拟代码:
import numpy as np
import matplotlib.pyplot as plt
def simulate_gbm(S0, mu, sigma, T, N, paths):
"""
模拟几何布朗运动路径
S0: 初始价格
mu: 漂移率
sigma: 波动率
T: 时间长度
N: 时间步数
paths: 路径数量
"""
dt = T / N
# 生成正态随机数矩阵
Z = np.random.standard_normal((paths, N))
# 计算对数收益率的增量
log_returns = (mu - 0.5 * sigma**2) * dt + sigma * np.sqrt(dt) * Z
# 累积求和得到对数价格
log_price = np.log(S0) + np.cumsum(log_returns, axis=1)
# 转换为价格
price = np.exp(log_price)
# 加上初始价格
price = np.hstack([np.full((paths, 1), S0), price])
return price
# 参数设置
S0 = 100
mu = 0.05
sigma = 0.2
T = 1.0
N = 252
paths = 10
# 模拟
prices = simulate_gbm(S0, mu, sigma, T, N, paths)
# 绘制路径
plt.figure(figsize=(10, 6))
for i in range(paths):
plt.plot(prices[i], lw=1)
plt.title('几何布朗运动模拟路径')
plt.xlabel('时间步')
plt.ylabel('价格')
plt.grid(True)
plt.show()
我的建议:模拟时,路径数量不要少于1000条,否则统计结果不稳定。另外,时间步长 Δt 越小,模拟越精确,但计算量也越大。对于期权定价,通常用交易日数作为步数,比如一年252步。
3.5 知识体系总览
为了让你更直观地理解这一章的知识结构,我画了一张图:
这张图把这一章的核心脉络理清楚了。从随机过程基础出发,三个分支——标准布朗运动、伊藤引理、几何布朗运动——最终都指向期权定价和风险模拟的实际应用。
我个人觉得,理解布朗运动和伊藤引理,就像学开车要先理解油门和刹车。你不需要每次开车都重新发明一遍,但不懂原理,遇到复杂路况就容易翻车。
好了,这一章的内容就到这里。记住,随机微积分不是天书,它只是描述不确定世界的一种语言。多用代码模拟几次,你就能找到感觉。