Stationary Bootstrap (平稳自助法)
大白话:检验「策略 A 的夏普比率真的比策略 B 高吗」的时候,光看历史数据算出 0.83 对 0.70 是不够的—— 你得知道这个差距是不是随机波动造成的。平稳自助法就是从历史数据里反复「重抽」出一串又一串的假收益率, 每次都用同一套抽法,看看假数据里出现「差距比实测还大」的比例有多大。 关键在于它保留序列的自相关结构——动量策略的收益是连着几期同号的, 打乱这种结构会让结论偏乐观。
为什么不用普通的 iid 自助法
朴素的自助法把收益率观测值有放回地独立重抽,当作互相独立处理。这会破坏自相关—— 而自相关恰恰是你在动量、均值回归策略里真正关心的结构。
在 iid 自助法下,有效样本量被算错,检验会高估精度——也就是过于容易拒绝原假设。
平稳自助法改为重抽长度随机的连续块,从而保留局部依赖结构。
算法(Politis & Romano, 1994)
对时间序列 \{r_t\}_{t=1}^T 和块长分布参数 p \in (0, 1]:
- 从 \{1, \dots, T\} 均匀抽 i_1。第一个重抽到的观测是 r_{i_1}。
- 抽 U \sim \text{Uniform}(0,1)。若 U < p,则从 \{1, \dots, T\} 均匀抽下一个索引 i_2; 否则令 i_2 = i_1 + 1 \pmod T(延续当前块)。
- 重复直到得到长度为 T 的重抽序列。
期望块长是 1/p。p 怎么选:
| p | 效果 |
|---|---|
| 较大 | 块更长 → 保留更多依赖结构,但重抽序列自身的方差更大 |
| 较小 | 更接近 iid 自助法 |
怎么选 p
Politis & Romano 给出一条基于自相关结构的自动选法:
- 算样本自相关函数 \hat\rho(k),k = 1, 2, \dots。
- 找最小的 k 使得 \lvert\hat\rho(k)\rvert < 2 / \sqrt{T}(近似白噪声阈值)。
- 取 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 选错:太大 → 注入过多序列相关 → 独立样本变少 → 检验过于保守(漏掉真实差异)。
- 配对检验中重抽不同步 → 破坏互相关。
- 忽略波动率的时间变化:在原始收益上做自助法,若波动高度聚集会误导;可考虑对标准化收益做自助法,或单独对平方收益做分块自助法。
- 前视偏差:用训练期的信息重抽测试期数据,会污染推断。
相关页面
- Sharpe Ratio — 被检验的统计量。
- Backtesting and Execution — 回测语境。
- Time-Series Momentum — 用这个方法检验的主要策略之一。
参考文献
- 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).