Stationary Bootstrap (平稳自助法)

大白话:检验「策略 A 的夏普比率真的比策略 B 高吗」的时候,光看历史数据算出 0.83 对 0.70 是不够的—— 你得知道这个差距是不是随机波动造成的。平稳自助法就是从历史数据里反复「重抽」出一串又一串的假收益率, 每次都用同一套抽法,看看假数据里出现「差距比实测还大」的比例有多大。 关键在于它保留序列的自相关结构——动量策略的收益是连着几期同号的, 打乱这种结构会让结论偏乐观。

为什么不用普通的 iid 自助法

朴素的自助法把收益率观测值有放回地独立重抽,当作互相独立处理。这会破坏自相关—— 而自相关恰恰是你在动量、均值回归策略里真正关心的结构。

在 iid 自助法下,有效样本量被算错,检验会高估精度——也就是过于容易拒绝原假设。

平稳自助法改为重抽长度随机的连续块,从而保留局部依赖结构。

算法(Politis & Romano, 1994)

对时间序列 \{r_t\}_{t=1}^T 和块长分布参数 p \in (0, 1]:

  1. 从 \{1, \dots, T\} 均匀抽 i_1。第一个重抽到的观测是 r_{i_1}。
  2. 抽 U \sim \text{Uniform}(0,1)。若 U < p,则从 \{1, \dots, T\} 均匀抽下一个索引 i_2; 否则令 i_2 = i_1 + 1 \pmod T(延续当前块)。
  3. 重复直到得到长度为 T 的重抽序列。

期望块长是 1/p。p 怎么选:

p 效果
较大 块更长 → 保留更多依赖结构,但重抽序列自身的方差更大
较小 更接近 iid 自助法

怎么选 p

Politis & Romano 给出一条基于自相关结构的自动选法:

  1. 算样本自相关函数 \hat\rho(k),k = 1, 2, \dots。
  2. 找最小的 k 使得 \lvert\hat\rho(k)\rvert < 2 / \sqrt{T}(近似白噪声阈值)。
  3. 取 p = 1/k。

对约 20 年(约 5000 个观测)的日频策略收益率,p \approx 0.05 到 0.10 是常见取值。

应用:夏普比率差异检验

Moskowitz 等 (2025) 用的标准检验是:

H_0: SR_A \geq SR_B \quad \text{vs.} \quad H_1: SR_A < SR_B

先在原始收益率上算 \Delta SR = SR_A - SR_B。然后对 A 和 B 用同一套索引抽取做分块重抽 (这样保留了两者之间的相关性)。对 b = 1, \dots, B(通常 B = 1000)各算一次 \Delta SR^*_b。 自助法的 p 值为:

p = \frac{1}{B} \sum_{b=1}^{B} \mathbf{1}\!\left[\Delta SR^*_b \geq \Delta SR\right]

为什么要同步重抽:如果对 A 和 B 抽不同的块索引,两者之间的互相关就被破坏了,检验功效下降。 配对检验中始终要用同一套索引抽取。

实现

多数量化库都自带。Python 版:

import numpy as np

def stationary_bootstrap_indices(T, p, rng):
    """Generate one set of resampled indices for a stationary bootstrap."""
    idx = np.empty(T, dtype=int)
    i = rng.integers(0, T)
    for t in range(T):
        idx[t] = i
        if rng.random() < p:
            i = rng.integers(0, T)
        else:
            i = (i + 1) % T
    return idx

要对两组相关的收益率序列做向量化重抽,抽一次索引数组,两组都用它。

什么时候用替代方法

方法 特点 适用场景
循环自助法 固定块长 L,更简单 依赖结构在某个已知滞后阶上有干净的截断
最优块长分块自助法(Lahiri) 块长确定而非随机,用子抽样选出 与平稳法类似,但块长可重复
iid 自助法 破坏序列结构 仅当统计量与顺序无关时(如互不相关收益率的均值)
移动块自助法 固定块长 L 与循环法有相同的注意事项

常见错误

  • p 选错:太大 → 注入过多序列相关 → 独立样本变少 → 检验过于保守(漏掉真实差异)。
  • 配对检验中重抽不同步 → 破坏互相关。
  • 忽略波动率的时间变化:在原始收益上做自助法,若波动高度聚集会误导;可考虑对标准化收益做自助法,或单独对平方收益做分块自助法。
  • 前视偏差:用训练期的信息重抽测试期数据,会污染推断。

相关页面

参考文献

  • Politis, D.N. & Romano, J.P. (1994). "The Stationary Bootstrap." Journal of the American Statistical Association, 89(428).
  • Moskowitz, T.J., Sabbatucci, R., Tamoni, A., & Uhl, B. (2025). "Nonlinear Time Series Momentum." Working paper, §4 (uses n_b = 1000 bootstrap samples).