3. 金融时间序列分析:时间序列基础、移动平均线、指数平滑、自相关与偏自相关、平稳性检验(ADF)

做量化交易这些年,我最大的感触就是:时间序列分析是量化交易的基石。你想想看,股票价格、交易量、收益率,哪个不是时间序列?说白了,我们量化交易员干的事,就是跟时间序列打交道。

我个人习惯把时间序列分析比作「听诊器」。医生用它听心跳,我们用它听市场脉搏。今天我就带你把这套「听诊器」用熟。

3.1 时间序列基础:你每天都在跟它打交道

时间序列,说白了就是按时间顺序排列的数据点。股票收盘价、每日成交量、分钟级收益率,这些都是时间序列。

我刚开始做量化时犯过一个低级错误:直接把原始价格序列扔进模型。结果模型跑出来效果奇差。后来才明白,价格序列往往是非平稳的,直接建模会出大问题。

一个标准的时间序列包含三个成分:

  • 趋势:长期上升或下降的方向
  • 季节性:固定周期内的规律波动
  • 残差:剔除趋势和季节性后的随机波动

嗯,这里要注意:金融数据通常没有明显的季节性,但会有「波动率聚集」现象——大波动后面跟着大波动,小波动后面跟着小波动。

核心概念:时间序列分析的目的是从历史数据中提取规律,并用这些规律预测未来。但记住,金融市场的规律是会变的。

3.2 移动平均线:最朴素但最有效的工具

移动平均线(MA)是我用得最多的工具之一。它简单到令人发指,但效果出奇的好。

简单移动平均(SMA)的公式:

SMA_t = (P_t + P_{t-1} + ... + P_{t-n+1}) / n

其中 n 是窗口大小。窗口越大,曲线越平滑,但滞后也越严重。

我在项目中遇到过一个问题:用20日均线做趋势跟踪,结果在震荡行情中被反复打脸。后来我改用双均线策略——快线上穿慢线做多,下穿做空,效果好了不少。

还有一种叫指数移动平均(EMA),它给近期的数据更高的权重:

EMA_t = α * P_t + (1-α) * EMA_{t-1}

α 是平滑系数,通常取 2/(n+1)。我个人习惯用 EMA 而不是 SMA,因为它对价格变化反应更快。

实战技巧:做日内交易时,我常用 5/20 双均线组合;做趋势跟踪时,用 20/60 组合。没有绝对正确的参数,需要根据品种和周期调整。

3.3 指数平滑:给历史数据「打折」

指数平滑是移动平均的升级版。它的核心思想很简单:越近的数据越重要,越远的数据越不重要

一次指数平滑:

S_t = α * X_t + (1-α) * S_{t-1}

这其实就是 EMA 的另一种写法。但指数平滑家族还有更强大的成员:

  • Holt 线性趋势模型:能捕捉趋势
  • Holt-Winters 季节性模型:能同时捕捉趋势和季节性

我曾经用 Holt-Winters 模型预测过某只股票的短期走势。效果嘛,比随机猜好一点,但远没到能赚钱的程度。为什么?因为金融数据的「规律」太脆弱了,一旦市场环境变化,模型就失效。

避坑指南:指数平滑模型假设数据模式是稳定的。但金融市场最大的特点就是不稳定。所以,别指望用这些模型长期赚钱,它们更适合做短期预测或数据预处理。

3.4 自相关与偏自相关:找到数据内部的「记忆」

自相关(ACF)衡量的是时间序列与其滞后版本的相关性。偏自相关(PACF)则是在剔除中间滞后影响后的相关性。

这两个工具有什么用?

  • ACF 图:看数据是否存在周期性或趋势
  • PACF 图:帮助确定 ARIMA 模型中 AR 项的阶数

我记得有一次分析某只股票的日收益率序列,ACF 图显示滞后1期有显著的自相关。这意味着今天的收益率能部分预测明天的收益率。嗯,这是个套利机会!

但别高兴太早。这种「记忆」通常很微弱,交易成本一扣,利润就没了。

判断标准:如果 ACF 或 PACF 的值超出 95% 置信区间(通常用 ±1.96/√n 计算),就认为该滞后项显著。

3.5 平稳性检验(ADF):别拿非平稳数据直接建模

这是我最想强调的一点。很多量化模型都要求数据是平稳的。什么是平稳?简单说就是统计性质不随时间变化——均值恒定、方差恒定、自相关结构恒定。

ADF(Augmented Dickey-Fuller)检验是最常用的平稳性检验方法。它的原假设是「序列存在单位根(非平稳)」。

看结果很简单:

  • p值 < 0.05:拒绝原假设,序列平稳
  • p值 >= 0.05:不能拒绝原假设,序列非平稳

我曾经犯过一个经典错误:直接用股票价格序列做回归分析,结果 R² 高达 0.95,看起来完美极了。但后来发现这是「伪回归」——两个非平稳序列之间根本没有真实关系,只是巧合地同向运动。

怎么处理非平稳数据?

  1. 差分:一阶差分通常能让价格序列变平稳
  2. 取对数:对数收益率比原始价格更接近平稳
  3. 去趋势:减去拟合的趋势线

我的习惯:拿到任何时间序列数据,第一件事就是做 ADF 检验。如果 p 值大于 0.05,先差分再建模。这个习惯帮我避免了很多坑。

3.6 知识体系总览

下面这张图是我自己梳理的时间序列分析知识体系,你可以把它当作学习地图:

金融时间序列分析知识体系 时间序列分析 时间序列基础 趋势 + 季节性 + 残差 波动率聚集现象 移动平均线 SMA / EMA / 双均线策略 指数平滑 Holt / Holt-Winters 自相关与偏自相关 ACF图 / PACF图 / 定阶 平稳性检验 ADF检验 / 差分 / 对数变换 核心原则:先检验平稳性 → 再选择模型 → 最后验证效果

这张图把今天讲的内容串起来了。你从底部往上看:先做平稳性检验,然后根据数据特征选择移动平均或指数平滑,再用自相关分析辅助建模。每一步都有它的道理。

好了,时间序列分析的基础就讲到这里。这些工具看起来简单,但用好它们需要大量实践。我建议你拿真实数据跑一遍,感受一下每个步骤的效果。只有亲手做过,才能真正理解。