第一章:布朗运动与随机游走基础

各位同学,咱们今天聊聊随机过程里最基础、也最迷人的两个概念——布朗运动和随机游走。说实话,我刚开始接触量化交易那会儿,觉得这些东西离实战太远了。直到有一次做期权定价模型回测,发现价格路径模拟总对不上真实数据,排查了三天,最后发现是随机数生成器的种子设置出了问题。嗯,从那以后,我对这些基础概念再也不敢马虎了。

1.1 布朗运动的历史

1827年,英国植物学家罗伯特·布朗在显微镜下观察花粉颗粒时,发现它们在水面上做无规则运动。他一开始以为是花粉有生命,后来换成玻璃粉末、岩石粉末,结果一样。这就是布朗运动的发现。

但真正从数学上解释清楚这个现象,要等到1905年。那年爱因斯坦发表了关于分子热运动的论文,给出了布朗运动的数学描述。他推导出颗粒位移的均方位移与时间成正比——这个结论后来成了随机过程理论的基石。

我个人觉得,布朗运动最迷人的地方在于:它看起来完全随机,但统计规律却非常清晰。你想想看,单个花粉颗粒的轨迹毫无规律可言,但大量颗粒的统计行为却可以被精确预测。这不就是我们做量化交易追求的东西吗?

核心要点:布朗运动是连续时间、连续路径的随机过程,其增量服从正态分布,且增量独立。

1.2 随机游走的定义

随机游走是布朗运动的离散版本。说白了,就是每一步都随机决定方向。最简单的形式是一维随机游走:

  • 从原点出发
  • 每一步以50%概率向左或向右移动一个单位
  • 步长固定,方向随机

数学上可以写成:

S₀ = 0
Sₙ = X₁ + X₂ + ... + Xₙ

其中Xᵢ是独立同分布的随机变量,取值为+1或-1,概率各为1/2。

我在做高频交易策略回测时,经常用随机游走作为价格运动的零假设模型。如果策略在随机游走数据上还能赚钱,那基本可以断定是过拟合了。这个坑我踩过,后来成了我的标准测试流程。

实战技巧:在量化回测中,先用随机游走生成模拟价格序列,测试策略是否产生虚假收益。如果策略在随机游走上表现优异,赶紧回去检查代码逻辑。

1.3 维纳过程

维纳过程是布朗运动的严格数学定义。它满足以下条件:

  1. W₀ = 0
  2. Wₜ是连续函数(几乎必然)
  3. 增量Wₜ - Wₛ服从N(0, t-s)分布
  4. 增量独立

这里有个容易混淆的地方:维纳过程和布朗运动在金融领域基本可以互换使用,但严格来说,维纳过程是数学构造,布朗运动是物理现象。我建议你在写代码时统一用「维纳过程」这个术语,避免歧义。

为什么会强调连续性?因为离散的随机游走和连续的维纳过程,在极限情况下是等价的。当步长趋近于0,步数趋近于无穷时,随机游走就收敛到维纳过程。这个结论叫Donsker定理,是随机过程理论的核心结果之一。

注意:维纳过程的路径虽然连续,但几乎处处不可导。这意味着价格路径在任意时刻的瞬时变化率不存在。很多初学者试图用导数来建模价格变化,这是错误的。

1.4 马尔可夫性质

马尔可夫性质说的是:给定当前状态,未来与过去独立。用大白话讲就是——明天只取决于今天,跟昨天没关系。

数学表达:

P(Xₙ₊₁ = x | Xₙ = xₙ, Xₙ₋₁ = xₙ₋₁, ..., X₀ = x₀) = P(Xₙ₊₁ = x | Xₙ = xₙ)

布朗运动和随机游走都满足马尔可夫性质。这也是为什么它们能成为金融建模的基础——因为有效市场假说认为,当前价格已经包含了所有历史信息。

我曾经犯过一个错误:在构建趋势跟踪策略时,用了过去10天的价格数据做特征,但模型本身是马尔可夫的。结果发现加入历史数据不仅没提升效果,反而引入了噪声。后来我改用滑动窗口的统计量,效果就好多了。

关键理解:马尔可夫性质不是假设市场是随机的,而是说当前价格已经充分反映了历史信息。趋势跟踪策略之所以有效,是因为它捕捉的是当前状态下的条件概率变化,而不是历史模式的重复。

知识体系结构图

下面这张图展示了本章四个核心概念之间的关系:

第一章:布朗运动与随机游走基础 布朗运动历史 随机游走定义 维纳过程 马尔可夫性质 1827年布朗发现 离散时间/离散状态 连续时间/连续路径 无记忆性 核心关系:随机游走 → 维纳过程(极限) 布朗运动 = 维纳过程(金融领域) 三者均满足马尔可夫性质

代码示例:模拟一维随机游走

下面这个Python代码演示了如何模拟一维随机游走,并验证其与维纳过程的关系:

import numpy as np
import matplotlib.pyplot as plt

def simulate_random_walk(n_steps=1000, n_paths=5):
    """
    模拟一维随机游走
    n_steps: 步数
    n_paths: 路径数量
    """
    steps = np.random.choice([-1, 1], size=(n_paths, n_steps))
    paths = np.cumsum(steps, axis=1)
    
    # 添加起始点0
    paths = np.hstack([np.zeros((n_paths, 1)), paths])
    
    return paths

# 生成5条随机游走路径
paths = simulate_random_walk(1000, 5)

# 验证均方位移与时间成正比
displacements = paths[:, -1] - paths[:, 0]
msd = np.mean(displacements ** 2)
print(f"均方位移: {msd:.2f} (理论值: 1000)")

# 验证增量服从正态分布
increments = np.diff(paths[0])
print(f"增量均值: {np.mean(increments):.3f} (理论值: 0)")
print(f"增量方差: {np.var(increments):.3f} (理论值: 1)")

运行结果解读:你会发现均方位移接近步数(1000),增量均值接近0,方差接近1。这就是随机游走与维纳过程在统计上的等价性。我在做策略回测时,经常用这个性质来验证随机数生成器是否正确。

本章小结

布朗运动、随机游走、维纳过程这三个概念,本质上描述的是同一类现象——无规则运动。区别在于:

概念 时间 状态 典型应用
随机游走 离散 离散 价格模拟、策略回测
维纳过程 连续 连续 期权定价、风险管理
布朗运动 连续 连续 物理建模、金融理论

马尔可夫性质是贯穿始终的核心假设。它告诉我们:市场没有记忆,但当前状态包含了所有信息。这个看似矛盾的结论,恰恰是量化交易能够成立的基础。

我个人建议,刚开始做量化交易的同学,先把随机游走模拟玩熟练。你能从模拟数据中感受到价格运动的随机性,也能理解为什么趋势跟踪策略在某些市场环境下会失效。这些直觉,比任何数学模型都重要。

专注资料整理