行为
Sprint 3 规划会议纪要:M3a 特征基建与 38 维字典红线冻结 ¶
会议日期:2026-04-17
项目名称:基金量化定投选基系统 (2026-04-11-01)
会议目标:锁定 M3a(特征基建)交付标准,对齐 CR-002/CR-003 变更落地方案,确立 38 维特征工程防线与标准化纯函数的强卡控边界,解决存储形态架构冲突。
参会角色:项目经理、算法/研发工程师、基础架构/运维工程师
一、 会议确认项¶
-
CONF-01 特征命名绝对红线确立:全局特征命名一律以《特征字典基线文档 (DICT-FEATURE-001)》中的
_{窗口期}w(如_12w)格式为准,历史草稿文档中的_w{N}格式作废。 -
CONF-02 段隔离强制约束确立:所有涉及滚动计算的特征,在 Polars 语境下必须强制执行
group_by(['fund_id', 'segment_id']),严禁出现跨段数据污染。 -
CONF-03 有效值判定单一信源确立:全面采纳
with_validity_check高阶函数包装方案,作为全项目规约 4.2min_valid_ratio=0.20判定逻辑的唯一标准实现路径。 -
CONF-04 底层计算引擎与依赖红线锁定:OLS 回归计算(
trend_slope与trend_r_squared)纯采用np.linalg.lstsq进行矩阵求解,严禁引入 SciPy;单测必须强卡控其在极端情况下的数值精度。 -
CONF-05 无风险利率参数化决策:公式中的
0.02(年化无风险收益率基准)严禁硬编码,必须作为params.risk_free_rate_annual节点写入config/config.yaml,由代码运行时动态计算weekly_rf。 -
CONF-06 纯函数接口契约冻结:锁定
calculate_stats()、apply_standardization()、remove_collinear_features()三个公开函数的入参、出参及基础行为作为研发基线。 - CONF-07 单测组织与覆盖粒度确认:单测文件按 A/B/C/D/E 特征类拆分为独立测试类,且必须覆盖 38 维全量特征的精确度验证,不可抽样。
-
CONF-08 T-1 验证构造策略确认:采用“2 个时间截面(t0, t1)极简 DataFrame”的方式,构造调用
apply_standardization()后断言 t0 截面全为 NULL 的用例。 -
CONF-09 预览文件物理标识机制确认:
standardization_params.parquet必须增加is_production_ready物理列,全表填入false,防止下游误读。 -
CONF-10 物理目录结构变更批准:正式批准新建
data/models/目录用于存放预览级参数与特征列表产物。 -
CONF-11 落盘形态架构变更确认:特征存储形态由长表变更为宽表(触发 CR-004),内存计算与最终落盘统一为宽表 Schema,废弃原
unpivot转换链路。 -
CONF-12 落盘物理参数延续确认:PyArrow 写入继续强制指定
row_group_size=100000(契合当前量级下 30MB/Group 的最优 Block Size)且采用覆盖写模式。 -
CONF-13 CI 流水线扩展确认:
.gitea/workflows/ci.yml新增pytest tests/test_feature_engineering.py -v --tb=short步骤,作为 PR 强阻断门禁。
二、 会议待办项¶
| 编号 | 责任人 | 任务描述 | 截止时间 | 验收标准 |
|---|---|---|---|---|
| TODO-01 | 研发工程师 | 物理目录结构文档同步 | S3-04 首个 PR | 在首个 PR 中同步更新 project-structure.md,补充 data/models/ 目录及其存放内容的说明。 |
| TODO-02 | 研发工程师 | OLS 回归精度单测验证 | S3-02 交付同步 | 提交单测报告,证明基于 np.linalg.lstsq 计算的斜率与 R² 在极小矩阵、全 NaN 边界情况下精度符合浮点容差要求。 |
| TODO-03 | 项目经理 | Redmine 验收标准录入与派发 | 会后 4 小时内 | S3-01 至 S3-04 任务卡片的自定义字段已按 CONF-01 至 CONF-13 逐条填入,并指派给研发。 |
三、 会议风险项¶
| 编号 | 风险描述 | 应对策略/演进路线 | 跟踪机制 |
|---|---|---|---|
| 无 | M3a 阶段架构边界清晰,历史长表引发的性能与计算冲突已通过 CR-004 彻底根除,当前无遗留风险项。 | - | - |
四、 Sprint 3 (M3a) 交付物全景清单(已对齐)¶
| 分类 | 文件路径 | 核心约束简述 |
|---|---|---|
| 业务参数 | config/config.yaml |
新增 params.risk_free_rate_annual 节点。 |
| 核心源码 | src/feature_engineering.py |
包含宽表计算主链路、with_validity_check 包装器、三个标准化纯函数。严禁 SciPy 依赖。 |
| 核心源码 |
src/utils/ols_solver.py (或内聚) |
基于 np.linalg.lstsq 的 OLS 求解封装,带严格 Type Hints。 |
| 质量保障 | tests/test_feature_engineering.py |
按 A~E 分类建类,覆盖 38 维精确度、T-1 首日 NULL、OLS 极端精度。 |
| 数据产出 | data/features/features_YYYY.parquet |
宽表形态,Schema 为 38 列特征加基础键;row_group_size=100000,覆盖写。 |
| 数据产出 | data/models/standardization_params.parquet |
含 is_production_ready=false 物理列的全局基准预览。 |
| 数据产出 | data/models/final_feature_list.json |
严格符合 _12w 命名范式的 38 维特征名字符串列表。 |
| 技术真相 | docs/data_contract.md |
新增《特征矩阵接口契约单》,声明宽表落盘架构与 38 维字典引用。 |
| 技术真相 | docs/project-structure.md |
同步更新 data/models/ 目录说明。 |
会议闭环状态:✅ 全部议程结束,无遗留阻塞项。研发团队可依据本纪要及 CR-011 启动 Sprint 3 (M3a) 实施。
由 Huarui Lin 更新于 大约 5 小时 之前 · 2 修订