CR-002-M3a里程碑交付物语义变更 » 历史记录 » 版本 2
Huarui Lin, 2026-04-12 19:20
| 1 | 2 | Huarui Lin | # CR-002: M3a 里程碑交付物语义变更(标准化与共线性归属修正) |
|---|---|---|---|
| 2 | |||
| 3 | |||
| 4 | 1 | Huarui Lin | | 字段 | 内容 | |
| 5 | |------|------| |
||
| 6 | | **CR ID** | CR-002 | |
||
| 7 | | **标题** | Step 3 产出特征由“标准化后”变更为“原始值”,标准化降级为可复用工具函数 | |
||
| 8 | | **发起人** | Henry Lin (PM) | |
||
| 9 | | **日期** | 2026-04-11 | |
||
| 10 | | **状态** | ✅ Approved | |
||
| 11 | | **影响范围** | M3a Done 标准、规约 4.3/4.4 执行时机、Step 5 训练流水线 | |
||
| 12 | 2 | Huarui Lin | |
| 13 | ### 1. 变更描述 |
||
| 14 | |||
| 15 | 1 | Huarui Lin | **原文(项目章程 M3a Done 标准)**: |
| 16 | 2 | Huarui Lin | |
| 17 | 1 | Huarui Lin | > ② 首日(数据集第一天)所有标准化特征输出 NULL(T-1 Shift 验证) |
| 18 | 2 | Huarui Lin | |
| 19 | 1 | Huarui Lin | **变更为**: |
| 20 | 2 | Huarui Lin | |
| 21 | 1 | Huarui Lin | > ② `features.parquet` 内所有特征必须为**原始值**;`test_feature_engineering.py` 必须包含针对标准化工具函数的单测,验证其输入首日数据时输出全 NULL(T-1 Shift 验证在函数级闭环,而非产物级) |
| 22 | 2 | Huarui Lin | |
| 23 | ### 2. 变更原因(根因追溯) |
||
| 24 | |||
| 25 | 1 | Huarui Lin | 规约 5.2 规定“每一折的训练集内部独立执行:截面标准化 → 共线性筛选”。若 Step 3 直接产出标准化特征,将导致训练时使用全局统计量,严重违反时序隔离原则(触发风险 R-3 未来数据泄露)。因此,标准化与共线性剔除的**执行权**必须移交至 Step 5,Step 3 仅负责**暴露底层纯函数**。 |
| 26 | 2 | Huarui Lin | |
| 27 | ### 3. 影响分析 |
||
| 28 | |||
| 29 | 1 | Huarui Lin | | 受影响模块 | 影响说明 | 应对措施 | |
| 30 | |-----------|---------|---------| |
||
| 31 | | `feature_engineering.py` | 不再直接产出标准化后的列 | 暴露 `apply_cross_section_standardization(df: pl.DataFrame, stats_df: pl.DataFrame) -> pl.DataFrame` 供 Step 5 调用 | |
||
| 32 | | `standardization_params.parquet` | 语义变更为“全局基准预览” | 文件头部增加 `is_production_ready: false` 标识 | |
||
| 33 | | `trainer.py` (Step 5) | 增加调用标准化函数的逻辑 | 逐折调用 Step 3 暴露的函数,产出真正用于训练的参数 | |
||
| 34 | --- |