4. 伊藤引理的量化应用:几何布朗运动与股票价格建模,Black-Scholes PDE的推导
好,咱们进入第四章。这一章可以说是整个随机微积分课程里最“值钱”的部分之一了。为什么这么说?因为从这里开始,我们手里的数学工具终于能和真实的金融市场接轨了。
我个人习惯把这一章叫做“从理论到钞票的桥梁”。你想想看,我们前面学了伊藤引理,学了随机过程,但这些东西到底怎么用?答案就在这一章——几何布朗运动(GBM)和Black-Scholes PDE。
4.1 为什么是几何布朗运动?
先问个问题:股票价格到底是怎么走的?
很多人第一反应是“随机游走”。嗯,没错,但不够精确。普通的布朗运动(也叫算术布朗运动)有个致命缺陷——它允许价格变成负数。你见过哪只股票价格是负的?反正我没见过。
所以我们需要一个模型,满足两个基本条件:
- 价格始终为正
- 收益率的波动与价格水平成正比
几何布朗运动(GBM)正好满足这两个要求。它的随机微分方程(SDE)长这样:
dS = μS dt + σS dW
这里:
- S 是股票价格
- μ 是漂移率(预期收益率)
- σ 是波动率
- dW 是标准布朗运动的增量
注意看,漂移项和扩散项前面都乘了一个 S。这意味着价格越高,绝对波动幅度越大。这很符合直觉——100块的股票一天波动1块很正常,但1块的股票一天波动1块就离谱了。
核心要点:GBM假设股票价格的对数收益率服从正态分布,而不是价格本身。这就是为什么价格永远不会为负。
4.2 用伊藤引理求解GBM
好,现在我们有SDE了,怎么解出S(t)的显式表达式?这时候伊藤引理就派上用场了。
我们设 f = ln(S),然后对f应用伊藤引理。我记得第一次手动推导这个的时候,算到一半还卡住了——因为忘了二阶项不能忽略。嗯,这里要特别小心。
伊藤引理告诉我们:
df = (∂f/∂S) dS + (1/2)(∂²f/∂S²) (dS)²
代入 f = ln(S):
- ∂f/∂S = 1/S
- ∂²f/∂S² = -1/S²
- (dS)² = σ²S² dt
于是:
d(ln S) = (1/S)(μS dt + σS dW) + (1/2)(-1/S²)(σ²S² dt)
= μ dt + σ dW - (1/2)σ² dt
= (μ - σ²/2) dt + σ dW
看到了吗?神奇的事情发生了——对数价格变成了一个带漂移的普通布朗运动。积分一下就得到:
ln S(t) = ln S(0) + (μ - σ²/2)t + σ W(t)
再取指数:
S(t) = S(0) * exp[(μ - σ²/2)t + σ W(t)]
实战经验:我在做期权定价引擎的时候,模拟路径用的就是这个公式。注意那个 -σ²/2 项,很多人会漏掉它。漏掉之后模拟出来的价格会系统性偏高,回测时看着很漂亮,实盘就亏钱。我曾经就吃过这个亏。
4.3 从GBM到Black-Scholes PDE
接下来是重头戏——推导Black-Scholes PDE。这个过程说白了就是:构造一个无风险组合,然后利用无套利原理得到一个偏微分方程。
假设我们有一个期权 V(S, t),它的价值依赖于标的资产价格S和时间t。我们构造一个组合:
- 买入1份期权
- 卖出Δ份标的资产
这个组合的价值是:Π = V - Δ·S
为什么这么构造?目的是消除随机项。你想想看,如果Δ选得合适,dW项就能抵消掉,组合就变成无风险的。
对Π应用伊藤引理:
dΠ = dV - Δ dS
= (∂V/∂t dt + ∂V/∂S dS + ½ σ²S² ∂²V/∂S² dt) - Δ (μS dt + σS dW)
整理一下:
dΠ = [∂V/∂t + μS ∂V/∂S + ½ σ²S² ∂²V/∂S² - Δ μS] dt
+ [σS ∂V/∂S - Δ σS] dW
要让dW项消失,我们需要:
Δ = ∂V/∂S
这就是传说中的“Delta对冲”。代入后:
dΠ = [∂V/∂t + ½ σ²S² ∂²V/∂S²] dt
现在组合是无风险的,所以它的收益率应该等于无风险利率r:
dΠ = r Π dt = r (V - S ∂V/∂S) dt
两边相等:
∂V/∂t + ½ σ²S² ∂²V/∂S² = r (V - S ∂V/∂S)
整理一下,就得到了著名的Black-Scholes PDE:
∂V/∂t + rS ∂V/∂S + ½ σ²S² ∂²V/∂S² - rV = 0
注意:这个PDE里没有μ!这意味着期权的定价与标的资产的预期收益率无关。这就是风险中性定价的核心思想——定价时我们假设所有投资者都是风险中性的,资产的预期收益率都等于无风险利率。
4.4 知识体系总览
下面这张图把本章的核心逻辑串起来了,我建议你多看几遍:
4.5 代码实现:模拟GBM路径
光说不练假把式。下面我用Python演示如何模拟GBM路径。这段代码我在实际项目中改过很多版,现在这个版本比较稳定:
import numpy as np
import matplotlib.pyplot as plt
def simulate_gbm(S0, mu, sigma, T, N, n_paths=5):
"""
模拟几何布朗运动路径
参数:
S0: 初始价格
mu: 年化收益率
sigma: 年化波动率
T: 时间长度(年)
N: 时间步数
n_paths: 模拟路径数
"""
dt = T / N
# 关键:用 (mu - 0.5*sigma**2) 而不是 mu
drift = (mu - 0.5 * sigma**2) * dt
vol = sigma * np.sqrt(dt)
# 生成随机数
Z = np.random.standard_normal((n_paths, N))
# 计算对数价格增量
dlnS = drift + vol * Z
# 累积求和得到对数价格路径
lnS = np.zeros((n_paths, N+1))
lnS[:, 0] = np.log(S0)
lnS[:, 1:] = np.log(S0) + np.cumsum(dlnS, axis=1)
# 转回价格
S = np.exp(lnS)
return S
# 使用示例
S0 = 100.0 # 初始价格100
mu = 0.08 # 预期收益率8%
sigma = 0.2 # 波动率20%
T = 1.0 # 1年
N = 252 # 交易日数
paths = simulate_gbm(S0, mu, sigma, T, N, n_paths=10)
# 绘制路径
plt.figure(figsize=(10, 6))
for i in range(10):
plt.plot(paths[i], lw=1, alpha=0.7)
plt.axhline(y=S0, color='black', linestyle='--', alpha=0.5)
plt.title('GBM模拟路径 (S₀=100, μ=8%, σ=20%)')
plt.xlabel('交易日')
plt.ylabel('价格')
plt.show()
避坑指南:我曾经在写模拟器的时候,直接用 μ 而不是 μ - σ²/2 作为漂移项。结果模拟10000次后,平均价格比理论值高出一大截。找了半天bug,最后发现是这里的问题。记住,对数价格的漂移是 μ - σ²/2,不是μ。
4.6 小结
这一章我们干了三件事:
- 用几何布朗运动给股票价格建模
- 用伊藤引理求出GBM的显式解
- 通过Delta对冲推导出Black-Scholes PDE
说白了,就是从“股票价格怎么走”这个问题出发,一步步推导出“期权应该怎么定价”的偏微分方程。整个过程环环相扣,每一步都有清晰的金融直觉支撑。
我个人觉得,理解这个推导过程比记住最终公式更重要。因为当你真正理解了“为什么期权定价与预期收益率无关”这个反直觉的结论时,你对金融市场的理解就上了一个台阶。
好,这一章就到这儿。代码拿回去跑一跑,看看不同参数下路径长什么样。实践出真知。