下载原始研究文稿 ↓

LightGBM 83个候选因子新版回测报告

一句话结论

新版已经按要求完成全量重跑,但暂不建议替代旧版17因子模型。在完全相同的股票池、滚动窗口、Top 50组合和沪深300基准下,新版样本外年化净收益为 8.98%、年化相对收益为 2.99%,均低于旧版的10.40%和4.33%;最大回撤由旧版的-26.70%扩大到 -36.76%

更关键的是,旧版毛收益年化为16.23%,新版只有9.67%。旧版历史结果使用15个基点的换手成本,新版使用买入、卖出各1个基点,因此净收益并非严格同成本口径;但毛收益不受成本口径影响,仍显示扩充因子后的组合选择能力下降。结论不是“新因子都没用”,而是“当前一次保留65至71个因子的方案过宽,需要更严格选因子和风险约束”。

数据、模型与交易口径

• 数据源:仅使用本地 Team Project 数据库,不使用 TLSJ。

• 候选特征:83个,包括趋势与位置22个、K线与日内结构15个、波动与风险16个、成交与流动性15个、量价交互9个、市场状态6个。

• 标签:未来20个交易日收益的逐日横截面排名。

• 调仓:每5个交易日;模型分数最高的50只股票等权持有。

• 成交:信号后的下一交易日开盘;开盘涨停股票不可买入。

• 成本:买入万分之一、卖出万分之一,按实际买卖换手分别扣除。

• 基准:沪深300价格指数 000300,采用与策略相同的开盘到开盘口径。

• 模型:LightGBM;每一折只用训练集与验证集进行因子质量筛选和高相关去重,测试集不参与选因子。

• 隔离期:训练集、验证集和测试集之间各留出约20个交易日,降低20日标签跨界造成的信息泄漏。

训练集、验证集与样本外测试集

本报告中的“测试集”就是样本外集(OOS)。所有折合并后的样本外区间为 2022-05-09至2026-07-07,共203个调仓期、964,206条股票预测,股票—日期键无重复。

实际训练集实际验证集实际测试 / 样本外集入选因子OOS Rank IC相对沪深300
02016-05-04至2021-03-312021-05-11至2022-03-282022-05-09至2023-04-28650.1148+9.73%
12017-05-08至2022-03-282022-05-09至2023-03-302023-05-10至2024-04-26710.1641+12.29%
22018-05-09至2023-03-302023-05-10至2024-04-032024-05-08至2025-04-24670.1046+6.21%
32019-05-06至2024-04-032024-05-08至2025-04-022025-05-06至2026-04-29690.0908+8.21%
42020-05-07至2025-04-022025-05-06至2026-03-312026-05-11至2026-07-07680.0860-20.48%

第4折只有9个调仓期,不能单独作为完整年度结论,但它是需要继续监控的最新风险信号。

样本外总体表现

指标旧版17因子新版83候选因子新版减旧版
Rank IC0.11790.1170-0.0009
ICIR0.67200.6564-0.0157
净收益年化10.40%8.98%-1.42个百分点
毛收益年化16.23%9.67%-6.56个百分点
夏普比率0.5200.438-0.082
最大回撤-26.70%-36.76%恶化10.06个百分点
平均单次调仓换手68.16%62.78%降低5.38个百分点
年化相对沪深3004.33%2.99%-1.34个百分点

新版最终净值为1.414,沪深300同期净值为1.256,最终相对财富为1.126。策略整体仍有正超额,但收益风险比和回撤都没有达到替换旧版的要求。

年度表现与2026年问题

年份新版净收益旧版净收益沪深300新版相对收益
2022(5月起)+2.55%+1.79%+3.90%-1.30%
2023+1.74%-0.77%-14.86%+19.49%
2024+15.84%+11.82%+11.88%+3.54%
2025+34.76%+54.55%+24.81%+7.98%
2026(截至7月)-13.18%-14.65%+1.67%-14.61%

新版在2022、2023、2024和2026较旧版有所改善,但2025少赚约19.78个百分点,是总体年化下降的主要来源。2026年虽然比旧版少跌约1.46个百分点,但仍显著跑输沪深300。2026年的Rank IC降至约0.078,同时平均换手升至79.52%,说明最新阶段既有排序能力减弱,也有Top 50尾部选择不稳和高换手问题。

新因子实际有没有用

新因子不是先挖出一个固定公式再直接相信它,而是先计算83个候选特征,再在每个滚动折的训练集和验证集上检查覆盖率、IC方向和稳定性,最后才让LightGBM使用。这一流程确认了部分新特征确实有信息,但当前筛选过于宽松:五折分别留下65、71、67、69、68个因子。

按LightGBM平均增益占比,最重要的特征包括:

1. market_volatility_20:10.44%;

2. turnover_std_20:8.40%;

3. limit_down_hit_rate_20:8.37%;

4. turnover_5:8.06%;

5. market_dispersion_20:7.44%;

6. amount_log_5:5.69%;

7. market_momentum_20:5.69%;

8. limit_up_hit_rate_20:5.68%;

9. market_breadth_20:5.49%。

这些结果说明市场状态、交易活跃度和涨跌停行为被模型大量使用。但“重要度高”只表示模型经常用它分裂,不等于它能稳定增加样本外收益。大量同类变量同时入选,容易让模型在特定市场阶段形成过强的状态依赖。

为什么扩充因子后反而变差

1. 入选因子过多。 每折保留约78%至86%的候选,筛选没有真正压缩模型复杂度。

2. 同类信息仍然拥挤。 虽已做0.95相关性去重,但趋势、波动、换手和市场状态之间仍存在非线性冗余。

3. 市场状态特征权重过高。 前九大重要特征中五个是市场状态或涨跌停状态,可能提升部分阶段表现,却加大状态切换时的风险。

4. 优化目标与组合尾部不完全一致。 模型训练的是全截面排名,但实际只买最顶端50只;Rank IC接近旧版,不代表Top 50一定更稳。

5. 组合缺少行业、市值约束。 当前仍可能带有小中盘、高活跃度和特定行业暴露,2026年沪深300上涨而股票池整体偏弱时尤其不利。

下一步建议

1. 保留83因子作为候选库,但把每折最终因子数约束到20至35个;在验证集内选择数量,不看测试集。

2. 将相关性阈值从0.95收紧到0.85至0.90,并按因子类别设置上限,防止趋势、波动和成交类扎堆。

3. 做逐类消融:17因子基准分别加入市场状态、K线、风险、流动性和交互项,判断哪一类真正贡献样本外收益。

4. 在验证集内比较Top 50、Top 100和Top 200,并增加持仓缓冲,训练目标加入Top端排序或收益权重。

5. 加入行业和流通市值数据,输出行业、市值暴露与中性化前后结果。

6. 由于2022至2026数据已经被反复查看,下一次正式版本应把2026-08以后数据或一段仿真实盘作为新的最终留出期。

文件说明

metrics.json:新版总体指标。

backtest.csvannual_returns.csv:净值和年度收益。

walk_forward_windows.csvfold_summary.csv:每折训练、验证、样本外窗口及表现。

factor_diagnostics.csvfactor_selection_by_fold.csv:逐折因子诊断与筛选记录。

factor_selection_summary.csv:83个候选因子的跨折汇总。

feature_importance.csv:模型逐折增益重要度。

model_comparison.csvannual_comparison.csv:新旧模型对比。

run_config.toml:本次实际运行配置快照。

本次输出已经通过日期覆盖、预测键唯一性、沪深300对齐和逐期交易成本复核。新版可以作为下一轮精简与消融研究的起点,但不应直接作为当前最优模型上线。