Files
obsidian_vault/FleetingNotes/GridSeeker/版本进程.md
T

207 lines
8.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
好的,我把从项目启动到现在的全部版本迭代、核心发现和关键转折点,按时间线梳理清楚。
---
# 网格交易选股模型 — 全版本历史总结
## 第一阶段:原型搭建(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.1Stacking 融合 + 知识蒸馏
**核心目标**:用一个模型统一 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.4Meta 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 | v21288 条训练) | Spearman 0.7663 |
| **整体回测** | — | **收益 152.15%,回撤 -10.10%,夏普 2.16** |
---
## 下一步方向
| 优先级 | 方向 | 预期收益 | 风险 |
| :---- | :-------------------------------------------- | :--- | :-- |
| **1** | v6.7:叶子 Embedding 增强 v6.4 上游 + 复用 Meta Ranker | 低 | 低 |
| **2** | v7.0:收益导向全链路重训(需先解决数据源问题) | 高 | 高 |
| **3** | 市场风格 Embedding(大小盘/牛熊切换) | 中 | 中 |