4. 多变量金融预测问题定义

在单变量时间序列预测中,我们通常只关心一个目标序列的历史值如何决定其未来值。但真实金融场景几乎从不如此简单:资产收益率会受到市场指数、利率、汇率、波动率、成交量、宏观指标乃至新闻情绪的共同影响。TFT(Temporal Fusion Transformer)之所以适合金融预测,正是因为它能同时处理多变量输入、多步预测,并显式区分静态协变量、已知未来输入与未知未来输入。本节将把这四类信息拆开定义,并说明它们在建模中的不同角色。

一、核心原理:四类输入的角色分工

多变量金融预测问题的标准定义可以概括为:给定目标序列的历史观测、若干外生变量的历史与未来信息,以及不随时间变化的静态属性,预测目标序列未来多个时间步的值。TFT 将输入划分为以下四类:

  • 静态协变量(Static Covariates):不随时间变化的属性,如资产类别、行业板块、交易所、信用评级。它们通过静态编码器生成上下文向量,用于调制时间维度的注意力与门控。
  • 已知未来输入(Known Future Inputs):在预测时点已经确定或可提前获取的未来值,如日历特征(星期、月份、节假日)、已公布的财报日期、合约到期日、政策会议日程。它们可以安全地作为解码器输入。
  • 未知未来输入(Unknown Future Inputs):预测时点无法获得未来真实值的变量,如未来成交量、未来波动率、未来市场指数收益率。它们只能使用历史部分,未来部分必须由模型自身推断或忽略。
  • 目标序列历史(Target History):待预测变量自身的历史观测,既参与编码器,也用于构造监督信号。

关键区分标准只有一条:在预测时点 t,该变量在 t+1 到 t+H 的值是否已知?已知则归入已知未来输入,未知则归入未知未来输入。混淆二者会导致数据泄漏,使离线评估虚高、线上表现崩塌。

二、方法流程:从问题定义到 TFT 输入装配

将业务问题转化为 TFT 可训练的样本,需要经过以下步骤:

  1. 确定预测目标与预测跨度:例如预测未来 5 个交易日的日收益率,H=5。
  2. 枚举候选变量并分类:对每个变量判断其属于静态、已知未来还是未知未来。
  3. 构造时间索引与回看窗口:设定编码器长度(如 60 天)和解码器长度(如 5 天)。
  4. 生成训练样本:每个样本包含静态向量、历史序列、已知未来序列、目标历史与目标未来。
  5. 配置 TFT 输入层:为每类变量指定对应的变量选择网络与编码路径。

下面是一个简化的配置示例,展示如何用配置字典表达变量分类:

config = {
  "static_covariates": ["asset_class", "sector", "exchange"],
  "known_future_inputs": ["day_of_week", "month", "is_holiday", "earnings_date"],
  "unknown_future_inputs": ["volume", "realized_vol", "market_return", "vix"],
  "target": "return_5d",
  "encoder_length": 60,
  "decoder_length": 5
}

在 TFT 内部,静态协变量经过变量选择后生成静态上下文向量;已知未来输入与未知未来输入分别进入编码器的历史部分,而解码器只接收已知未来输入和目标历史。未知未来输入在解码阶段没有真实值,因此不会进入解码器,避免泄漏。

TFT 多变量输入分类与数据流 静态协变量 行业 / 板块 / 交易所 已知未来输入 日历 / 财报日 / 到期日 未知未来输入 成交量 / 波动率 / VIX TFT 编码器 变量选择 + LSTM 静态上下文调制 历史窗口 60 天 仅使用历史部分 TFT 解码器 已知未来输入 目标历史 多步输出 H=5 不接收未知未来 未知未来输入仅进入编码器历史部分;解码器只使用已知未来输入与目标历史

三、案例场景:多因子选股中的变量分类

假设我们要预测某只股票未来 5 日的超额收益,候选变量如下表所示。正确分类是建模成功的前提。

变量 类型 预测时点是否已知未来 在 TFT 中的使用方式
行业板块 静态协变量 不随时间变化 静态编码,调制注意力
星期几、月份 已知未来输入 是 解码器输入
财报公布日 已知未来输入 是(日程已知) 解码器输入
历史成交量 未知未来输入 否 仅编码器历史部分
市场指数收益率 未知未来输入 否 仅编码器历史部分
VIX 波动率 未知未来输入 否 仅编码器历史部分

如果误把“未来成交量”当作已知未来输入喂给解码器,模型在训练时会看到未来真实成交量,评估指标会异常优秀,但实盘时该值不存在,预测立即失效。这是金融时序建模中最常见也最致命的数据泄漏之一。

四、误区与复盘:三个高频错误

误区一:把所有外生变量都当作已知未来输入。只有日历、日程、合约条款等真正可提前确定的变量才属于已知未来。宏观数据虽有发布日程,但其数值在发布前未知,应归入未知未来输入。

误区二:忽略静态协变量的调制作用。静态变量不是简单拼接,而是通过静态编码器生成上下文,影响变量选择与时间注意力。若把行业板块当作普通时间序列输入,会丢失其跨时间的稳定约束。

误区三:多步预测时只关注目标序列。多步预测要求解码器在每一步都有一致的输入结构。已知未来输入必须覆盖整个解码窗口,否则解码器在部分步长上缺少输入,导致预测不稳定。

复盘清单:① 每个变量在预测时点的未来值是否真的已知?② 静态变量是否被正确编码而非当作时序?③ 解码器是否只接收已知未来输入与目标历史?④ 训练集与验证集的时间切分是否严格按预测时点划分?⑤ 是否存在用未来信息构造特征的隐蔽泄漏?

理解这四类输入的定义与边界,是使用 TFT 进行多变量金融预测的第一步。只有先把“什么已知、什么未知、什么不变”说清楚,后续的变量选择网络、注意力机制与可解释性分析才有可靠的语义基础。