2. 金融时间序列基础

在把 RNN、LSTM 用于金融预测之前,必须先弄清楚“喂给模型的数据到底是什么”。金融时间序列并不是一条简单的价格曲线,而是由价格、收益率、成交量、波动率等多条相互关联的序列构成。理解它们的统计性质,决定了模型能否学到真实规律,还是仅仅拟合噪声。

一、四类核心数据类型

金融市场的原始观测通常可以归纳为四类,它们的信息含量和建模用途各不相同。

  • 价格(Price):开盘价、最高价、最低价、收盘价(OHLC)。价格序列通常是非平稳的,存在趋势和单位根,直接输入模型容易导致伪回归。
  • 收益率(Return):常用对数收益率 r_t = ln(P_t / P_{t-1})。相比价格更接近平稳序列,是预测任务中最常用的目标变量。
  • 成交量(Volume):反映市场参与度与流动性,常呈现尖峰厚尾和长记忆性,通常需要做对数或标准化处理。
  • 波动率(Volatility):收益率的条件标准差,具有波动聚集(volatility clustering)特征,常用 GARCH 族模型或已实现波动率来刻画。
建模经验:价格用于计算特征,收益率用于定义预测目标,成交量用于判断信号可信度,波动率用于风险控制与仓位管理。四者组合,才能构成完整的输入特征矩阵。

二、平稳性、自相关与白噪声

平稳性(Stationarity)是时间序列建模的地基。若一个序列的均值、方差和自协方差不随时间平移而改变,则称其为弱平稳。非平稳序列会让模型学到“时间趋势”而非“可复用规律”。常用检验方法包括 ADF 检验和 KPSS 检验。

from statsmodels.tsa.stattools import adfuller

result = adfuller(returns, autolag="AIC")
print("ADF Statistic:", result[0])
print("p-value:", result[1])
# p-value < 0.05 通常认为序列平稳

自相关(Autocorrelation)衡量序列与自身滞后项的相关程度。ACF 用于观察整体相关性衰减,PACF 用于识别剔除中间滞后后的直接相关。金融收益率往往在低阶滞后上自相关很弱,但绝对收益率或平方收益率却表现出显著的长记忆性——这正是波动率聚集的统计证据。

白噪声(White Noise)是均值为零、方差恒定、各期互不相关的序列。它是“没有可预测信息”的基准。若模型残差接近白噪声,说明模型已提取了主要结构;若残差仍有显著自相关,则说明模型欠拟合。

金融时间序列数据类型与统计性质 价格 Price 非平稳 · 有趋势 收益率 Return 近似平稳 · 弱自相关 成交量 Volume 尖峰厚尾 · 长记忆 波动率 Volatility 聚集性 · 条件异方差 统计检验层:平稳性(ADF/KPSS) · 自相关(ACF/PACF) · 白噪声检验(Ljung-Box) 决定是否需要差分、取对数、标准化或引入波动率特征 RNN / LSTM 输入特征矩阵 平稳化后的收益率 + 成交量 + 波动率 + 滞后特征

三、方法流程:从原始行情到模型输入

把原始行情转化为可训练序列,通常遵循以下流程:

  1. 数据对齐:统一时间频率(日线、分钟线),处理停牌、缺失值与不同市场时区。
  2. 价格转收益率:使用对数收益率,避免价格量纲差异并近似可加。
  3. 平稳性检验:对每条特征做 ADF 检验,不平稳则差分或取对数差分。
  4. 自相关分析:用 ACF/PACF 确定滞后阶数,构造滞后特征。
  5. 波动率特征:计算滚动标准差或 GARCH 条件方差,作为额外输入。
  6. 标准化与滑窗:按训练集统计量做 Z-score,再切分为固定长度的滑动窗口样本。
# 构造滑动窗口样本(示意)
def make_windows(series, window=30):
    X, y = [], []
    for i in range(len(series) - window):
        X.append(series[i:i+window])
        y.append(series[i+window])
    return np.array(X), np.array(y)

四、案例场景与常见误区

假设我们要预测某只股票未来一日的收益率方向。若直接把收盘价序列输入 LSTM,模型很可能学到“价格长期上涨”这一趋势,在测试集上表现虚高,实盘却失效。正确做法是:以对数收益率作为目标,加入成交量变化率和 20 日滚动波动率作为辅助特征,并对所有特征做平稳化与标准化。

概念 判断方法 建模含义
平稳性 ADF p < 0.05 可安全用于回归与神经网络输入
自相关 ACF/PACF 显著超出置信带 存在可利用的滞后结构
白噪声 Ljung-Box p > 0.05 无可预测信息,模型残差理想状态
波动聚集 平方收益率 ACF 缓慢衰减 需引入 GARCH 或波动率特征
常见误区:一是用未来信息做标准化(数据泄露);二是对价格直接建模却忽略非平稳性;三是只看收益率自相关,忽略波动率的强自相关,导致模型在风险刻画上失效。
复盘建议:每次建模前先画四条曲线——价格、收益率、成交量、滚动波动率,再配合 ADF 与 ACF 图。若收益率接近白噪声,不要强行预测方向,可转向波动率预测或仓位管理任务。

掌握这些基础概念后,RNN 与 LSTM 才有意义:它们擅长捕捉序列中的非线性依赖与长程记忆,但前提是输入序列已经过平稳化、特征化和合理切分。数据质量与统计性质,往往比网络结构更能决定金融预测的成败。