# LightGBM 因子扩充优化诊断报告

## 一句话结论

因子扩充后变差的主因不是“新因子普遍无效”，而是**入选数量过多、同类信息拥挤，以及模型的全截面目标与Top端持仓不完全一致**。将每折因子数从65—71个压缩到20—26个、把相关性阈值从0.95收紧到0.88、按类别限额并只在验证集选择目标与组合参数后，历史诊断年化收益由8.98%提高到 **24.97%**，最大回撤由-36.76%改善到 **-22.52%**。

但2022—2026区间已经被多次查看，因此这组改善只能称为**历史优化诊断**，不能称为全新的样本外证明。最终有效性必须由2026-08以后数据或仿真实盘确认。

## 优化版怎么做

- 数据：仅使用Team Project，不使用TLSJ。
- 83个因子仍保留为候选库，不全部输入模型。
- 每折只在训练集和验证集上筛选，测试集不参与任何选择。
- 因子数量候选：20、25、30、35个；实际每折选择20—26个。
- 相关性阈值：由0.95收紧到0.88。
- 类别上限：趋势10、K线6、风险6、流动性6、交互4、市场状态3。
- 目标候选：市场中性、流通市值中性、行业+流通市值中性。
- Top端样本权重候选：不加权或对最高20%样本加权。
- 组合候选：Top 50、Top 100、Top 200；持仓缓冲排名为目标持仓数的1.5倍。
- 行业上限候选：不限制、15%、10%；只约束有历史行业数据的股票。
- 成本：买入、卖出各万分之一。
- 基准：沪深300价格指数 `000300`。

自由流通股本按公告日期向后匹配，覆盖率接近100%；申万一级行业按纳入日和剔除日匹配，测试期覆盖约83.3%—86.6%。未匹配股票保留为 `UNKNOWN`，不使用未来行业填补历史。

## 每折只用验证集做出的选择

| 折 | 训练集 | 验证集 | 测试 / 历史OOS | 因子数 | 目标 | Top N | 已知行业上限 |
|---:|---|---|---|---:|---|---:|---:|
| 0 | 2016-05-04至2021-03-31 | 2021-05-11至2022-03-28 | 2022-05-09至2023-04-28 | 24 | 流通市值中性 | 200 | 10% |
| 1 | 2017-05-08至2022-03-28 | 2022-05-09至2023-03-30 | 2023-05-10至2024-04-26 | 25 | 市场中性 | 50 | 15% |
| 2 | 2018-05-09至2023-03-30 | 2023-05-10至2024-04-03 | 2024-05-08至2025-04-24 | 26 | 市场中性 | 50 | 10% |
| 3 | 2019-05-06至2024-04-03 | 2024-05-08至2025-04-02 | 2025-05-06至2026-04-29 | 20 | 市场中性 | 200 | 15% |
| 4 | 2020-05-07至2025-04-02 | 2025-05-06至2026-03-31 | 2026-05-11至2026-07-07 | 20 | 市场中性 | 50 | 不限制 |

五折均选择“不对Top端训练样本额外加权”，说明本轮提升不是由人为强化Top端标签带来的。目标也有四折选择普通市场中性，仅第一折选择流通市值中性；行业+市值中性没有成为验证集最优目标。

## 总体历史诊断结果

| 指标 | V2：83因子宽筛选 | V3：验证集优化 | 变化 |
|---|---:|---:|---:|
| Rank IC | 0.1170 | 0.1193 | +0.0023 |
| ICIR | 0.6564 | 0.7444 | +0.0880 |
| 年化收益 | 8.98% | 24.97% | +15.99个百分点 |
| 年化相对沪深300 | 2.99% | 18.10% | +15.11个百分点 |
| 夏普比率 | 0.438 | 0.866 | +0.428 |
| 最大回撤 | -36.76% | -22.52% | 改善14.24个百分点 |
| 平均换手率 | 62.78% | 63.47% | +0.69个百分点 |

V3最终净值为2.455，沪深300同期净值为1.256，最终相对财富为1.955。预测共964,206条，股票—日期键无重复；203个调仓期基准完整，逐期成本复核正确。

## 年度表现

| 年份 | V3净收益 | 沪深300 | 相对收益 |
|---|---:|---:|---:|
| 2022（5月起） | +10.55% | +3.90% | +6.40% |
| 2023 | +1.11% | -14.86% | +18.76% |
| 2024 | +39.83% | +11.88% | +24.98% |
| 2025 | +66.97% | +24.81% | +33.78% |
| 2026（截至7月） | -5.95% | +1.67% | -7.49% |

2026年由V2的-13.18%改善到-5.95%，但仍跑输沪深300，说明因子精简降低了伤害，却没有消除小中盘、交易活跃度或市场分化风险。最新第4折只有9次调仓，不能独立作为完整年度结论。

## 改善主要来自哪里

固定使用同一批V3预测后：

| 组合 | 年化收益 | 年化相对收益 | 最大回撤 | 平均换手 |
|---|---:|---:|---:|---:|
| V2宽筛选 Top 50 | 8.98% | 2.99% | -36.76% | 62.78% |
| V3精简模型 Top 50 | 23.23% | 16.45% | -21.91% | 76.33% |
| V3精简模型 Top 100 | 22.85% | 16.09% | -20.17% | 70.98% |
| V3精简模型 Top 200 | 25.86% | 18.94% | -18.62% | 65.10% |
| V3验证集动态组合 | 24.97% | 18.10% | -22.52% | 63.47% |

