原创

机器学习股票信号与回测:从基线模型到样本外验证

用点时数据、滚动训练、横截面排序和成本模型构建股票机器学习研究流程,重点排查未来数据泄漏、幸存者偏差、回测过拟合与不可交易收益,并通过基线和影子运行验证增量价值。

AI 金融应用 AI 股票 机器学习 量化回测 时间序列
AI × 股票研究专题 · 第 4/6 篇查看专题目录 →

机器学习做股票研究的第一目标,不应是训练最复杂的模型,而是证明数据、切分和回测没有偷看未来。一个线性基线配合可信数据,通常比泄漏的深度模型更有价值。

一、把问题定义成可验证任务

常见任务有三类:预测未来波动率、预测风险事件概率、对同一时点的股票做相对排序。直接预测精确价格容易受尺度和市场状态影响。实践中可先做横截面排序,例如预测未来 20 个交易日相对行业基准的收益分位。

标签必须写明形成期、持有期和可交易时点。若使用收盘后才完整的数据生成信号,最早只能在下一可交易时点执行。文本特征还应继承新闻事件流水线中的首次可得时间,而不能使用文章最终修订时间。

二、建立点时数据集

publishedAt 与 periodEnd 不是一回事。季度数据描述过去的报告期,但只有披露后市场才知道。特征表需保存 effectiveAt,按研究时点进行 as-of join。

还要处理:退市股票、历史指数成分、更名与代码变化、复权方式、停牌、涨跌停、公司行动和更正数据。只用今天仍上市的股票回看历史会产生幸存者偏差。

三、从简单基线开始

先使用行业中性后的单因子、线性/逻辑回归或树模型。输入可包括估值、盈利质量、动量、波动率、流动性和前文构建的事件特征。所有标准化、缺失填充和特征选择只能在训练窗口拟合。

训练窗口 1 ──> 验证窗口 1 ──> 测试窗口 1
        训练窗口 2 ──> 验证窗口 2 ──> 测试窗口 2

滚动或扩展窗口比随机打乱更符合时间顺序。相邻样本的持有期重叠时,还要避免训练标签与验证区间共享未来信息。

四、把预测变成组合前先做诊断

分类准确率不够。排序任务可观察 Rank IC、分组单调性、行业与规模暴露、换手率、不同市场状态下的稳定性。预测波动率则应关注校准和尾部误差。

每次实验记录数据快照、特征版本、代码提交、随机种子、超参数搜索空间和被尝试过的模型数量。大量尝试后只展示最好结果,会放大回测过拟合。相关研究发现,样本内表现良好的策略在样本外可能缺乏稳健性,因此应保留未参与选择的最终测试期。

五、构建现实成本模型

净收益至少扣除佣金、税费、买卖价差和滑点。高级一些还要模拟成交量参与率、冲击成本、停牌、价格限制和无法按理论价格成交的情况。

可实现净收益 = 毛收益 - 显性费用 - 买卖价差 - 滑点 - 市场冲击

成本随交易规模、流动性和市场状态变化,不应只填一个永久常数。换手越高,模型对成本假设越敏感。

六、与真正可用的基准比较

至少比较等权、市场或行业基准、简单动量/价值信号和上一版本模型。报告年化收益之外,还应包括波动率、最大回撤、换手、持仓集中度、容量假设、最差时期和样本外区间。

如果复杂模型没有稳定超过简单基线,结论应是“未证明有增量价值”。这是有效研究结果,不需要用更多参数把回测修到好看。

七、从回测进入仿真

通过样本外测试后,先冻结模型进入纸面交易或影子模式。系统实时生成信号和目标仓位,但不发真实订单;对比理论价、可成交价、实际延迟和数据缺失。至少跨越不同波动环境后,再讨论有限额度试运行。

建立实验停止规则

在开始前写明最多尝试多少组特征、模型和参数,以及最终测试集何时只允许打开一次。如果最终结果失败,不要继续围绕同一测试期调参;应记录失败原因,等待新的独立数据。每次实验还要保存删除特征、提高成本和缩短样本后的敏感性结果,判断收益是否依赖某个脆弱假设。

团队评审时应展示全部实验分布,而不只展示冠军模型。若十次尝试中只有一次略好于基线,优先把它视为需要更多证据的候选。若不同起止日期、股票池或成本假设下方向反复变化,也不适合进入仿真。

下一步可阅读组合优化与风险控制,把模型分数转成受约束的目标权重,而不是按分数直接满仓排序。也可回到AI 股票应用路线图,检查数据、研究和治理层是否完整。

实测与内容说明

实测记录

  • 示例是研究框架,不含可直接交易的参数、股票池或收益结果。
  • 所有标签与特征都必须按真实可得时间对齐,并使用当时存在的证券集合。
  • 回测指标必须与换手、手续费、滑点、容量和基准同时报告。

参考资料

内容版本 1.0 · 审核:站点编辑 · 计划复审:2026-12-17