一、期权定价的数学基础:布朗运动与伊藤引理
说实话,期权定价这事儿,刚入行的时候我也觉得挺玄乎的。一个合约,凭什么就能算出它的合理价格?后来我才明白,这一切的根基,都建立在两个数学概念上——布朗运动和伊藤引理。今天咱们就把这两个东西掰开揉碎了讲清楚。
1.1 布朗运动:随机游走的数学描述
布朗运动最早是植物学家布朗观察花粉颗粒在水面上乱飘时发现的。后来被数学家们抽象成了数学模型。我个人习惯把它想象成一个醉汉走路——每一步的方向和大小都是随机的。
在金融里,我们用它来描述资产价格的随机波动。你想想看,股票价格不就是这样吗?今天涨明天跌,谁也说不准。
标准布朗运动 W(t) 满足三个性质:
- 起始点为0:W(0) = 0
- 独立增量:不同时间段的增量相互独立
- 正态增量:W(t) - W(s) ~ N(0, t-s)
我在项目中遇到过一个问题:用布朗运动模拟股价时,发现模拟出来的价格居然出现了负值。嗯,这里要注意——布朗运动本身是可以取负值的,但股价不行。所以实际中我们用的是几何布朗运动,这个后面会讲到。
核心要点:布朗运动的方差随时间线性增长。这意味着时间越长,价格的不确定性越大。这很符合直觉——谁能预测一年后的股价呢?
1.2 伊藤引理:随机微积分的链式法则
普通微积分里,我们有链式法则:df = f'(x) dx。但在随机世界里,事情没那么简单。
为什么?因为布朗运动的二次变分不为零。说白了,dW² = dt,这个性质让随机微积分多了一个修正项。
伊藤引理告诉我们:如果 X(t) 满足随机微分方程 dX = μ dt + σ dW,那么对于光滑函数 f(t, X),有:
df = (∂f/∂t + μ·∂f/∂X + ½·σ²·∂²f/∂X²) dt + σ·∂f/∂X dW
这个公式看起来有点吓人,但用起来特别顺手。我记得第一次推导Black-Scholes方程时,就是靠伊藤引理把期权价格的随机微分展开,然后通过对冲消掉随机项,最后得到一个偏微分方程。
我的小技巧:记伊藤引理时,就记住它比普通链式法则多了一个½σ²f_xx项。这个项来自布朗运动的二次变分,千万别漏掉。我曾经因为漏掉这一项,整个定价模型都算错了,排查了半天才发现。
1.3 几何布朗运动:股价建模的标准选择
前面说了,普通布朗运动不适合直接描述股价。所以金融界普遍采用几何布朗运动:
dS = μS dt + σS dW
这个模型的好处是:股价始终为正,而且收益率服从正态分布。你想想看,这很合理——股价翻倍和腰斩的概率应该是对称的吗?嗯,其实不是,但几何布朗运动至少保证了股价不会变负。
用伊藤引理,我们可以求出几何布朗运动的解析解。令 f = ln S,则:
d(ln S) = (μ - ½σ²) dt + σ dW
所以 ln S(t) 是正态分布,均值为 ln S(0) + (μ - ½σ²)t,方差为 σ²t。
避坑指南:我曾经用几何布朗模型做回测,发现长期模拟的均值会偏离理论值。后来才意识到,是离散化时步长选得太大,导致数值误差累积。建议步长不超过0.01年(约2.5个交易日)。
1.4 知识体系总览
下面这张图是我自己整理的,把本章的核心逻辑串起来了。从布朗运动出发,到伊藤引理,再到几何布朗运动,最后到期权定价——每一步都有它的道理。
1.5 代码实战:模拟布朗运动与几何布朗运动
光说不练假把式。下面我用Python演示一下如何模拟布朗运动和几何布朗运动。这段代码我在实际项目中经常用来做蒙特卡洛模拟的底层。
import numpy as np
import matplotlib.pyplot as plt
# 参数设置
T = 1.0 # 时间长度(年)
N = 252 # 步数(交易日数)
dt = T / N # 步长
mu = 0.05 # 年化收益率
sigma = 0.2 # 年化波动率
# 生成布朗运动路径
np.random.seed(42)
dW = np.random.normal(0, np.sqrt(dt), N)
W = np.cumsum(dW)
W = np.insert(W, 0, 0) # W(0) = 0
# 生成几何布朗运动路径
S0 = 100
t = np.linspace(0, T, N+1)
S = S0 * np.exp((mu - 0.5 * sigma**2) * t + sigma * W)
# 绘制结果
plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
plt.plot(t, W)
plt.title('布朗运动路径')
plt.xlabel('时间(年)')
plt.ylabel('W(t)')
plt.subplot(1, 2, 2)
plt.plot(t, S)
plt.title('几何布朗运动路径(股价模拟)')
plt.xlabel('时间(年)')
plt.ylabel('股价 S(t)')
plt.tight_layout()
plt.show()
运行提示:如果你在Jupyter Notebook里运行,记得加上 %matplotlib inline。另外,随机种子设成42是我的个人习惯——这样每次运行结果都一样,方便调试。
1.6 本章小结
布朗运动给了我们描述随机性的数学工具,伊藤引理则让我们能在随机世界里做微积分。这两个东西加在一起,构成了整个金融衍生品定价的数学地基。
我个人觉得,理解伊藤引理的关键不在于死记公式,而在于理解那个½σ²项是怎么来的。你想想看,布朗运动的二次变分是dt,这意味着在无穷小的时间尺度上,随机项的波动幅度其实比漂移项大一个数量级。正是这个性质,让随机微积分和普通微积分有了本质区别。
下一章我们会用这些工具来推导Black-Scholes方程。到时候你会发现,只要把伊藤引理用对了,整个推导过程其实很流畅。