1. 项目定位
本项目选择“机器学习与 A 股横截面收益预测”,并参考 FT-Transformer 的论文复现要求。考虑到项目周期有限,采用“一个论文复现、一个明确改进、一套完整实证”的最小可行方案。
项目题目为:市场状态自适应 FT-Transformer:A 股横截面收益预测研究。
项目包含两条同步推进、接口解耦的工作流:
- 模型研究负责数据、特征、训练和预测文件;
- Wangwen 负责 IC、Rank IC、分组收益、指标汇总和图表;
- 两边通过
datetime / code / value标准预测文件连接。
2. 研究问题与假设
本项目集中回答两个问题:
- FT-Transformer 学习因子间非线性交互后,能否提高 A 股未来收益的样本外排序能力?
- 根据市场状态动态调整因子表示,是否比直接拼接市场变量更有效?
研究假设:
- H1: FT-Transformer 的样本外 Rank IC 优于普通 MLP,且至少不弱于 LightGBM;
- H2: 市场状态自适应 FT-Transformer 优于原始 FT-Transformer;
- H3: 自适应机制的增量主要出现在市场状态切换或高波动阶段。
如果实验不支持假设,也应如实报告。目标是完成可信比较,不是预设 Transformer 一定胜出。
3. 数据与时间范围
优先选择数据质量较好、计算规模可控的 A 股股票池。必须使用历史时点可得的股票名单,避免仅使用当前成分股造成幸存者偏差。
时间切分:
| 数据集 | 时间范围 | 用途 |
|---|---|---|
| 训练集 | 数据起始日至 2021 年末 | 拟合模型 |
| 验证集 | 2022 - 2023 年 | 选择超参数和停止轮次 |
| 测试集 | 2024 - 2025 年 | 最终样本外评价 |
任何模型和超参数选择不得使用测试集结果。
输入特征
第一版只使用日频 K 线及成交数据衍生特征,最终控制在约 15 - 30 个:
- 1、5、10、20 日收益率;
- 5、10、20 日波动率;
- 成交量、成交额及其变化率;
- 换手率与日内振幅;
- 收盘价相对 5、10、20 日均线的位置;
- 量价相关性或价量背离指标。
市场状态变量只保留少量可解释字段:指数近 5/20 日收益、指数近 20 日波动率、全市场成交额或换手率、上涨股票数量占比。
预测标签
标签采用下一交易日收盘至再下一交易日收盘的收益:
$$ y_{i,t}=\frac{Close_{i,t+2}}{Close_{i,t+1}}-1 $$
训练标签可以进行横截面去极值或标准化,但回测必须保留原始收益。
4. 数据规范
- 训练、验证和测试必须按时间顺序划分;
- 滚动特征不得包含未来数据;
- 标准化参数只能来自当日横截面或训练样本;
- 明确处理停牌、涨跌停、ST、新股和缺失数据;
- 使用历史股票池,避免幸存者偏差;
- 回测信号与实际交易之间至少错开一个可交易时点;
- 保存实验配置、随机种子和结果,不只挑最好结果。
5. 模型设计
基准模型
至少完成 MLP 或 LightGBM。时间允许时同时报告二者,用于判断复杂模型是否提供真实增量。
原始 FT-Transformer
FT-Transformer 将每个结构化特征映射为独立 token:
$$ T_{i,j}=b_j+x_{i,j}W_j $$
模型在因子轴上使用自注意力学习因子交互,并使用 [CLS] token 的最终表示预测股票收益。
个股因子向量
-> Feature Tokenizer
-> [CLS] + 因子 Tokens
-> Transformer Encoder
-> 收益预测
只复现与数值特征相关的核心模块,不复现原论文全部公开数据集和超参数搜索。
市场状态自适应 FT-Transformer
项目唯一的结构创新是让市场状态动态调节 FT-Transformer 内部的归一化参数:
$$ \gamma_t,\beta_t=\mathrm{MLP}(m_t) $$
$$ H’_t=\gamma_t\odot\mathrm{LayerNorm}(H_t)+\beta_t $$
为判断提升是否只是来自新增市场信息,必须加入“FT-Transformer + 市场变量直接拼接”的对照模型。
第一版统一使用 Huber Loss。排序损失、换手率损失和端到端组合优化本期不做。
6. 必做实验
| 编号 | 模型 | 实验目的 |
|---|---|---|
| B1 | MLP 或 LightGBM | 建立传统基线 |
| B2 | 原始 FT-Transformer | 完成论文核心模块复现 |
| B3 | FT + 市场变量直接拼接 | 判断增加市场信息本身是否有效 |
| B4 | 市场状态自适应 FT | 检验条件化机制的增量价值 |
所有模型必须使用相同数据切分、特征处理和测试区间,不进行大规模超参数搜索。
7. 评价指标
预测指标:每日 IC、每日 Rank IC、ICIR 和指标时间序列稳定性。
投资指标:五分组或十分组收益、Top 组累计收益、多空收益、年化收益和 Sharpe。换手率与交易成本是 P2,不阻塞主要结论。
必须展示:四模型统一对比表、分组单调性、累计收益、不同市场状态下的 Rank IC,以及直接拼接和自适应机制的消融比较。
8. Wangwen 接入
Wangwen 因子回测工具已完成开发,当前项目固定基线为 v1.0.0(commit 5e780f4)。该版本已支持日频与分钟频回测、Universe 规则、IC/Rank IC、分组与多空收益、风险收益指标、Rich 摘要和图表输出;当前本地回归测试为 42 passed。
工具开发完成不等于本项目回测已经完成。模型数据就绪后,仍需先用小样本验证预测、收益与 benchmark 在日期、股票池和缺失值处理上的一致性,再生成正式结果。每轮正式实验继续记录 Wangwen commit SHA、模型 commit、数据版本、配置和随机种子。
模型预测输出:
| 字段 | 含义 |
|---|---|
datetime | 模型形成信号的交易日 t |
code | 股票代码 |
value | 预测分数或预测收益 |
Wangwen 1.0.0 的默认 close 快捷回测计算的是 t 收盘至 t+1 收盘收益,与本项目标签不完全一致。正式评估需单独计算 t+1 收盘至 t+2 收盘收益并对齐到信号日 t,再将预测和收益分别包装为 Factor.from_df(),通过 BacktestEngine 直接注入自定义收益与 benchmark。
Wangwen 后续工作从“工具开发”转为“项目接入”:核对聚源字段与复权口径、完成小样本端到端验证、固定正式实验版本并导出指标和图片。换手率、交易成本与更完整的真实数据库集成测试属于可选增强,不阻塞本期核心结论。
9. 执行优先级
P0:必须完成
- 确认数据字段、股票池和时间范围;
- 完成特征、标签和时间切分;
- 跑通基准模型与原始 FT-Transformer;
- 将预测结果接入固定版本 Wangwen;
- 计算 IC、Rank IC 和分组收益;
- 形成可讲述的初步结论。
P1:核心创新
- 完成市场变量直接拼接模型;
- 实现市场状态自适应 LayerNorm;
- 完成四模型统一对比;
- 分析不同市场状态下的表现。
P2:时间允许再做
- 完整交易成本与换手率;
- 多随机种子实验;
- 注意力或因子权重可视化;
- 更多股票池与稳健性检验。
10. 本期不做
股票轴 Transformer、时间 Transformer、图神经网络、Mixture of Experts、排序损失、端到端组合优化、财务公告日对齐、大规模超参数搜索和复杂 SHAP 风险归因均不进入当前范围。
11. Pre 结构
建议控制在 10 - 12 页、15 - 20 分钟:研究背景、问题与假设、FT-Transformer 原理、金融场景局限、市场状态自适应机制、数据与标签、实验设计、预测结果、分组回测、结论与未来工作、Q&A。
12. 验收标准
- 数据、特征和标签没有明显未来信息泄漏;
- 至少跑通一个基线、原始 FT 和改进模型;
- 测试集严格使用 2024 - 2025 年;
- 至少报告 IC、Rank IC 和分组收益;
- 信号日与 t+1 至 t+2 收益严格对齐;
- 有直接拼接与市场状态自适应的消融对照;
- 计划书、实验台账、结果图表和 Pre 均有可核验版本;
- 最终 Pre 能在规定时间内完成。