4.5 时间序列分析
时间序列分析研究按时间顺序排列的数据点的统计性质。与横截面数据不同,时间序列数据的关键特征是自相关——过去的值影响未来的值。
一、基本概念
1.1 时间序列 vs 横截面数据
| 特征 | 横截面 | 时间序列 |
|---|---|---|
| 维度 | 同一时间多个个体 | 同一个体多个时间点 |
| 关键假设 | 独立同分布(i.i.d.) | 序列依赖 |
| 主要关注 | 分布参数 | 动态结构(趋势、自相关) |
1.2 平稳性(Stationarity)
严平稳:联合分布对时间平移不变
弱平稳(宽平稳):
- (常数均值)
- (常数方差)
- (协方差仅依赖滞后 )
金融收益率通常近似弱平稳,但价格序列一般不平稳。
1.3 自相关函数(ACF)
样本 ACF:
二、白噪声(White Noise)
白噪声 是最基础的时间序列"原料"。一个序列 被称为白噪声,记为 ,如果满足三个条件:
- 均值为零:
- 方差恒定:(常数,不随时间变化)
- 无自相关: 对任意 (过去值不能预测未来值)
直观理解:白噪声就像一台收音机的"沙沙"背景噪音——每个时间点的值完全随机,没有规律可循,无法用过去的值预测未来的值。
为什么叫"白"噪声:类比白光——白光包含所有频率的可见光,能量在所有频率上均匀分布。白噪声也类似,它的能量在所有频率上均匀分布(功率谱密度为常数)。
在时间序列中的作用:白噪声是所有时间序列模型的"构建块"。AR、MA、ARMA 模型都把观测序列 表示为过去值的加权和加上一个白噪声冲击 。
三、AR(1) 模型
3.1 模型定义
其中 保证平稳性。
性质:
3.2 手算:AR(1) 模拟与 ACF
设 ,生成序列 ,:
| 0 | — | (初始值) |
| 1 | ||
| 2 | ||
| 3 | ||
| 4 | ||
| 5 | ||
| 6 | ||
| 7 | ||
| 8 | ||
| 9 | ||
| 10 |
3.3 手动计算 ACF(前 3 个滞后)
样本均值
计算分母:
| 1 | 1.200 | 0.5793 | 0.3356 |
| 2 | 0.540 | -0.0807 | 0.0065 |
| 3 | 1.178 | 0.5573 | 0.3106 |
| 4 | 0.725 | 0.1043 | 0.0109 |
| 5 | 1.107 | 0.4863 | 0.2365 |
| 6 | 0.275 | -0.3457 | 0.1195 |
| 7 | 0.393 | -0.2277 | 0.0519 |
| 8 | 0.675 | 0.0543 | 0.0029 |
| 9 | -0.227 | -0.8477 | 0.7186 |
| 10 | 0.141 | -0.4797 | 0.2301 |
分母
滞后 1 (9 对数据):
| 乘积 | |||
|---|---|---|---|
| 1 | 0.5793 | -0.0807 | -0.0467 |
| 2 | -0.0807 | 0.5573 | -0.0450 |
| 3 | 0.5573 | 0.1043 | 0.0581 |
| 4 | 0.1043 | 0.4863 | 0.0507 |
| 5 | 0.4863 | -0.3457 | -0.1681 |
| 6 | -0.3457 | -0.2277 | 0.0787 |
| 7 | -0.2277 | 0.0543 | -0.0124 |
| 8 | 0.0543 | -0.8477 | -0.0460 |
| 9 | -0.8477 | -0.4797 | 0.4066 |
分子 (求和)
滞后 2 (8 对数据):
滞后 3 (7 对数据):
理论 ACF 对比:
| 滞后 | 理论值 | 样本估计 |
|---|---|---|
| 1 | ||
| 2 | ||
| 3 |
注意:样本量 很小,因此样本 ACF 与理论值偏差较大。实践中至少需要 50-100 个观测才有可靠的 ACF 估计。
四、随机游走
3.1 定义
即 的 AR(1) 过程——非平稳。
性质:
- (初始值)
- (方差随时间增长)
- 当 (极度持久)
3.2 随机游走 vs AR(1) 对比
| 特征 | AR(1) 平稳 () | 随机游走 () |
|---|---|---|
| 均值 | 常数 | (不变) |
| 方差 | 常数 | 随时间 |
| ACF | 指数衰减 | 缓慢衰减 |
| 冲击影响 | 指数衰减 | 永久存留 |
| 预测 | 均值回归 | 当前值是最优预测 |
Quant Link:动量策略与均值回归
时间序列分析在量化中的两类核心应用:
动量策略(Momentum):
- 依赖于正自相关:过去收益好 未来收益好
- 运用序列相关性:若 与 正相关,做多过去表现好的资产
- 时间序列动量:直接对单资产过去 期收益回归预测未来收益
- 代表性文献:Jegadeesh & Titman (1993)
均值回归策略(Mean Reversion):
- 依赖于负自相关或平稳性:价格偏离均值后会回归
- 配对交易(Pairs Trading):两个协整资产价差 均值回归
- 统计套利:基于 Ornstein-Uhlenbeck 过程的 参数
- Ornstein-Uhlenbeck (OU) 过程:一种均值回归的随机过程,。其中 是布朗运动的增量(详见 6.3 布朗运动), 是回归速度—— 越大,价格偏离均值后回拉越快。均值回归半衰期 衡量回归速度:若 ,半衰期 天(即价格偏离均值后,约 7 天回到一半距离)。
识别方法:
- ACF 图:动量策略选正 ACF 的资产,均值回归选负 ACF 或快速衰减
- Augmented Dickey-Fuller (ADF) 检验:检验序列是否平稳
- Hurst 指数:(均值回归),(趋势/动量)
Python 验证
python
import numpy as np
import matplotlib.pyplot as plt
from statsmodels.graphics.tsaplots import plot_acf
from statsmodels.tsa.stattools import acf, adfuller
# AR(1) 模拟 φ=0.7
np.random.seed(42)
n = 100
phi = 0.7
X = np.zeros(n)
X[0] = 1.0
for t in range(1, n):
X[t] = phi * X[t-1] + np.random.normal(0, 1)
# 样本 ACF 对比理论值
sample_acf = acf(X, nlags=5)
theory_acf = [phi**h for h in range(6)]
print("滞后 | 样本 ACF | 理论 ACF")
print("-" * 35)
for h in range(6):
print(f" {h} | {sample_acf[h]:.4f} | {theory_acf[h]:.4f}")
# 单位根检验(ADF)
adf_stat, p_val = adfuller(X, maxlag=5)[:2]
print(f"\nADF 统计量 = {adf_stat:.4f}, p-value = {p_val:.4f}")
print(f"结论: {'平稳' if p_val < 0.05 else '非平稳'}")
# 随机游走对比
np.random.seed(42)
Y = np.cumsum(np.random.normal(0, 1, n))
adf_stat2, p_val2 = adfuller(Y, maxlag=5)[:2]
print(f"\n随机游走 ADF p-value = {p_val2:.4f}(应为 > 0.05)")小结
| 概念 | 定义 | 量化意义 |
|---|---|---|
| 平稳性 | 统计性质不随时间变化 | 统计推断有效的前提 |
| ACF | 阶自相关 | 识别序列依赖模式 |
| AR(1) | 一阶自回归系数 | 动量/反转强度 |
| 随机游走 | 的单位根过程 | 有效市场假说 |
| 均值回归 | 序列围绕均值波动 | 统计套利基础 |
下一步:继续学习 05 最优化理论——从统计推断到策略优化。