1. 课程导入
欢迎进入《Transformer交易信号预测实战》。在正式写模型之前,我们需要先建立一张清晰的“作战地图”:我们要预测什么、为什么用Transformer、数据如何流动、模型如何评估、以及怎样把预测结果变成可执行的交易信号。本章不涉及复杂公式推导,而是帮你建立全局认知,避免后续陷入“只会调包、不懂因果”的困境。
一、学习目标:你最终要掌握什么
本课程的目标不是训练一个“看起来很准”的模型,而是构建一条从原始行情到交易决策的完整链路。学完后,你应当能够独立完成以下任务:
- 数据层:获取并清洗K线、成交量、盘口等时序数据,构造无未来函数泄漏的特征与标签。
- 模型层:理解自注意力机制为何适合捕捉多周期、跨资产的依赖关系,并能搭建编码器式Transformer预测器。
- 训练层:掌握时间序列切分、损失函数选择、学习率调度与过拟合监控。
- 评估层:用IC、RankIC、分层回测、胜率、盈亏比等指标判断信号质量,而非只看准确率。
- 落地层:把预测值映射为仓位、止损止盈与交易成本约束下的可执行策略。
二、核心概念:先统一语言
在后续章节中,以下概念会反复出现,请先建立直觉:
| 概念 | 含义 | 在本课程中的角色 |
|---|---|---|
| 时间序列窗口 | 用过去N根K线预测未来M根收益 | 决定模型输入输出形状 |
| 自注意力 | 让每个时间步动态关注其他时间步 | 捕捉长程与多周期依赖 |
| 位置编码 | 为序列注入顺序信息 | 弥补注意力本身的无序性 |
| 标签泄漏 | 训练时使用了未来信息 | 最常见的致命错误 |
| IC / RankIC | 预测值与未来收益的相关性 | 衡量信号方向性 |
| 分层回测 | 按预测值分组检验收益单调性 | 验证信号可交易性 |
其中,标签泄漏是新手最容易踩的坑。例如用当日收盘价计算的特征去预测当日收益,或标准化时使用了全样本均值,都会让回测结果虚高。课程中我们会用严格的滚动窗口和“训练集统计量”来规避。
三、整体框架与实战路线图
整个项目可以拆成五个阶段,形成闭环迭代:数据准备 → 特征工程 → 模型构建 → 训练验证 → 信号回测。下图展示了从原始行情到交易信号的完整数据流与关键判断点。
路线图的核心逻辑是闭环迭代:回测不理想时,优先检查特征与标签构造,再调整模型结构,最后才考虑堆叠更复杂的网络。很多初学者一上来就追求深层Transformer,却忽略了数据质量,结果事倍功半。
四、典型场景与常见误区
假设我们要预测某只股票未来5日的收益率方向。一个合理的流程是:用过去60根K线的量价特征作为输入,输出未来5日收益的预测值,再按预测值排序做多头部、做空尾部。这个场景贯穿课程始终。
以下是新手最常犯的四类错误,请务必警惕:
- 未来函数:用当日收盘价计算的特征预测当日收益,或标准化时用了全样本统计量。
- 随机切分:时间序列必须按时间顺序切分,随机打乱会让模型“偷看”未来。
- 只看准确率:涨跌样本不平衡时,准确率毫无意义,应关注IC与分层收益。
- 忽略成本:高频调仓在扣除手续费和滑点后可能由盈转亏。
五、环境与代码准备
课程使用Python生态,建议提前安装以下依赖。后续章节的代码均基于此环境:
# 建议使用 Python 3.9+
pip install torch numpy pandas scikit-learn matplotlib
pip install ta tushare # 技术指标与数据获取(可选)
一个最小可运行的数据窗口构造示例如下,它体现了“用过去预测未来”的基本思想:
import numpy as np
def make_windows(series, lookback=60, horizon=5):
X, y = [], []
for i in range(lookback, len(series) - horizon):
X.append(series[i - lookback:i])
y.append(series[i + horizon] / series[i] - 1) # 未来收益
return np.array(X), np.array(y)
# series 为按时间排序的收盘价序列
# X.shape = (样本数, 60),y.shape = (样本数,)
注意这里y使用的是i+horizon时刻的价格,与i时刻的特征严格错开,避免泄漏。这个简单函数会在后续章节被扩展为多特征、多资产的张量形式。
六、本章复盘
本章建立了课程的全局框架:以“数据→特征→模型→训练→回测”为主线,以无泄漏和样本外验证为底线,以IC和分层收益为核心评估指标。请记住三个关键词:时序因果、弱信号、风险优先。接下来的章节将逐层展开,从数据获取与特征构造开始,一步步带你搭建属于自己的Transformer交易信号系统。