Project 6 v2 教学指南:树模型、稳定性、消融与 PCA+Ridge
Author: Yuxiao Ma · Revision date: 2026-10-16.
候选状态: 本指南延伸 BIL18 已限定范围接受、待正式整合的 A8-A 基础层。A8-B 的构造数据扩展已有独立限定范围接受入口,但本批双语教学材料仍待独立审阅。真实数据研究状态仍为 blocked,完整 Project 6 仍未 verified。这里的数字是指定生成机制下的教学证据,不是市场证据。
本指南把 P6 的线性基线、树模型、PCA、组合和推断口径连成一条可复核的研究流程。细表和冻结历史限制见 基础管线报告 与 v2 研究报告;同项目全部题目和解答见 solutions.md。
1. 先固定实验身份
P6 v1 是 46 特征、1,512 个交易日、16 折的线性实验。46 列由 3 个构造信号特征、40 个构造噪声特征和 3 个价格特征组成。v2 沿用同一冻结面板与基础/载荷反号两种情景,加入树、森林、梯度提升和 PCA+Ridge。它与第40章交互项例子不是同一个实验:后者是 26 特征、1,260 个交易日、12 折,含登记的主强度与另行五倍事后敏感性。不得把其参数、日期数、表格或结论挪到 P6。
生成器中 q 序列与 noise 序列彼此独立;每一条序列沿时间都是平稳 AR(1),系数 0.98、边际方差为 1。价格列 rev_5、mom_60_5、vol_20 从含市场冲击、q 信号和特异冲击的收益路径构造出来。因此“序列间独立”不等于“每个特征在时间上 IID”,而且 46 列也不是独立同分布、同方差的总体。43 个特征列与 3 个价格衍生列有不同结构,有限样本协方差还会影响主成分。
v1 的实现产生 6 条预测序列:zero、train_mean、OLS、Ridge、Lasso、Elastic Net。v2 增加 4 条:单树、随机森林、梯度提升(HistGradientBoostingRegressor,HGB)和 PCA+Ridge,合计 10 条。历史主表和比较图只列 8 个拟合模型,省略 zero 与 train_mean 两个空仓基准;PCA+Ridge 是线性降维后接 Ridge,不是树模型。
2. 时间契约与模型比较
信号在
外层按日期分组做扩张窗 walk-forward:最少训练 504 日、每折测试 63 日、共 16 折。每一折先排除尚未成熟标签的训练行;同一信号日的资产行不能拆到训练和测试两侧。内层取最后两个 63 日验证窗,最少训练 252 日,按平均验证 MSE 选参数。外层测试不参与选择。梯度提升使用 HistGradientBoostingRegressor,early_stopping=False;提升轮数上限为 300,和其他参数一起在内层选定,再用该折全部外层训练行重拟合。
冻结网格如下;不是把所有档位任意笛卡尔相乘:
| 模型 | 候选设置 | 选择口径 |
|---|---|---|
| 单树 | 深度2/3/4/6,每叶至少1000行 | 4候选,内层平均MSE |
| RF | 200棵,max_features=0.33,max_samples=0.5,每叶500或2000行 | 2候选,内层平均MSE |
| HGB | (学习率,深度)=(0.05,2)/(0.05,3)/(0.02,3),每叶至少500行,上限300轮 | 3候选,两个活跃内层折逐轮MSE平均再选轮 |
| PCA+Ridge | k=5/15/30与alpha=10^4/10^6组合,无whitening | 6候选,Scaler与PCA均只拟合当前训练行 |
指标要分开读:
衡量逐资产收益的水平预测误差;冻结表同时给出相对零预测和相对训练均值两个基准。 - 日 Spearman IC 是同一信号日横截面预测排序与结果排序的相关。自身 IC 均值使用模型自己的有效日期。
对 Ridge 的比较只在两方 IC 都定义的共同日期上计算;两边均值与均值差都必须来自同一日期集合。 - Sharpe、净收益、最大回撤和换手由权重、成交时点与费用后的组合账本给出,不能由 IC 代替。
16 折共有
历史摘要对稀疏序列先 dropna 后以有效观察序号计算的 NW(4),其 4 阶滞后不等于相隔 4 个交易日的 HAC。修订报告不把这些压缩序列 t 值作为交易日推断,也没有新算 HAC。无缺失的连续序列原有的历史 t 值仍注明为未校正、描述性比较。所有多重比较限制见研究报告。
3. 预测转成组合后,费用会改写结论
模型每个信号日的预测先去横截面均值,再按规则缩放成毛暴露 1、美元中性目标权重;账本每 5 个信号日调仓、下一交易日收盘成交。冻结费用档是单边 0、10、20 bp,初始资金 100 万。已计入比例费用;借券费、融资利差、市场冲击、容量和保证金成本未建模。空头所得现金按既有账本约定计入,不意味着真实资金成本已完整。
基础情景中,Elastic Net 的历史 10/20 bp Sharpe 是 0.81/0.43,且净总收益为 +19.90%/+9.81%;但这只是本构造条件下的表现。反号情景中,八个主比较拟合模型在20bp下夏普为负;zero/train_mean空仓的夏普未定义。单树的年换手为 35.1–36.2,森林为 29.2–29.7,HGB 为 36.2–36.5,线性模型约 14.7–24.3;提高复杂度没有消除换手和成本压力。完整逐模型表、收益、回撤和消融在 研究报告第 3 节。
4. PCA+Ridge:降维不自动意味着更差
冻结流水线在每折训练数据内拟合 StandardScaler,再拟合完整 SVD 的 PCA 与 Ridge;未 whiten,预处理不接触外层测试数据。若保留全部 46 个主成分,在同一标准化、同一 Ridge alpha、无 whitening 条件下,PCA 只是正交旋转,Ridge 的惩罚范数保持不变,因此与标准化空间中的 Ridge 正交等价。截断主成分会约束系数只能落在保留子空间中,可能降噪,也可能丢弃预测方向,不能保证更优。
实际结果不是“PCA 全面落后”:基础情景 PCA+Ridge 相对训练均值的
PCA 每折选择的成分数为 30(10 折)、5(5 折)、15(1 折)。这说明内层预测目标在本设定下常选截断维数,不说明该维数在新样本、真实数据或另一费用结构下仍有效。PCA 的完整对照见研究报告表格。
5. 重要性、消融与稳定性怎样读
每折最后一个内层 63 日验证窗计算特征置换重要性,组内按同一资产行一起置换,保留组内列结构;每列 3 次重复。价格组与全部特征组的组置换,以及 RF/HGB 的去价格、只价格、训练内前 10 个特征消融,均是既有冻结设计。训练内前 10 使用该折内层重要性;消融报告是相对同模型全特征版的描述性变化。Top-10 消融沿用全模型参数,属于记录过的简化方案。
置换重要性近零不等于该组毫无信息:其他相关列可能代替它。基础情景森林与 HGB 去掉价格后的 IC 都下降;只价格的 HGB 仍保留多数 IC。反号情景只价格 HGB 的 IC 高于全特征版本,但差值的 t 小于 1.3,只作为观察。组重要性在特征组明显大于价格组时,也不能把该值读作因果贡献。
稳定性结果显示,树模型相邻折重要性排名相关很低:基础/反号下单树 −0.10/−0.04、RF 0.01/0.01、HGB 0.09/0.10。RF 三个种子的预测相关为 0.962–0.982,10 bp Sharpe 为 0.44–0.64;HGB 三个种子在本设定下完全相同,因为关闭 early stopping 后拟合确定。稳定不等于准确,重要性排名稳定与否也不直接说明经济价值。
6. 结果是有限、构造内且未校正的
主比较的六组树模型相对 Ridge 的配对
配置中的 comparison.claims_rule 只声明:不从构造数据声称经济或 alpha 结果,并保留零与负结果。它没有设立“两个情景的
7. Notebook 回放与真实数据边界
I3 的 P6v2 Notebook 包含 9 个单元格、其中 4 个代码单元格;按固定 fixture 回放两份历史摘要、日期基数及历史消融/稳定性展示,并从冻结摘要生成一张新图 historical_constructed_trees_sharpe.png 写入 RUN_DIR。冻结输出明确标记 fit 为 SKIPPED。它不重训,不生成新模型结果,也不重新计算完整 CLI。旧版“未验收”banner 是历史文字;A8-B 当前为 limited-scope accepted pending formal integration。BIL19 双语候选仍待独立审阅,整个 P6 仍未 verified。
真实数据仍 blocked;A10-B 的数据/PIT 状态保持未验证。不得把本章的生成机制结果写成实证、收益承诺或市场 alpha。后续若获准真实数据,必须新建协议版本、核验数据许可与时间点,并把所有已看过的构造结果登记为事前已知;本批没有做这些工作。
8. 本地来源地图
- P6 v1 冻结配置:
projects/project06/configs/p06_base_v1.json;v2 冻结配置:projects/project06/configs/p06_trees_v2.json。 - 实现:
projects/project06/src/p06_pipeline.py、projects/project06/src/p06_trees.py、src/quant_course/ml_pipeline.py、src/quant_course/tree_models.py。 - 结果身份与冻结值:
projects/project06/research_report/v2_summary_base.json、v2_summary_regime.json、v2_ic_date_bases.json;QA 原始摘要归属qa/a8/ch40_ch41_batch/evidence/qa_r1/。 - 研究报告:
projects/project06/research_report/README.md、projects/project06/research_report/v2_trees.md。 - P6 与第40章边界审读:
qa/bilingual_revision/BIL19/preparation/ROOT_READER_NOTES.md、qa/bilingual_revision/BIL19/PRE_FREEZE_REVIEW_01.md。 - Notebook 沿用已有构造展示,v2 方法与结果边界见研究报告;内部接受回执不随读者仓库分发。
练习:保持同一实验、同一指标口径
P6-L04. P6 的 46 特征、1,512 个交易日和 16 折,能否与第40章交互实验的 26 特征、1,260 日、12 折合并成一组模型比较?说明两组设计和五倍 post hoc 的边界。
P6-L05. v1 的六条预测序列与 v2 新增的四条分别是什么?为什么报告称“8 个主比较模型”,又说冻结运行有 10 条预测序列?PCA+Ridge 属于哪一类?
P6-L06. q 与 noise 序列的“独立”指什么?它们沿时间是否 IID?价格三列如何生成?由此为什么不能把完整 46 维写成独立同分布、同方差特征?
P6-L07. 用基础和反号两景的
P6-L08. 冻结配置的 claims_rule 是否规定了“树模型必须在两个情景都达到
研究演练:从日期约束到可复核账本
下面四题补足从报告阅读到独立研究操作的关键环节,均为新教学题,不是新项目运行。它们使用稳定编号P6-T01–P6-T04;完整答案在同项目 solutions.md,练习册有相应演算、证明与代码诊断骨架。
P6-T01(标签成熟与训练截面)。 拟合时点为
P6-T02(组置换的代码诊断)。 两个信号日各3只资产,第一日的
# WRONG: one global order mixes signal dates; two independent orders destroy pairs.
q_perm = q_values[global_order]
z_perm = z_values[another_global_order]
P6-T03(全维PCA对照与截断)。 在同一训练中心/尺度下,记设计矩阵为
P6-T04(费用、权重漂移与事件顺序)。 允许分数股,无融资、分红、借券或冲击;初始现金1000,A/B收盘价均100。目标美元权重为