即使固定为Top 50，不使用动态Top N和持仓缓冲，V3年化仍达到23.23%。这说明大部分改善来自**因子压缩、类别限额和更严格去重**，不是由动态组合参数制造的。

Top 200在这段历史上表现最好，但这是看过历史结果后的诊断，不能直接把它改成正式策略参数。持仓缓冲可以降低换手，例如Top 200换手由65.10%降到55.88%，但年化也由25.86%降到25.10%。

## 逐类消融：哪些新因子值得保留

消融实验统一使用Top 100、相同成本、相同模型参数，只改变17因子基准额外加入的类别。

| 版本 | 年化收益 | 相对基准增量 | 最大回撤 | 判断 |
|---|---:|---:|---:|---|
| 17因子统一基准 | 19.01% | — | -20.98% | 对照组 |
| 加K线结构 | 25.15% | +5.80个百分点 | -26.33% | 收益提升最大，但主要集中于2024，回撤恶化 |
| 加市场状态 | 21.05% | +1.92个百分点 | -18.84% | 收益和回撤同时改善，适合少量保留 |
| 加流动性 | 20.96% | +1.84个百分点 | -20.00% | 夏普改善最大，适合保留 |
| 加量价交互 | 19.77% | +0.72个百分点 | -24.93% | 增益较弱，需严格限额 |
| 加风险 | 17.85% | -1.10个百分点 | -22.84% | 信息重复并拖累收益 |
| 加趋势 | 16.77% | -2.12个百分点 | -28.15% | IC提高但Top端收益和回撤变差 |

这里出现了最关键的机制：新增趋势类把Rank IC从0.1175提高到0.1231，但年化收益反而下降2.24个百分点，最大回撤恶化7.17个百分点。这证明**全截面排序更准确，不等于最高分股票组合更赚钱**。大量趋势、波动和风险变量进入模型后，会改善中间股票的排序，却可能挤压Top端信号或放大特定风格暴露。

K线结构类的收益提升高度集中在2024年，不能据此断定长期稳定；下一轮应重点验证其中 `intraday_return_20`、`range_5/20`、`limit_up_hit_rate_20` 等跨折稳定特征，而不是整个类别无上限加入。

## 为什么83因子版会变差

1. **65—71个入选因子远超有效信息维度。** LightGBM可以处理相关变量，但并不会自动消除非线性冗余；同类变量会争夺分裂、改变Top端排序。
2. **0.95只排除了近乎复制的变量。** 许多趋势、波动、换手特征的线性相关不到0.95，却表达相似市场状态。
3. **市场状态变量不应与个股因子同等无限扩张。** V3将市场状态限制为最多3个，实际每折只保留1—3个，避免状态切换时过度依赖。
4. **模型目标与组合目标错位。** 训练损失覆盖全部股票，而收益来自Top 50/100/200。趋势消融结果证明Rank IC提升可能与Top端收益背离。
5. **没有风险暴露约束时，因子可能把小中盘、高活跃度和行业偏离当成Alpha。** V3组合平均流通市值分位约52.2%，已知行业最大权重平均约11.5%，但未知行业平均仍有17.3%。

## 仍需谨慎的地方

1. 2022—2026区间已经用于多轮模型比较，统计意义上不再是全新样本外。
2. 动态Top N在不同折选择50或200，存在参数不稳定；固定Top 100/200应在新留出期比较。
3. 申万历史行业覆盖在早期训练期较低，第一折训练覆盖仅28.8%，行业结果主要对近年更可信。
4. 行业未知组没有受到10%或15%上限约束，仍可能隐藏行业暴露。
5. 2024—2025贡献较大，收益仍不是均匀分布；2026仍为负收益。
6. 消融实验使用统一模型参数重新训练，因此与旧版17因子正式结果不是一模一样；它用于比较类别增量，而不是复刻旧版净值。

## 推荐的下一版固定规范

在没有新数据前，不继续用2022—2026反复挑参数。建议冻结以下研究规范：

1. 候选库保留83个，但每折最终因子数限制20—30个。
2. 相关性阈值固定0.88；类别上限继续使用10/6/6/6/4/3。
3. 新增趋势和风险类只保留跨五折稳定且在类别消融中有独立增益的少数特征。
4. 市场状态最多3个；K线结构最多6个，并增加跨年度稳定性检查。
5. Top N暂不依据当前历史固定成200；先保留Top 100为中间方案，Top 50和200作为并行影子组合。
6. 行业控制只对已知行业实施，同时继续改善历史行业覆盖；市值使用公告日可得的自由流通市值。
7. 2026-08以后作为真正的新留出期，至少积累6—12个月或50次调仓后再决定是否替换V2。

## 输出文件

- `metrics.json`、`backtest.csv`、`annual_returns.csv`：优化版历史诊断结果。
- `fold_choices.csv`：每折只用验证集决定的参数。
- `validation_tuning.csv`：全部验证集候选记录。
- `factor_selection_by_fold.csv`、`selected_category_counts.csv`：精简后的逐折因子。
- `portfolio_attribution.csv`：固定Top N与动态组合归因。
- `category_ablation.csv`、`category_ablation_by_year.csv`：逐类别消融。
- `exposure_coverage.csv`：行业、市值历史覆盖率。
- `run_config.toml`：本次优化运行配置。

当前结论是：优化方向有效，最重要的改动是严格压缩因子和限制同类变量；但V3应先作为候选模型运行影子组合，等新的未见数据验证后再升级为正式策略。
