项目

一般

简介

行为

Sprint 3 规划会议纪要:M3a 特征基建与 38 维字典红线冻结

会议日期:2026-04-17
项目名称:基金量化定投选基系统 (2026-04-11-01)
会议目标:锁定 M3a(特征基建)交付标准,对齐 CR-002/CR-003 变更落地方案,确立 38 维特征工程防线与标准化纯函数的强卡控边界,解决存储形态架构冲突。
参会角色:项目经理、算法/研发工程师、基础架构/运维工程师


一、 会议确认项

  1. CONF-01 特征命名绝对红线确立:全局特征命名一律以《特征字典基线文档 (DICT-FEATURE-001)》中的 _{窗口期}w(如 _12w)格式为准,历史草稿文档中的 _w{N} 格式作废。
  2. CONF-02 段隔离强制约束确立:所有涉及滚动计算的特征,在 Polars 语境下必须强制执行 group_by(['fund_id', 'segment_id']),严禁出现跨段数据污染。
  3. CONF-03 有效值判定单一信源确立:全面采纳 with_validity_check 高阶函数包装方案,作为全项目规约 4.2 min_valid_ratio=0.20 判定逻辑的唯一标准实现路径。
  4. CONF-04 底层计算引擎与依赖红线锁定:OLS 回归计算(trend_slopetrend_r_squared)纯采用 np.linalg.lstsq 进行矩阵求解,严禁引入 SciPy;单测必须强卡控其在极端情况下的数值精度。
  5. CONF-05 无风险利率参数化决策:公式中的 0.02(年化无风险收益率基准)严禁硬编码,必须作为 params.risk_free_rate_annual 节点写入 config/config.yaml,由代码运行时动态计算 weekly_rf
  6. CONF-06 纯函数接口契约冻结:锁定 calculate_stats()apply_standardization()remove_collinear_features() 三个公开函数的入参、出参及基础行为作为研发基线。
  7. CONF-07 单测组织与覆盖粒度确认:单测文件按 A/B/C/D/E 特征类拆分为独立测试类,且必须覆盖 38 维全量特征的精确度验证,不可抽样。
  8. CONF-08 T-1 验证构造策略确认:采用“2 个时间截面(t0, t1)极简 DataFrame”的方式,构造调用 apply_standardization() 后断言 t0 截面全为 NULL 的用例。
  9. CONF-09 预览文件物理标识机制确认standardization_params.parquet 必须增加 is_production_ready 物理列,全表填入 false,防止下游误读。
  10. CONF-10 物理目录结构变更批准:正式批准新建 data/models/ 目录用于存放预览级参数与特征列表产物。
  11. CONF-11 落盘形态架构变更确认:特征存储形态由长表变更为宽表(触发 CR-004),内存计算与最终落盘统一为宽表 Schema,废弃原 unpivot 转换链路。
  12. CONF-12 落盘物理参数延续确认:PyArrow 写入继续强制指定 row_group_size=100000(契合当前量级下 30MB/Group 的最优 Block Size)且采用覆盖写模式。
  13. 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 更新于 大约 6 小时 之前 · 2 修订