Project 6 v2:树模型比较、重要性、稳定性与消融(构造数据研究报告)
2026-10-11 冻结的 A8-B 结果;2026-10-16 作者修订。作者:Yuxiao Ma。全部结果来自教学构造数据(data_class = CONSTRUCTED),不是市场证据。 A8-B 现有独立 limited-scope accepted pending formal integration 入口;本批 BIL19 双语候选仍待独立审阅。真实数据实证仍 blocked,完整 Project 6 未 verified。基础管线报告见 README.md,其 A8-A 冻结内容仍单独保留。
1. 假设与问题
在 v1 已冻结的构造面板(线性数据生成过程,三个有载荷特征、40 个零载荷特征、三个价格特征)上,问三件事:(1) 单树、随机森林、梯度提升相对零预测、训练均值、OLS 与正则化线性模型,样本外预测与成本后组合是否更好;(2) 结果对折、种子是否稳定;(3) 价格特征组与特征列组各贡献多少。预期(由数据生成过程推得,写于运行前的协议中):线性生成过程下树模型没有可利用的非线性,不应显著优于 Ridge 与 Elastic Net,且因分段常数预测换手更高。
生成器里 q 序列和 noise 序列跨序列独立,各自沿时间都是 AR(1),系数 rho=0.98、边际方差为 1;不是时间 IID。价格列 rev_5、mom_60_5、vol_20 从含共同市场冲击、q 信号和特异冲击的收益路径派生。因而 43 个 q/noise 特征与 3 个价格特征结构不同,有限样本中的 46 维特征总体不满足独立同分布、同方差假设。PCA 的解释必须依据实际协方差与流水线,不能用“全部特征独立同方差”简化。P6 为 46 特征、1,512 日期、16 折;第40章交互实验是另一个 26 特征、1,260 日期、12 折实验,含登记的主强度与另行五倍 post hoc 敏感性,不与本报告合并。
2. 协议与冻结
- 配置:
configs/p06_trees_v2.json,SHA25660101509bbe073678536f0850dd143777b7736be4ec2b6818e05cb736ce23cf4,首次 v2 运行前冻结(只读)。继承p06_base_v1.json(SHA25662f49e1c…,运行时校验)。 - 冻结前已看过:A8-A v1 构造结果(基础与反号情景的
、IC、成本后夏普,逐条写入配置)、第38–39章构造运行、一次只看耗时的计时探针。这不是真实市场的事前预注册。 - 数据生成器与两个情景(基础、
regime_flip_at_75pct)不变;未增加有利于树模型的情景。第40章另有交互项构造面板,只用于章节教学,不进入本项目。 - 时间:signal_time
收盘;trade_time 收盘;label_end label_available_at ;训练行须 label_available_at fit_time。外层扩张窗最少 504 日、每折 63 日、16 折;内层最后 2 个 63 日验证窗、最少 252 日。 - 模型与网格:见配置。梯度提升为
HistGradientBoostingRegressor(early_stopping=False),轮数(上限 300)与参数一起在内层日期折上按平均验证 MSE 选择,再在外层全部训练行重拟合。冻结 v1 产生 zero、train_mean、OLS、Ridge、Lasso、Elastic Net 六条序列;v2 加单树、RF、HGB 与 PCA+Ridge 四条,共 10 条。主比较图表只列 8 个拟合模型,略去 zero 与 train_mean;PCA+Ridge 是线性降维模型,不是树。 - 组合:截面去均值、毛暴露 1、每 5 个信号日调仓、次日收盘成交、单边 0/10/20 个基点(第29章账本);初始资金 100 万;借券、融资、冲击、容量未建模。
- 实现:
src/p06_trees.py;CLIrun_project06_v2.py(--data real退出码 3、不写文件);核心逻辑quant_course.tree_models与只读复用的quant_course.ml_pipeline。 - 基线核对:v1 的六个模型用未修改的 v1 代码重跑,与 A8-A c3 摘要逐值相同(每个情景 209 个数值,最大相对差 0.0)。
3. 结果
数字来自作者 QA 运行 qa_r1(持久证据 qa/a8/ch40_ch41_batch/evidence/qa_r1/),摘要副本 v2_summary_base.json、v2_summary_regime.json。
报告主表的 8 行不等于运行序列总数;zero 与 train_mean 是另两条空仓基线。两者的 1,008 个组合日总收益均为 0、换手均为 0,IC 均值是未定义 NaN。
日期基数(2026-10-11 返修 R01 补充)。 有成熟标签的测试日为 1002 个;IC 均值在各模型自身有 IC 的日期上计算,ΔIC 在模型与 Ridge 都有 IC 的共同日期上计算。OLS、Ridge、PCA+Ridge 与三种树模型在全部 1002 日都有 IC,日期连续,括号中的 v2_ic_date_bases.json(新文件;冻结摘要不变)。
3.1 基础情景(1002 个测试日)
| 模型 | IC( |
ΔIC( |
夏普 0bp | 10bp | 20bp | 年换手 | 最大回撤 10bp | 10bp 总收益 | |
|---|---|---|---|---|---|---|---|---|---|
| OLS | −0.839% | 0.0203(2.24) | +0.0004(0.18) | 0.79 | 0.39 | 0.00 | 24.3 | −14.2% | 9.39% |
| Ridge | −0.113% | 0.0198(2.22) | — | 0.84 | 0.45 | 0.07 | 23.6 | −12.9% | 10.90% |
| Lasso | −0.083% | 0.0179(—) |
+0.0017(—) |
0.36 | 0.01 | −0.33 | 16.3 | −9.3% | −0.20% |
| Elastic Net | −0.010% | 0.0309(—) |
+0.0103(—) |
1.19 | 0.81 | 0.43 | 22.0 | −7.2% | 19.90% |
| 单树 | −0.393% | 0.0054(0.64) | −0.0144(−1.61) | 0.21 | −0.28 | −0.75 | 35.1 | −20.0% | −8.70% |
| 随机森林 | +0.037% | 0.0266(2.86) | +0.0067(1.06) | 1.13 | 0.64 | 0.16 | 29.2 | −12.3% | 15.98% |
| HGB(梯度提升) | +0.023% | 0.0154(1.79) | −0.0044(−0.61) | 0.76 | 0.22 | −0.32 | 36.2 | −11.0% | 5.02% |
| PCA+Ridge | −0.008% | 0.0135(1.45) | −0.0063(−0.86) | 0.62 | 0.25 | −0.13 | 23.3 | −12.0% | 5.49% |
零预测与训练均值空仓(总收益 0)。
两组 8 模型表均报告相对训练均值的 qa_r1 历史摘要,未重算。
| 情景 | 模型 | 10 bp 净总收益 | 20 bp 净总收益 | |
|---|---|---|---|---|
| 基础 | OLS | −1.715% | +9.39% | −0.76% |
| 基础 | Ridge | −0.982% | +10.90% | +0.91% |
| 基础 | Lasso | −0.952% | −0.20% | −6.50% |
| 基础 | Elastic Net | −0.879% | +19.90% | +9.81% |
| 基础 | 单树 | −1.264% | −8.70% | −20.66% |
| 基础 | 随机森林 | −0.831% | +15.98% | +3.18% |
| 基础 | HGB | −0.845% | +5.02% | −9.14% |
| 基础 | PCA+Ridge | −0.876% | +5.49% | −3.91% |
| 反号 | OLS | −1.891% | −6.09% | −14.80% |
| 反号 | Ridge | −1.032% | −4.44% | −13.08% |
| 反号 | Lasso | −1.014% | −10.10% | −15.23% |
| 反号 | Elastic Net | −0.931% | +1.09% | −6.77% |
| 反号 | 单树 | −1.479% | −29.85% | −39.30% |
| 反号 | 随机森林 | −0.913% | −2.72% | −13.62% |
| 反号 | HGB | −0.890% | −10.55% | −22.71% |
| 反号 | PCA+Ridge | −0.923% | −4.24% | −12.84% |
3.2 载荷反号情景(第 1134 个交易日起反号;第 11–16 折在反号后)
| 模型 | IC( |
ΔIC( |
夏普 0bp | 10bp | 20bp | 年换手 | 最大回撤 10bp | |
|---|---|---|---|---|---|---|---|---|
| OLS | −1.013% | 0.0089(0.97) | +0.0002(0.10) | 0.17 | −0.22 | −0.61 | 24.3 | −21.7% |
| Ridge | −0.161% | 0.0087(0.95) | — | 0.23 | −0.15 | −0.53 | 23.7 | −19.9% |
| Lasso | −0.143% | 0.0010(—) |
−0.0021(—) |
−0.25 | −0.57 | −0.89 | 14.7 | −15.1% |
| Elastic Net | −0.061% | 0.0152(—) |
+0.0061(—) |
0.45 | 0.08 | −0.29 | 20.2 | −15.7% |
| 单树 | −0.604% | −0.0120(−1.32) | −0.0207(−2.19) | −0.66 | −1.13 | −1.60 | 36.2 | −30.1% |
| 随机森林 | −0.042% | 0.0129(1.35) | +0.0042(0.66) | 0.41 | −0.08 | −0.57 | 29.7 | −21.0% |
| HGB(梯度提升) | −0.020% | 0.0041(0.46) | −0.0045(−0.59) | 0.16 | −0.38 | −0.92 | 36.5 | −20.0% |
| PCA+Ridge | −0.053% | 0.0063(0.68) | −0.0023(−0.31) | 0.24 | −0.14 | −0.52 | 23.5 | −12.0% |
反号后各折 IC 多为负(Ridge 第 11–16 折:0.001、−0.086、−0.052、0.007、0.019、−0.032):所有模型都在反号前学到了符号,反号后需要若干折才能被扩张窗中的新数据纠正。
3.3 消融(ΔIC 相对同一模型的全特征版本;夏普为 10/20bp)
| 消融 | 基础 IC | 基础 ΔIC( |
基础夏普 | 反号 IC | 反号 ΔIC( |
反号夏普 |
|---|---|---|---|---|---|---|
| 森林:去价格 | 0.0207 | −0.0059(−2.05) | 0.27 / −0.20 | 0.0082 | −0.0047(−1.62) | −0.34 / −0.81 |
| 森林:只价格 | 0.0131 | −0.0135(−1.09) | −0.05 / −0.81 | 0.0141 | +0.0013(0.10) | −0.14 / −0.90 |
| 森林:训练内前10 | 0.0146 | −0.0120(−1.85) | 0.28 / −0.23 | 0.0082 | −0.0047(−0.77) | −0.06 / −0.56 |
| 提升:去价格 | 0.0080 | −0.0074(−1.56) | −0.22 / −0.76 | −0.0013 | −0.0055(−1.14) | −0.42 / −0.94 |
| 提升:只价格 | 0.0145 | −0.0009(−0.08) | 0.44 / −0.15 | 0.0130 | +0.0089(0.77) | 0.19 / −0.40 |
| 提升:训练内前10 | 0.0197 | +0.0043(0.58) | 0.14 / −0.41 | 0.0141 | +0.0099(1.22) | −0.22 / −0.76 |
组置换重要性(每折最后一个内层验证窗,MSE 增加
3.4 稳定性
- 种子(基础情景):随机森林 4061/4062/4063 的 IC 为 0.0266、0.0232、0.0237,10bp 后夏普 0.64、0.52、0.44,预测相关 0.962–0.982;梯度提升三个种子完全相同(
early_stopping=False下对给定数据确定)。 - 所选参数:单树 16 折中 14 折深度 2;森林叶 2000 共 10 折、叶 500 共 6 折;梯度提升轮数 2–96,学习率 0.02 只在 2 折被选;PCA+Ridge 成分数 30 共 10 折、5 共 5 折、15 共 1 折。
- 内层置换重要性相邻折排名相关平均(基础/反号):单树 −0.10/−0.04,森林 0.01/0.01,提升 0.09/0.10。基础情景前 10 出现频率:森林
11 折、noise_04 11 折、noise_18 10 折、 9 折;提升 11、 10、noise_09 10。 - 事后诊断(不回流任何选择):外层测试窗置换重要性,提升前三为
(0.0251$\times10^{-4} q_2$(0.0069)、noise_09(0.0033);森林为 、noise_04、 。森林最终模型 MDI 平均: 0.153、 0.112、noise_04 0.083,其余零载荷列多在 0.03 左右。
3.5 图
../figures/p06v2_model_comparison_base.png、…_regime.png:八个模型的、IC 与 10/20bp 夏普。 ../figures/p06v2_importance_stability_base.png、…_regime.png:梯度提升内层置换重要性逐折热图。../figures/p06v2_ablation_base.png、…_regime.png:登记消融。






4. 解读
- 预测层没有模型相对训练均值的
超过 0.04%。除反号情景单树外,其余主比较的 ;单树相对 Ridge 的方向为更差(配对 、 、未校正双侧近似 ;仅对 3 个树模型 × 2 个情景作 Bonferroni 后约 0.17,协议另登记了消融与种子比较)。这是未校正的描述性比较,不是确认性显著发现。与预期一致:线性生成过程下树模型没有额外可利用的结构。 - 换手:树模型年换手 29.2–36.5,线性模型 14.7–24.3。随机森林基础情景成本前夏普 1.13,20bp 后 0.16;Elastic Net 在两个情景、三档成本下夏普都最高。
- 价格特征与特征列信息重叠:过去收益中含有缓慢变化的预期收益(特征 AR 系数 0.98),价格特征因此带有间接信号。特征列在场时,价格组的组置换重要性接近 0(被替代);去掉价格组时,两种树模型 IC 下降;只用价格组时,提升模型保留了几乎全部 IC。反号情景中,只用价格特征的提升模型优于全特征版本,可能因为动量类特征随最近收益更新,比反号前学到的特征系数更快适应;所有相关
值小于 1.3,只作观察。 - 按IC,训练内前10选择使森林两景下降、提升两景上升,均为描述性比较;成本后夏普并不一致,例如提升基础10bp由0.22降至0.14,反号由−0.38升至−0.22;63 日验证窗上的置换重要性噪声大,零载荷特征经常被选入。
- PCA+Ridge 的多指标排名不一,不能概括成全面较差。相对训练均值的
在基础/反号情景分别为 −0.008%/−0.053%,均略优于 Ridge 的 −0.113%/−0.161%;反号下 10/20 bp Sharpe −0.14/−0.52 也略高于 Ridge 的 −0.15/−0.53。另一方面,PCA 的 IC 均值 0.0135/0.0063 低于 Ridge 的 0.0198/0.0087。完整 46 个主成分、同一标准化和 alpha 且无 whitening 时,PCA 是正交旋转,Ridge 范数不变,故与 Ridge 正交等价;截断主成分改变可用子空间,不能保证提升。该结果应结合 q/noise的 AR(1) 与价格衍生特征解释,不能假定全 46 列独立同方差。
5. 反证条件与结论
冻结配置 comparison.claims_rule 只要求不从构造数据提出经济或 alpha 结论,并保留零结果与负结果。它没有设立“两个情景的树模型 ΔIC NW t 均不小于 2,且 20 bp Sharpe 同时高于 Ridge 和 Elastic Net”的联合门槛;不得把该条件说成冻结协议。
三种树模型乘两个情景的六个主比较中,唯一绝对 t 值超过 2 的是反号情景单树相对 Ridge:配对 ΔIC = −0.0207、历史未校正 NW t = −2.19,方向为单树更差。近似未校正双侧 p=0.029;只对这六项作 Bonferroni 近似约为 0.17。协议另记录消融和种子比较,故这只是未校正描述量,不是确认性显著发现。其他主比较的绝对 t 值均小于 2。
本构造中,树模型按既定训练内流程拟合、比较和诊断,但没有显示可辨别的整体优势。此结论只描述当前生成过程、折设计和成本账本,不外推真实市场。
6. 局限
- 构造数据:线性数据生成过程,结论只关于本管线的机制与本构造;不能推广到真实市场。
- 多次比较:主表8个模型×2情景×3档成本,另有6类消融各2情景及3种子稳定性比较,未校正;本文没有任何结果被称为显著发现。
- 成本:比例成本,未建模借券、融资、冲击与容量;空头收入全额计入现金(第29章约定)。
- 重要性只在 63 日内层窗上计算 3 次重复,方差大;组置换只分两组。
- 计算:本报告数字所用运行
qa_r1的端到端时间(整套p06_trees.run、写出与作图,不是单独拟合)基础 1100 s、反号 906 s;开发运行dev01在并行负载下为 1981 s、1382 s,两次结果数值相同;随机森林n_jobs=-1,预测的浮点求和顺序可能因线程而异(事后重拟合与原预测在默认容差内一致,由posthoc_test_importance断言)。
7. I3 Notebook 展示回放与本次工作边界
P6v2 的 I3 阅读 Notebook 共 9 个单元格、4 个代码单元格;它用冻结 fixture 回放两份摘要、IC 日期基数以及历史消融/稳定性展示,并从冻结摘要生成 historical_constructed_trees_sharpe.png 写入 RUN_DIR。fit 明确为 SKIPPED;没有重训、完整 CLI 或新的模型检验。旧的“未验收”banner 属历史文字;A8-B 当前状态为 limited-scope accepted pending formal integration。BIL19 双语候选仍待独立审阅,完整 P6 尚未 verified。本次作者修订未运行 Notebook、模型、生成器或全量 CLI。
第40章实验的 26 特征、1,260 日、12 折,以及登记主强度与另行五倍事后敏感性,保持独立,不能并入 P6 的 46 特征、1,512 日、16 折报告。数据/PIT 与 A10-B 状态依旧未验证,真实研究保持 blocked。
8. 真实数据前提
见 ../data_manifest.json:需要经许可、可持久保存、可用于内部培训派生统计的日频个股面板(至少 8 年)。拿到后另立配置版本,从数据节点重跑,并在协议中登记本报告与第37–41章所有构造结果为"已看过"。
双语候选状态(2026-10-16): 本文是 BIL19 作者候选,题号 P6-L04–P6-L08 的完整答案位于同项目 solutions.md,基础题 P6-L01–P6-L03 保留在 README.md 并一并收录于答案册。BIL18 的受限基础层与 A8-B 回执身份未改;本批不写入冻结目录、不作正式出版或最终验证登记。