QuantWeft量化经纬
English
本章小节

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,SHA256 60101509bbe073678536f0850dd143777b7736be4ec2b6818e05cb736ce23cf4,首次 v2 运行前冻结(只读)。继承 p06_base_v1.json(SHA256 62f49e1c…,运行时校验)。
  • 冻结前已看过:A8-A v1 构造结果(基础与反号情景的 R2R^2、IC、成本后夏普,逐条写入配置)、第38–39章构造运行、一次只看耗时的计时探针。这不是真实市场的事前预注册。
  • 数据生成器与两个情景(基础、regime_flip_at_75pct)不变;未增加有利于树模型的情景。第40章另有交互项构造面板,只用于章节教学,不进入本项目。
  • 时间:signal_time =Dk=D_k 收盘;trade_time =Dk+1=D_{k+1} 收盘;label_end == label_available_at =Dk+6=D_{k+6};训练行须 label_available_at ≤\le 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;CLI run_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。ROS2R^2_{\text{OS}} 相对训练均值;IC 为各模型自身有 IC 日期上的逐日 Spearman IC 均值(括号 NW tt,滞后 4 个交易日,只对日期连续的序列报告);ΔIC 为与 Ridge 在共同日期上的逐日差的均值。

报告主表的 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,日期连续,括号中的 tt 是四个交易日带宽的 NW。Lasso 与 Elastic Net 在部分日期预测为常数,截面相关无定义:基础情景 630 日、882 日,反号情景 567 日、819 日。它们的冻结摘要 tt 值是删除缺失日后把剩余有效日当作相邻观测做 NW(4) 的诊断值,不是交易日 HAC,表中以 —a^{\mathrm a} 表示不报告。配对口径:基础 Lasso 630 日上自身 0.0179、Ridge 0.0161、差 +0.0017;Elastic Net 882 日上 0.0309 对 0.0206、差 +0.0103;反号 Lasso 567 日上 0.0010 对 0.0031、差 −0.0021;Elastic Net 819 日上 0.0152 对 0.0091、差 +0.0061。由冻结预测与标签 CSV 独立复算,见 v2_ic_date_bases.json(新文件;冻结摘要不变)。

3.1 基础情景(1002 个测试日)

模型 ROS2R^2_{\text{OS}} IC(tt) ΔIC(tt) 夏普 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(—)a^{\mathrm a} +0.0017(—)a^{\mathrm a} 0.36 0.01 −0.33 16.3 −9.3% −0.20%
Elastic Net −0.010% 0.0309(—)a^{\mathrm a} +0.0103(—)a^{\mathrm a} 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 模型表均报告相对训练均值的 R2R^2。为同时保留相对零预测的冻结结果,补列的历史 R2R^2 与 10/20 bp 净总收益如下;所有数字均来自同一 qa_r1 历史摘要,未重算。

情景 模型 R2R^2 相对零 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 折在反号后)

模型 ROS2R^2_{\text{OS}} IC(tt) ΔIC(tt) 夏普 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(—)a^{\mathrm a} −0.0021(—)a^{\mathrm a} −0.25 −0.57 −0.89 14.7 −15.1%
Elastic Net −0.061% 0.0152(—)a^{\mathrm a} +0.0061(—)a^{\mathrm a} 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(tt) 基础夏普 反号 IC 反号 ΔIC(tt) 反号夏普
森林:去价格 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 增加 ×10−4\times10^{-4},16 折平均):基础情景价格组 −0.0014(提升)、−0.0006(森林)、0.0012(单树),特征组 0.0495、0.052、0.0585;反号情景价格组 −0.0016、−0.0009、0.0012,特征组 0.0477、0.0373、0.0462。

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 出现频率:森林 q1q_1 11 折、noise_04 11 折、noise_18 10 折、q2q_2 9 折;提升 q1q_1 11、q2q_2 10、noise_09 10。
  • 事后诊断(不回流任何选择):外层测试窗置换重要性,提升前三为 q1q_1(0.0251$\times10^{-4})、)、q_2$(0.0069)、noise_09(0.0033);森林为 q1q_1、noise_04、q2q_2。森林最终模型 MDI 平均:q1q_1 0.153、q2q_2 0.112、noise_04 0.083,其余零载荷列多在 0.03 左右。

3.5 图

基础情景八模型比较:相对训练均值R²、日IC与10/20bp夏普。零/训练均值另为常数空仓基准;构造数据。

反号情景八模型比较:与基础相同坐标和指标,保留成本后负值;构造数据。

基础情景HGB内层置换重要性热图。横轴16个外层拟合窗口,纵轴12个展示特征,颜色为同日置换MSE增加;不是因果效应。

反号情景重要性热图:坐标、重复次数与口径同基础,跨窗变化不能解释成稳定发现。

基础消融:森林与提升去价格、只价格、训练内前10的IC和成本后结果;与同模型全特征比较。

反号消融:保留所有负结果,与基础使用相同模型/折/费用口径。

4. 解读

  1. 预测层没有模型相对训练均值的 ROS2R^2_{\text{OS}} 超过 0.04%。除反号情景单树外,其余主比较的 ∣t∣<2|t|<2;单树相对 Ridge 的方向为更差(配对 ΔIC=−0.0207\Delta IC=-0.0207、t=−2.19t=-2.19、未校正双侧近似 p≈0.029p\approx0.029;仅对 3 个树模型 × 2 个情景作 Bonferroni 后约 0.17,协议另登记了消融与种子比较)。这是未校正的描述性比较,不是确认性显著发现。与预期一致:线性生成过程下树模型没有额外可利用的结构。
  2. 换手:树模型年换手 29.2–36.5,线性模型 14.7–24.3。随机森林基础情景成本前夏普 1.13,20bp 后 0.16;Elastic Net 在两个情景、三档成本下夏普都最高。
  3. 价格特征与特征列信息重叠:过去收益中含有缓慢变化的预期收益(特征 AR 系数 0.98),价格特征因此带有间接信号。特征列在场时,价格组的组置换重要性接近 0(被替代);去掉价格组时,两种树模型 IC 下降;只用价格组时,提升模型保留了几乎全部 IC。反号情景中,只用价格特征的提升模型优于全特征版本,可能因为动量类特征随最近收益更新,比反号前学到的特征系数更快适应;所有相关 tt 值小于 1.3,只作观察。
  4. 按IC,训练内前10选择使森林两景下降、提升两景上升,均为描述性比较;成本后夏普并不一致,例如提升基础10bp由0.22降至0.14,反号由−0.38升至−0.22;63 日验证窗上的置换重要性噪声大,零载荷特征经常被选入。
  5. PCA+Ridge 的多指标排名不一,不能概括成全面较差。相对训练均值的 R2R^2 在基础/反号情景分别为 −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 回执身份未改;本批不写入冻结目录、不作正式出版或最终验证登记。

搜索教材

输入关键词开始搜索。