好的,我把从项目启动到现在的全部版本迭代、核心发现和关键转折点,按时间线梳理清楚。 --- # 网格交易选股模型 — 全版本历史总结 ## 第一阶段:原型搭建(v1.0 ~ v3.6) ### v1.0:从零开始 **核心目标**:验证“用机器学习预测网格匹配次数”是否可行。 **做了什么**: - 用 180 天沪深主板个股历史数据,按 [1,2,...,11] 元网格模拟交易 - 计算每只股票在历史区间内的网格成交次数作为标签 - 用随机森林(RandomForestRegressor)训练,预测“未来 60 天匹配次数” - 在 278 只股票上做了初步验证 **关键发现**:机器学习预测网格匹配次数是可行的。但 278 只股票的样本量太小,模型泛化能力有限。 --- ### v2.0 ~ v2.1.1:扩大规模 + 引入市值因子 **核心目标**:从 278 只扩展到全市场 1404 只,验证策略在全市场是否成立。 **做了什么**: - 扩展到全市场股票(5~15 元区间),训练样本约 30,000 条 - 引入 3 个市值因子(流通市值对数、市值波动交互、小市值溢价) - 在模型协同上做了第一次尝试:把 Rank 模型的预测值作为 Top 模型的输入特征 **关键发现**: - 市值因子有效——小市值股票确实更有弹性,触发网格的概率更高 - “让 Top 站在 Rank 肩膀上”这个协同思路第一次被验证 --- ### v3.0 ~ v3.6:特征消融与精简 **核心目标**:从 36 个特征逐步消融,找到最精简有效的特征集。 **做了什么**: - 每轮消融删除重要性最低的几个特征,看 Spearman 是否下降 - 引入负向指标(流动性枯竭、价格呆滞等),让模型学会“识别不适合网格的标的” - 最终精简到 34 维基础特征,Spearman 稳定在 0.53 附近 **关键发现**: - 特征不是越多越好。34 维中最后 6 个重要性极低的特征被删除后,Spearman 反而微升 - 负向指标中只有“流动性枯竭”被模型充分吸收,其他几个效果有限 --- ## 第二阶段:架构升级(v4.0 ~ v5.4) ### v4.0 ~ v4.1:三模型协同架构确立 **核心目标**:从单模型升级为 Rank → Top → Stacking 三层协同。 **做了什么**: - **Rank(回归)**:全市场排序,预测匹配次数 - **Top(分类)**:识别头部 5% 的特等契合标的 - **Stacking(融合)**:综合 Rank 和 Top 的输出,产出最终评分 - Top 模型的训练标签从“全市场 P95”改为“同 period 内 P95”,更公平 **关键发现**: - 三层协同比单模型显著提升——Top 模型 PR-AUC 0.34,命中率 100% - Stacking 层能有效融合两个上游信号 --- ### v5.0 ~ v5.3:情绪因子探索 **核心目标**:引入恐慌/贪婪情绪因子,让模型感知市场环境。 **做了什么**: - 构造恐慌期弹性因子(恐慌日振幅放大比、反弹强度) - 构造贪婪期独立因子(贪婪日相对涨幅、振幅比) - 多次调整阈值(从极端阈值放宽到温和阈值) **关键发现**: - 情绪因子对 Rank 有正向贡献(Spearman 从 0.50 提到 0.53) - 但对 Top 模型始终没有产生增益——Top 做的是头部精选,情绪信号在头部样本上的区分度不够 - **教训**:情绪因子更适合做负向过滤(识别“该淘汰的”),不适合做正向精选(识别“该买的”) --- ### v5.4-E:模型协同的突破 **核心目标**:让 Top 模型真正受益于 Rank 的排序信号。 **做了什么**: - 把 Rank 模型的预测值(`rank_predicted_rounds`)作为 Top 模型的第 35 维输入特征 - 分层标签 + 头部权重训练 Top 模型 **关键发现**: - 这是 v5.x 系列最重要的突破——Top PR-AUC 从 0.30 提升到 0.33 - “让 Top 站在 Rank 肩膀上”被反复验证有效 --- ## 第三阶段:交易系统化(v6.0 ~ v6.3) ### v6.0 ~ v6.1:Stacking 融合 + 知识蒸馏 **核心目标**:用一个模型统一 Rank 和 Top 的能力。 **做了什么**: - 尝试用 MLP 多任务学习同时做回归和分类(v6.0,失败) - 尝试用知识蒸馏让 MLP 学习 Teacher 模型(v6.1,效果不如 LightGBM) **关键发现**: - **MLP 在表格数据上不如 LightGBM**——这是被反复验证的教训 - 之后不再尝试深度学习替代树模型 --- ### v6.2 ~ v6.3:全系统收敛 **核心目标**:把最优特征集、最优模型架构、最优参数固化。 **做了什么**: - 修复 total_share 数据源(4 个特征之前因为数据缺失被填 0,修复后恢复正常) - 回测收益 148%,夏普 1.74,最大回撤 -19.78% - v6.3 被确立为生产基线 **关键发现**: - v6.3 的生产基线是在“旧规则训练数据(9.0-9.8)+ 三模型协同”这个体系下被验证稳定的 --- ## 第四阶段:风控与仓位管理(v6.4 ~ v6.5) ### v6.4:Meta Ranker 的诞生 **核心目标**:用利润预测替代价格一刀切规则。 **做了什么**: - 在 Stacking 之上新增 Meta Ranker:输入价格 + Stacking 评分 + Rank 预测轮数,输出预测利润 - 跑 720 种参数组合的规则探索,找到最优配置 - 训练样本 1288 条,Spearman 0.77 **关键发现**: - **Meta Ranker 是这个阶段最重要的突破**——收益从 148% 提升到 152%,回撤从 -19.78% 降到 -10.10%,夏普从 1.74 提到 2.16 - Meta Ranker 需要约 1000 条以上训练样本才能稳定 - 它的成功高度依赖上游模型评分分布与策略边界的匹配 --- ### v6.5:叶子 Embedding 增强(进行中) **核心目标**:用树模型的叶子节点编码作为 Embedding 特征,增强上游模型。 **做了什么**: - 从 v6.3 Rank 模型的 500 棵树中提取叶子编号 - 构造 20 组叶子编码特征(基于目标编码的交互特征) - 加入训练数据后,Rank Spearman 从 0.54 飙升到 0.74 **关键发现**: - 叶子 Embedding 是最有效的特征增强方式——三列新特征包揽重要性前 3 名 - 但 Meta Ranker 训练样本在 v6.5 的模型体系下反复不足,流程多次阻塞 --- ## 第五阶段:收益导向重构(v7.0 探索中) ### v7.0 的规划(尚未完成) **核心目标**:把整条链路的训练目标从“匹配轮数(y_rounds)”改为“总回报(total_return_60d)”。 **为什么要改**: - 当前体系前三层(Rank/Top/Stacking)都在预测“匹配轮数”,只有最后一层 Meta Ranker 预测“利润” - 这导致前后层目标错位——上游选的是“最活跃的”,但实盘需要的是“最赚钱的” **怎么做**: - 从零重建训练样本,标签改为 `total_return_60d`(已实现利润 + 期末持仓市值) - 全链路用新标签重训,让 Rank/Top/Stacking 都直接学习收益规律 - 同时引入规模中性化特征(纠正大盘股成交额偏差)和三指数独立震荡特征(沪深300/中证500/中证1000) **当前状态**: - 训练样本生成完成(约 4.9 万条,正回报占比约 11.6%) - 从零重建的数据源因 K 线时间范围(2020 年起)和股票覆盖(仅 600 开头)不足,无法复现 v6.3 的 1,799 只过滤后股票数 - **当前卡点**:数据源覆盖问题,需要 2018 年起、全市场(含深市和创业板)的 K 线数据 --- ## 全版本关键教训 | 教训 | 来源版本 | 说明 | |:---|:---|:---| | **情绪因子适合负向过滤,不适合正向精选** | v5.x | 对 Rank 有效,对 Top 无效 | | **MLP 在表格数据上不如 LightGBM** | v6.0-v6.1 | 深度学习不是万能药 | | **叶子 Embedding 是最强特征增强** | v6.5 | 非线性的树结构编码,比 PCA 强 10 倍 | | **Meta Ranker 是体系最关键一环** | v6.4 | 用利润预测替代价格一刀切,夏普提升 24% | | **训练数据必须与策略边界匹配** | v7.0 | 上游模型评分分布偏移会导致可买标的枯竭 | | **从零重建比复用旧样本更难** | v7.0 | 数据源时间范围和股票覆盖是关键约束 | | **规则探索需要专门为每个模型体系做一次** | v6.4/v6.5 | 同一参数在不同模型上效果截然不同 | --- ## 当前最优体系(v6.4 生产基线) | 组件 | 版本 | 核心指标 | |:---|:---|:---| | Rank | v6.3 原始 | Spearman 0.5355 | | Top | v6.3 原始 | PR-AUC 0.3389 | | Stacking | v6.3 原始 | Spearman 0.6932 | | Meta Ranker | v2(1288 条训练) | Spearman 0.7663 | | **整体回测** | — | **收益 152.15%,回撤 -10.10%,夏普 2.16** | --- ## 下一步方向 | 优先级 | 方向 | 预期收益 | 风险 | | :---- | :-------------------------------------------- | :--- | :-- | | **1** | v6.7:叶子 Embedding 增强 v6.4 上游 + 复用 Meta Ranker | 低 | 低 | | **2** | v7.0:收益导向全链路重训(需先解决数据源问题) | 高 | 高 | | **3** | 市场风格 Embedding(大小盘/牛熊切换) | 中 | 中 |