Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ data → universe → factors(特征) → alpha(合成/预测) → portfolio(+ri

## 开发约定
- **交流中文**;代码/注释/commit message 用**英文**。
- **Git**:feature 分支 + PR。**PR #1(P0+P1)、#2(P2-1)、#3(P2-2)、#4(进度文档)、#5(P2-3)、#6(进度文档)、#7(P2-4)、#8(进度文档)、#9(P3-1)、#10(进度文档)、#11(P3-2)、#12(P3-3)、#13(进度文档)、#14(P3-4)、#15(进度文档)、#16(P3-5)、#17(进度文档)、#18(P3-6)、#19(P3-7)、#20(进度文档)、#21(P3-8)、#22(进度文档)、#23(P4-1)、#24(进度文档)、#25(P4-2)、#28(tushare 权限/限频探测 + capability registry)、#29(I1–I4 分钟级 intraday pipeline,4 commit 一 PR)、#30(进度文档)、#31(P4-3 因子支撑端点缓存 + 21:00 data updater,2 commit 一 PR)、#33(P-I5a 事件驱动回测架构重构 + opt-in 分钟尾盘 event model,4 commit 一 PR)、#35(P-I5b 分钟尾盘执行期 raw stk_limit 涨跌停可行性,4 commit 一 PR)、#37(P-I5c MMP 分钟因子端到端 opt-in alpha)、#39(P-I5d MMP 五分位分组回测 standalone,含 I5c plumbing)、#41(数据层 D1 契约文档 + token 解析去重)、#43(数据层 D2 TushareCache specs/parsers 拆分)、#45(数据层 D3 report-only 数据质量层)、#47(数据层 D3b default-off `data-update` 质量报告钩子)、#49(数据层 D4 coverage ledger 批量写 + 进程内查找缓存)、#51(数据层 D5 opt-in 有界并发 + 全局限频器)、#53(P-I5e MMP 五分位 CSI300 独立泛化检验,负结果)、#55(P-I5f 分钟尾盘执行流动性/容量诊断,report-only)、#57(数据层 schema 注册表 + default-off drift 守卫)、#59(数据层 全A 增量 auto-warm + systemd 定时,default-off)、#61(数据层 全A 历史回填 `data-backfill`,分块/续跑/失败隔离)、#62(进度文档)、#63(因子评估契约层 `analytics/eval/` + StandardFactorEvaluator + dashboard + PR-C 因子,4 commit 一 PR)、#64–#73(PR-D…PR-M 十个分钟因子复现,**一因子一分支一 PR**)、#74(因子评估契约 v0.8 + v0.9 判定门修复)、#75(尾盘执行价 VWAP + 分钟持有期收益复权)、#76(报告披露修正 + I5f 名义按真实规模重测)、#77(`adj_factor` 下降质量检查)、#78(#76 的 follow-up:扫描式正则守卫被七种改写实测证否 → 闸门描述改单一来源)、#79(十一因子改 14:51 VWAP exec-to-exec 基准,**评审未返回、靠自查合并**)、#82(闸门/成交价描述全仓清扫,12 处;#78 守卫射程不足的修正)、#80(进度文档)、#84(因子层重构 D0 纸面契约:availability policy 常量 + 预指派表 + 性质编目)均已 merge 到 `main`**;**OPEN 未合并:#38**(见 P-I5d 处置,未获授权关闭)。commit 用 conventional 格式,**无 attribution**(不加 Co-Authored-By)。
- **Git**:feature 分支 + PR。**PR #1(P0+P1)、#2(P2-1)、#3(P2-2)、#4(进度文档)、#5(P2-3)、#6(进度文档)、#7(P2-4)、#8(进度文档)、#9(P3-1)、#10(进度文档)、#11(P3-2)、#12(P3-3)、#13(进度文档)、#14(P3-4)、#15(进度文档)、#16(P3-5)、#17(进度文档)、#18(P3-6)、#19(P3-7)、#20(进度文档)、#21(P3-8)、#22(进度文档)、#23(P4-1)、#24(进度文档)、#25(P4-2)、#28(tushare 权限/限频探测 + capability registry)、#29(I1–I4 分钟级 intraday pipeline,4 commit 一 PR)、#30(进度文档)、#31(P4-3 因子支撑端点缓存 + 21:00 data updater,2 commit 一 PR)、#33(P-I5a 事件驱动回测架构重构 + opt-in 分钟尾盘 event model,4 commit 一 PR)、#35(P-I5b 分钟尾盘执行期 raw stk_limit 涨跌停可行性,4 commit 一 PR)、#37(P-I5c MMP 分钟因子端到端 opt-in alpha)、#39(P-I5d MMP 五分位分组回测 standalone,含 I5c plumbing)、#41(数据层 D1 契约文档 + token 解析去重)、#43(数据层 D2 TushareCache specs/parsers 拆分)、#45(数据层 D3 report-only 数据质量层)、#47(数据层 D3b default-off `data-update` 质量报告钩子)、#49(数据层 D4 coverage ledger 批量写 + 进程内查找缓存)、#51(数据层 D5 opt-in 有界并发 + 全局限频器)、#53(P-I5e MMP 五分位 CSI300 独立泛化检验,负结果)、#55(P-I5f 分钟尾盘执行流动性/容量诊断,report-only)、#57(数据层 schema 注册表 + default-off drift 守卫)、#59(数据层 全A 增量 auto-warm + systemd 定时,default-off)、#61(数据层 全A 历史回填 `data-backfill`,分块/续跑/失败隔离)、#62(进度文档)、#63(因子评估契约层 `analytics/eval/` + StandardFactorEvaluator + dashboard + PR-C 因子,4 commit 一 PR)、#64–#73(PR-D…PR-M 十个分钟因子复现,**一因子一分支一 PR**)、#74(因子评估契约 v0.8 + v0.9 判定门修复)、#75(尾盘执行价 VWAP + 分钟持有期收益复权)、#76(报告披露修正 + I5f 名义按真实规模重测)、#77(`adj_factor` 下降质量检查)、#78(#76 的 follow-up:扫描式正则守卫被七种改写实测证否 → 闸门描述改单一来源)、#79(十一因子改 14:51 VWAP exec-to-exec 基准,**评审未返回、靠自查合并**)、#82(闸门/成交价描述全仓清扫,12 处;#78 守卫射程不足的修正)、#80(进度文档)、#84(因子层重构 D0 纸面契约:availability policy 常量 + 预指派表 + 性质编目)、#85(进度文档)、#86(因子层重构 D1:registry + PanelField requires + FactorSpec 契约 v1.0)、#87(因子层重构 D1 面板冻结:14 因子 raw 基线 + manifest)均已 merge 到 `main`**;**OPEN 未合并:#38**(见 P-I5d 处置,未获授权关闭)。commit 用 conventional 格式,**无 attribution**(不加 Co-Authored-By)。
- **不过度设计**:按路线图 MVP 先打通一条端到端链路,再加层(architecture.html §11,Phase 0→3)。
- **secrets** 一律走外部 `.config.json`;repo `.gitignore` 已排除数据产物(`*.parquet`等)、缓存、`tmp/`(仅留架构文档)。
- 文件小而专(<800 行),immutable 优先。
Expand Down Expand Up @@ -366,6 +366,8 @@ data → universe → factors(特征) → alpha(合成/预测) → portfolio(+ri
- **五项拍板决策**(2026-07-23 用户逐项确认):① 全线深度(bitwise 验收退役 → 语义对账四腿;旧 demo 锚保到 D1 末 → D2 冻 provisional → D6 转正);② 运营形态 = **日频 14:50 决策 / 14:51 执行**(当前侧重投研;实时 = 决策点批处理 + 同一 cache,不建流式引擎);③ 存量机器全部迁移(真实目标 = 杀第二条因子取数路径,编排/分析逻辑留代码);④ 收官全量重评估 **只跑 exec**(close 口径从评估契约退役,decision-view 因子簿关闭 with_book close(d) 混用活缺陷);⑤ 爆炸半径 = 因子侧全重写,data 层与 runtime 事件引擎/fills 与 `analytics/eval` 统计裁决核**保留**。设计文档 `tmp/design/factor_refactor_design_v3.md`(v3.2,SER8 同步)。
- **对抗性审查**(8 角色 Opus 4.8 max effort + 20 kill agent,~3.07M tokens):53 发现,20 HIGH/CRIT 经交叉证伪 **1 存活 / 6 削弱 / 13 被杀**;24 条修订 R1–R25 折入 v3.2(综合报告 `tmp/design/review_round3_v32_revision_list.md`,含被杀档案**禁翻烧饼**)。唯一完整存活的 HIGH 是设计文档自身的事实错误:「峰/岭/谷分类 ≥5 处重复」与代码相反——实为 author-once 单点定义(`intraday_volume_prv.py::peak_mask_for_symbol`,6 模块 import 复用),已更正并撤回 #78 援引;primitives 层理由重述为 surface 蔓延 + 延迟承重(实测 11 因子朴素逐读 ≈58s vs 共享读 ≈17.6s)。审查另发现当前 `main` 潜在缺陷:**回测 `_build_cache` 不传 fina 400 天 `recent_tail_overrides`**(仅 data-update 路径有),晚披露财务在纯回测 read-through 下可能漏抓——修复排入 D3 前置。
- **D0(PR #84,纯附加 +1148/−0,无引擎代码)**:`data/availability_policy.py`(§1.3 policy 表代码常量单一来源:**字段级 market_daily**——decision 视图仅 `open` 当日合法;3 处 DOMAIN ASSUMPTION 显式标注;修订视界从调用方传入的 config 值派生、**禁硬编码 14/400**、fina 缺 override 即 raise;端点封闭性 `require_known_source`;视图×基准配对合法性;`adjustment`/`overnight_boundary` 三值枚举单一来源)+ 30 测试(含对 `data/cache` 端点常量的真 drift guard、frozen 真赋值断言、bool-混入-int 守卫的 mutation 有牙实证)+ `docs/factors/refactor_d0_contract.md`(收官 14 因子 adjustment/overnight_boundary **预指派表**带 file:line 证据——9 RETURNS_INVARIANT / 5 NONE / 0 PRICE_LEVEL,`valley_price_quantile` = CROSSED_DISCLOSED,另发现 `minute_ideal_amplitude` 以 raw close 跨日池化排序 → CROSSED_DISCLOSED 候选、偏差测量义务留 D2;11 类性质**双向编目**,107 个既有测试引用逐一核实存在,NET-NEW 性质钉 D 格:adjustment→D3、overnight_boundary→D2、单点填≡批量填→D4、视图隔离→D1/D3/D4)。
- **D1(PR #86 + #87,整步已关账)**:① registry + requires(PR #86,+1751/−69)——`factors/registry/`(register/build/requirements + 显式 builtin 列表 + 三时点命名校验)、`PanelField`(endpoint-only,构造期 `require_known_source`)、FactorSpec **契约 v1.0**(三个必填声明维 requires/adjustment/overnight_boundary,值域引用 D0 枚举;既有 metaclass 双检/预注册/property-spec 全不削弱)、18 个 Factor 类全部落声明(14 收官因子照 D0 表逐行、21 行参数化测试锁死;日频因子逐类带证据派生)、`qt/pipeline._build_factors` if/elif 链退役为纯 `registry.build()`。**因子数学零改动三重证**:compute 文件删除行仅 4 条相同 import / 评审逐 hunk 扫 `def compute` 零命中 / phase0 锚逐字不变。评审 APPROVE-WITH-NITS(1 MEDIUM 经裁定为 diff 基线假象——分支切在 #85 之前,三点 diff 证实未碰 AGENTS/CLAUDE;1 LOW 前瞻记录)。两处披露的行为差异:unknown 因子名提前到 config 解析期报错;旧链对每因子 eager 算 `int(params.get("window",20))` 的 accidental ValueError 不再复现(实证无依赖)。gates:1879 passed / ruff / 31 configs / 锚不变 / secret 0。
- ② **面板冻结**(PR #87,v3.2 §五第 4 腿/R11,D5 逐格对账的唯一基线):`qt/panel_freeze.py`(**零公式重抄**——分钟因子调各 runner 私有 `_load_*_panel`、常数从 runner 模块对象引用、书因子走 `_build_book_factors`;canonical content hash = sha256(排序索引串行化+float64 原始字节),NaN payload 归一、±0.0 保留区分;原子写;`--resume` 从严——读回文件也重过 process+对账+重算哈希)+ 23 测试(NaN payload mutation 证据、写中途失败原子性实测)+ manifest 入 git(producing SHA 钉 `3669c90`——**先跑后 commit** 使 run 时 tracked 树逐位 = main;provenance 规则原文在案)。真实 run:14/14 面板(网格 1,158,912/1,159,263 行,CSI500 996 成分 1210 交易日,2.79 亿行 raw 1min),`stk_mins_live_calls=0`,**写盘前对账 11/11**(mismatch 即 raise 不落盘;书因子无覆盖字段可对账、照实披露不假装,证据换双跑+跨 run 同哈希+全网格行数恒等),确定性双跑 3/3 跨进程一致;两段 run(会话限额 60min 杀首段 → resume)与首段日志丢失(`_make_logger` truncate)均如实披露。评审 **APPROVE 零发现(含 LOW,本轮首次)**:逐参数镜像比对调用点、14/14 行 doc↔json 程序化核对、3 面板盘上重算哈希、独立 secret 扫描 17 文件 0 命中。gates:**1902 passed** / ruff / 锚不变 / 31 configs。
- 验收:独立对抗评审 **APPROVE-WITH-NITS**(0 CRIT/HIGH/MED,1 LOW 当场修 + mutation 证据 rc=1/rc=0);lead 独立重跑 gates:pytest **1806 passed**(= 1776 + 30)、`ruff` clean、`validate-config` 31/31、phase0 锚 **0.9600/0.8408 不变**、diff secret scan 0。执行流程:实现与验收均由 subagent 承担、lead 把控(含 5h 窗 <10% 不开新 subagent 的节流规则)。
- ✅ 质量门(**当前 `main` @ `f432dc5` 实测**:`python -m pytest -p no:warnings` **1776 passed**、`ruff` clean、`validate-config` **31/31 配置逐个 OK**、`run-phase0`(demo)**ic 0.9600 / annual 0.8408 不变**)。构成对得上:`aa19968` 实测 **1740** → #78 加 2(含钉住破折号闭合的那条)= **1742** → #79 加 34(两个新测试文件,0 个既有测试被挤掉)= **1776**。新增测试分组(`--collect-only` 实数,`aa19968` 口径):**因子评估契约层 contract=337 + standard=113 + figures=7 / 十一因子(factor + eval runner,21 文件)=421 / PR#75 exec-vwap-basis=46 / D3 market quality 15→21(含 #77 `decreasing_adj_factor` 及其相对-vs-绝对尺度 mutation 测试)**。历史分组(旧 793 基线):`pytest` **793 passed**(P0=97 / P1=78 / P2-1=22 / P2-2=22 / P2-3=14 / P2-4=8 / P3-1=10 / P3-2=18 / P3-3=16 / P3-4=15 / P3-5=22 / P3-6=27 / P3-7=25+1 throttle / P3-8=8 / P4-1=28 / P4-2=17 / **intraday I1 schema=14 + feed=9 / I2 cache=10 / I3 aggregate=13 / I4 execution=10 / P4-3 cache=10 + updater=7 / P-I5a event-backtest=19 / P-I5b exec-feasibility=16 / P-I5c mmp-minute=18 / P-I5d mmp-quintile=19 / P-I5e 仅 config(无新测试,`test_cache_config` 的 config glob 自动 +1)/ P-I5f intraday-liquidity=17(+ `test_cache_config` config glob 自动 +1)/ D1 token-dedup index-feed +2 / D2 cache-modularization +5 / D3 data-quality market=15 + intraday=12 + report=14 / D3b data-update-quality=18 / D4 coverage-ledger-scaling=13 / D5 scheduler=9 + concurrency=12 / schema-registry-guard=62 / all-A-incremental=12 / all-A-backfill=22**);当时 `ruff` clean、`validate-config` 20 配置(data_update + phase_i5a…phase_i5f)+ `run-phase0`(demo)均 OK(**ic 0.9600 / annual 0.8408 自 P0 起从未变过**)。
- ⚠️ 剩余(已显式披露):日线 only、demo 路径非真数据、旧三因子无信号(P3-3/P3-4 实证;但其组合在 2024-2026 holdout 上 SSE50/CSI300/CSI500 全正、CSI500 高达 +17.8%——小样本/regime 翻转的持续例证);value/低波信号获得**独立样本符号级确认**(P3-7 SSE50/CSI300 量级衰减;P3-8 CSI500 泛化成立且更强),组合级盈利能力仍未确立(排名跨 cell 翻转);subset 报告文件名已可配置(P3-8 起不再互覆盖)。**分钟因子侧新增披露**:十一个复现因子全部 EXPLORATORY、**封顶 Watch,无一到 Adopt**,1× 费率下净多空为正的只有 2 个(PR-F/PR-L,且 PR-L 扛不住 2×)——**IC 强 ≠ 可交易**;MMP 的唯一正面证据(I5d)在修正引擎上退化、I5e 负结果加强;I5f 的容量结论已按**真实 100 万名义**重写(1000 万口径的"约半数不足"作废);**日频除权审计已完成**(GENUINE、无 vintage 接缝、评估池暴露 1/603,258,不重述任何因子结果),**分钟路径的复权缺陷已在 PR #75 修**;exec-to-exec 改基准已随 **PR #79 合并**,close-to-close 与 exec 两套 artifact 并存;⚠️ **#79 的 code review 未返回、靠自查合并**,其"未独立核"清单(五条 mutation 声称 / 十一个 runner 改动是否机械等同 / `execution_capacity` 透传)仍待后续检查——若查出问题,重述 exec 基准数字而非 close-to-close;schema 守卫**仍未接** live `data-update` 暖跑路径;HTML compendium(`artifacts/reports/factor_compendium.html`)**还读 v0.8 结果,待按最终结果修订**。
Expand Down
Loading