帮助
本页为每日预测功能的使用说明。
项目简介
本项目通过 GitHub Actions 实现每日自动化 CI 流程:每晚 10 点触发,自动从 chenditc/investment_data 拉取最新 A 股数据,完成模型训练与选股预测。
训练流程
- 数据获取:自动拉取最新 A 股行情数据
- 模型训练:采用仅需 CPU 的模型(XGBoost、LightGBM、DoubleEnsemble、Linear),分别用过去 1~5 年历史数据训练,共得到 20 个模型
- 模型筛选:按 IC、ICIR、Rank IC、Rank ICIR 等指标筛选表现较好的模型
- 预测输出:多模型同时预测,取平均分数作为最终结果
分数含义
预测分数(score):基于 T 日收盘数据,预测「T+1 日收盘买入、T+2 日收盘卖出」的期望收益率。
注:该收益率为理论值,未考虑 A 股 10% 涨跌停板限制。
score 与 label 为同一概念:预测值为 score,真实收益率为 label。
数据表格说明
查看建议:按文件名中的日期优先查看最新表格,推荐先看 xxx_ret 汇总表。
表格列说明
| 列名 | 含义 |
|---|---|
| instrument | 股票代码 |
| avg_score | 多模型预测的平均分数,即期望收益率 |
| pos_ratio | 预测为正收益的模型占比。如 1 表示全部预测正收益,0.875 表示 8 个模型中有 7 个预测正收益 |
| real_label | 真实收益率。预测未来时为 nan;若为历史日期,可得到真实值用于回测对比 |
| datetime | 预测日期。如 2026-02-11 表示:基于 02-11 收盘数据预测,02-12 收盘买入、02-13 收盘卖出的期望收益率 |
文件类型
| 文件 | 说明 |
|---|---|
| total.csv | 模型预测原始数据,含各模型 score |
| xxx_ret | 多模型平均后的汇总结果 |
| xxx_filter_ret | 经规则过滤后的汇总结果 |
filter 的简单规则(稳健性过滤):
- 波动率(STD):STD5、STD20、STD60 均 < 0.10,且 STD60 < 0.05、STD5 < 0.06;短期波动 STD5 不超过长期 STD60 的 2 倍
- 动量(ROC):ROC10、ROC20、ROC60 均 > 0.80,且 ROC20 < 1.30,剔除波动过大或动量过猛的标的
常见问题
Q:为什么表格里有时没有股票中文名称?
A:股票名称来自外部数据接口(如沪深交易所、东方财富等)。GitHub Actions 运行在海外服务器上,访问国内数据源时易出现超时、限流或返回异常,导致名称拉取失败。此时表格仍会保留股票代码,不影响预测分数等核心数据的查看。
Q:为什么每次参与预测的模型数量不同?
A:系统会对模型按 IC、ICIR 等指标进行筛选,过滤条件较严格。新训练的模型若整体表现不佳,可能全部被过滤,导致当日无模型参与预测。若发现此类情况,我会及时调整过滤阈值,确保至少有一个模型可用。
Q:为什么有时一天预测了两次?
A:调试或验证时会手动触发 GitHub Action,执行完成后会按流程自动同步到页面,因此可能出现同一天多次更新的情况。