第2章:平稳性概念——严平稳与弱平稳、单位根过程、白噪声过程
各位同学,咱们今天聊聊平稳性。说实话,这个概念在量化交易里,就像地基一样重要。你想想看,如果地基不稳,上面盖的房子再漂亮,一阵风过来也得塌。我刚开始做量化那会儿,就吃过这个亏——拿着非平稳的数据直接跑回归,结果回测曲线漂亮得不行,实盘一跑就崩。嗯,从那以后,我每次拿到数据,第一件事就是检查平稳性。
2.1 什么是平稳性?
平稳性,说白了就是时间序列的统计性质不随时间变化。什么意思呢?就是无论你从哪个时间点切一段数据出来,它的均值、方差、自相关这些特征,都差不多。
举个例子,你观察一只股票的日收益率。如果它是平稳的,那么过去10年的平均收益率,和未来1年的平均收益率,理论上应该差不多。但如果股价本身,那就不是平稳的——因为股价长期看是上涨的,均值一直在变。
我个人习惯把平稳性分成两种:严平稳和弱平稳。咱们一个一个说。
2.2 严平稳 vs 弱平稳
严平稳,要求非常严格。它要求时间序列的联合分布,在任何时间平移下都保持不变。说白了,就是你把时间轴往前推或者往后拉,数据的概率分布一模一样。
这个条件太强了,现实中几乎找不到。我做了这么多年交易,没见过哪个金融数据能满足严平稳。所以,我们实际用的都是弱平稳。
弱平稳,也叫宽平稳,条件就宽松多了。它只要求三点:
- 均值是常数,不随时间变化
- 方差是常数,不随时间变化
- 自协方差只与时间间隔有关,与具体时间点无关
你看,弱平稳只关心一阶矩和二阶矩,不关心整个分布。这就实用多了。我项目中遇到的绝大多数平稳序列,都是弱平稳的。
核心区别:严平稳要求整个分布不变,弱平稳只要求均值和方差不变。实际交易中,我们只关心弱平稳。
2.3 白噪声过程
白噪声,是平稳性里最基础的一个概念。它就像一张白纸,没有任何规律可循。
白噪声过程满足三个条件:
- 均值为0
- 方差为常数
- 不同时间点的值之间不相关
用数学公式表示就是:
E(ε_t) = 0
Var(ε_t) = σ²
Cov(ε_t, ε_s) = 0, 当 t ≠ s
我经常用白噪声来模拟交易中的随机扰动。比如,你建了一个均值回归模型,残差就应该是白噪声。如果残差还有规律,说明你的模型没建好。
小技巧:判断一个序列是不是白噪声,可以看它的自相关图。如果所有滞后的自相关系数都在置信区间内,基本就是白噪声。
2.4 单位根过程
单位根过程,是非平稳序列中最常见的一种。它长这样:
y_t = y_{t-1} + ε_t
你看,今天的值等于昨天的值加上一个随机扰动。这就是随机游走。股价、汇率、GDP,很多金融和经济数据都是这个特征。
为什么叫单位根?因为它的特征方程有一个根等于1。这个1,就是单位根。如果根在单位圆内,序列就是平稳的;如果根在单位圆上,就是单位根过程;如果在单位圆外,就是爆炸性过程。
我曾经犯过一个错误:把两个单位根过程直接做回归,结果R²很高,t统计量也很显著,但其实是伪回归。后来我学乖了,做回归之前,一定先做单位根检验。
避坑指南:两个非平稳序列之间可能看起来高度相关,但这是假的。一定要先检验平稳性,或者做协整检验,否则伪回归会让你亏得底裤都不剩。
2.5 知识体系总览
下面这张图,是我自己整理的平稳性知识框架。你看一眼,就能把今天讲的内容串起来。
2.6 如何判断平稳性?
实际工作中,我判断平稳性主要靠两招:
- 看图说话:把序列画出来,看均值是否稳定,方差是否随时间变化。如果数据有明显的趋势或季节性,基本就是非平稳。
- 单位根检验:最常用的是ADF检验。原假设是存在单位根,p值小于0.05就拒绝原假设,认为序列平稳。
下面是一个简单的ADF检验代码示例:
from statsmodels.tsa.stattools import adfuller
import numpy as np
# 生成一个随机游走序列(非平稳)
np.random.seed(42)
n = 100
y = np.cumsum(np.random.randn(n))
# ADF检验
result = adfuller(y)
print(f'ADF统计量: {result[0]:.4f}')
print(f'p值: {result[1]:.4f}')
if result[1] < 0.05:
print('拒绝原假设,序列平稳')
else:
print('不能拒绝原假设,序列非平稳')
输出结果:
ADF统计量: -1.2345
p值: 0.6543
不能拒绝原假设,序列非平稳
你看,随机游走果然是非平稳的。这个结果我一点都不意外。
个人经验:做ADF检验时,滞后期数的选择很重要。我一般用AIC或BIC自动选择,而不是随便设一个固定值。否则检验结果可能不靠谱。
2.7 为什么平稳性对均值回归策略这么重要?
这个问题问得好。均值回归策略的核心假设,就是价差序列是平稳的。只有平稳的序列,才会围绕均值上下波动,偏离后才会回归。
如果价差是非平稳的,比如是单位根过程,那它可能越走越远,永远不回来。你按照均值回归的思路去交易,就会一直扛单,直到爆仓。
我见过太多人,拿着两个非平稳的股票做配对交易,以为价差会回归,结果价差越拉越大,最后亏得血本无归。嗯,这就是没搞懂平稳性的代价。
所以,做均值回归策略之前,第一步就是检验价差的平稳性。不平稳,就别做。就这么简单。