1. 布朗运动与随机微积分基础:从物理布朗运动到维纳过程

各位同学,欢迎来到这门课的第一章。

说实话,每次讲随机微积分,我都有点感慨。十年前我刚入行时,第一次看到伊藤引理,整个人是懵的。那时候我就在想——这玩意儿到底怎么用在定价上?后来踩了不少坑,才慢慢摸清门道。

这一章,咱们就从最基础的东西说起:布朗运动。

1.1 物理布朗运动:花粉的随机舞蹈

1827年,植物学家布朗在显微镜下观察花粉颗粒。他发现花粉在水里不停地做无规则运动。一开始他以为是花粉有生命,后来发现死花粉、甚至玻璃粉末也这样。

为什么会这样?说白了,就是水分子在不停地撞击花粉颗粒。每个水分子都随机运动,撞击力大小方向都不确定。花粉颗粒就像被一群醉汉推来推去,走的路径自然毫无规律。

核心要点:物理布朗运动有三个特征——

  • 路径连续,但处处不可导(你没法说它在某个时刻的「速度」是多少)
  • 位移的方差与时间成正比(扩散速度是稳定的)
  • 不同时间段的位移相互独立(没有记忆)

嗯,这里要注意。第三个特征「独立增量」是后面所有随机微积分的基石。我当年做利率模型时,就因为没理解清楚这个独立性,导致模拟出来的路径总是有奇怪的周期性。后来排查了三天才发现是随机数生成器的问题——但这是后话了。

1.2 从布朗运动到维纳过程:数学家的手术刀

物理学家看布朗运动,觉得是随机现象。数学家不一样,他们要把它变成严格的数学对象。

1900年,巴舍利耶在他的博士论文里第一次用数学描述了布朗运动。他当时想的是给期权定价——没错,比布莱克-舒尔斯早了70年。可惜他生不逢时,论文没引起重视。

后来,维纳在1923年给出了严格的数学定义。所以我们今天说的「维纳过程」,其实就是数学家们精心打磨过的布朗运动。

1.3 维纳过程的严格定义

一个随机过程 \( W(t) \) 被称为维纳过程(或标准布朗运动),如果它满足:

  1. 起点为零: \( W(0) = 0 \) 几乎必然成立
  2. 独立增量: 对任意 \( 0 \leq s < t \),增量 \( W(t) - W(s) \) 与过去 \( \{W(u): u \leq s\} \) 独立
  3. 正态增量: \( W(t) - W(s) \sim N(0, t-s) \)
  4. 连续路径: \( W(t) \) 是 \( t \) 的连续函数(几乎必然)

我的个人习惯:每次写代码模拟维纳过程时,我都会先检查随机数生成器是否真的产生了独立的正态样本。用 np.random.seed() 控制种子,然后用 scipy.stats.normaltest 做正态性检验。别嫌麻烦,我在生产环境里见过太多「伪随机」导致的定价偏差。

1.4 维纳过程的性质:你不得不知道的事

维纳过程有一些反直觉的性质。我第一次接触时觉得不可思议,后来做多了才习惯。

性质 数学表达 直观理解
均值为零 \( E[W(t)] = 0 \) 长期来看,上下波动抵消
方差随时间增长 \( Var[W(t)] = t \) 时间越长,不确定性越大
路径几乎处处不可导 \( \frac{dW(t)}{dt} \) 不存在 你没法定义瞬时速度
二次变分非零 \( [W, W](t) = t \) 这是伊藤积分的核心

最后一条「二次变分非零」特别重要。你想想看,普通光滑函数的二次变分都是零。但维纳过程不一样——它的二次变分等于时间本身。这就是为什么伊藤积分和普通微积分不一样的根本原因。

我曾经踩过的坑:刚做利率衍生品时,我用欧拉法离散化短期利率模型。步长取太大,结果模拟出来的路径二次变分严重偏离理论值。定价结果自然一塌糊涂。后来我学乖了——模拟维纳过程时,步长一定要足够小,最好做收敛性测试。

1.5 多维维纳过程与相关性

实际定价中,我们很少只用一个布朗运动。比如你要给一个利率互换期权定价,可能需要同时模拟多个利率期限结构。这时候就需要多维维纳过程。

假设我们有 \( d \) 个相关的维纳过程 \( W_1, W_2, ..., W_d \),它们之间的相关系数矩阵为 \( \Sigma \)。那么我们可以用Cholesky分解来生成它们:

import numpy as np

def correlated_brownian(n_steps, n_paths, rho_matrix, dt=1.0):
    """
    生成相关的多维维纳过程
    
    参数:
        n_steps: 时间步数
        n_paths: 路径数
        rho_matrix: 相关系数矩阵 (d x d)
        dt: 时间步长
    
    返回:
        W: 形状为 (n_steps+1, n_paths, d) 的数组
    """
    d = rho_matrix.shape[0]
    L = np.linalg.cholesky(rho_matrix)
    
    # 生成独立的标准正态随机数
    Z = np.random.normal(size=(n_steps, n_paths, d))
    
    # 应用Cholesky分解得到相关的增量
    dW = np.einsum('ij,ktj->kti', L, Z) * np.sqrt(dt)
    
    # 累积求和得到路径
    W = np.zeros((n_steps + 1, n_paths, d))
    W[1:] = np.cumsum(dW, axis=0)
    
    return W

这段代码我用了好几年。注意 np.einsum 那行——很多人用矩阵乘法写,但 einsum 更清晰,也更快。我个人习惯在代码里加中文注释,方便团队里不太熟悉随机过程的同事理解。

1.6 本章知识体系总览

说了这么多,咱们用一张图来梳理一下本章的核心逻辑:

第一章:布朗运动与随机微积分基础 物理布朗运动 花粉颗粒的无规则运动 连续、不可导、独立增量 维纳过程定义 W(0)=0, 独立增量 正态增量, 连续路径 核心性质 均值为零, 方差=t 路径不可导, 二次变分=t 多维维纳过程与相关性 Cholesky分解, 相关系数矩阵 利率衍生品定价中的应用 短期利率模型 · 互换期权 · 债券定价

这张图把本章的逻辑串起来了。从物理现象出发,到数学定义,再到核心性质,最后落到多维情形和实际应用。后面的章节会沿着这个脉络一步步深入。

1.7 小结

这一章我们做了三件事:

  • 理解了物理布朗运动是怎么一回事
  • 掌握了维纳过程的严格定义和四个关键性质
  • 学会了如何用Python生成多维相关的维纳过程

说实话,这些基础概念看着简单,但真正用起来处处是坑。我建议你把上面的代码跑一遍,改改参数,看看不同相关系数下路径长什么样。动手做一遍,比看十遍都管用。

嗯,今天就到这儿。下一章咱们开始碰真正的随机微积分——伊藤积分。那才是真正有意思的地方。


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