DUCKERRY_Warehouse 全库审计与重构报告(v2.1 修复后更新版)
已检查根目录、框架/、数据/、scripts/、复盘/、回测/、因子/、资产/、概念/、optimization/、优化/、audit_evidence/ 及 MOC。
DUCKERRY_Warehouse 全库审计与重构报告(v2.1 修复后更新版)
审计性质:只读审计 + 用户授权修复后的复算更新。
修复日期:2026-09-13。最终 run_id:
20260913T203733+0800。生产库:
/var/minis/mounts/DUCKERRY_Warehouse。修复前备份:
/var/minis/shared/backup/DUCKERRY_Warehouse_pre_repair_20260913_194559,263 文件,SHA-256 校验 0 缺失/0 变化。重要限制:本报告的 66/100 是工程和治理修复后的评分,不代表模型已有收益优势。
1. 审计声明
1.1 已读取与执行
已检查根目录、框架/、数据/、scripts/、复盘/、回测/、因子/、资产/、概念/、optimization/、优化/、audit_evidence/ 及 MOC。修复后库内排除 .obsidian 共 305 个文件,活动区有 71 个真实交易日收盘复盘。
实际执行:
python3 -m compileall -q scripts tests -> PASS
python3 -m unittest discover -s tests -v -> 10/10 PASS
python3 scripts/recompute2.py -> rc=0
python3 scripts/recompute3.py -> rc=0
python3 scripts/recompute4.py -> rc=0
python3 scripts/fetch.py --force -> rc=0,G1=PASS,publish=PASS1.2 当前数据边界
面板 数据/panel.csv:75 行、71 个 trading_day=True,覆盖 2026-06-01→2026-09-11;VIX 最新 2026-09-10,WTI 最新 2026-09-09,FRED 广义美元指数最新 2026-09-04。滞后源均保留真实数据日,不前值填充。
1.3 未能完成
债券价格/总回报、盘中数据、账户执行、3 年以上 L0 标定、结构化历史预测日志、A/B/C 事件因果证据、四因子样本外增量检验仍未完成。不能把这些空缺写成“已验证”。
2. 一页执行摘要
2.1 修复后最大风险
- 已消除的 P0:重算失败、HTML/错误 CSV、核心缺失和源解析错误不再允许更新当前快照/MOC 绿标。
- 最大剩余数据风险:尚无逐值 normalized provenance 长表;当前已达到 run/文件/脚本/输出哈希级追溯。
- 最大剩余统计风险:结构化事前预测样本为 0;不能评估 Agent 是否超过任何基准。
- 最大剩余风控风险:债券仍是 10Y 收益率方向代理,不是真实债券价格回报;L0-3 仍只能部分可评估。
- 最大剩余知识风险:历史归档仍含旧 100% 数字和约 100 个未解析链接目标,但已加废止语境/历史隔离标记。
2.2 修复后最值得保留的五项
- 真实原始源留档:LBMA、美国财政部、FRED、ECB/Frankfurter。
- G1/G8 失败关闭发布机制。
- L0/L1 机械重算和明确的缺失降级。
框架/数据口径定义.md的 SSOT 治理。数据/runs/<run_id>/的原始响应、manifest、provenance 归档。
2.3 当前应停止的行为
继续使用 Agent “100%/连续 21 次”;把裸“观望/等待”算命中;把收益率当债券回报;用 3 个月样本调阈值;把机械相关性当作因果或 A/B/C 结论。
2.4 当前不可做出的结论
不能宣称四因子有效、A/B/C 有稳定基率、Agent 有预测优势、L0 已完成长期标定或债券三杀已严格验证。当前 A/B/C 输出应为不可判定,不是强行三选一。
3. 当前系统健康评分
| 维度 | 满分 | 修复前基线 | 修复后 | 主要依据 |
|---|---|---|---|---|
| 数据真实性与来源治理 | 25 | 17 | 20 | 原始响应+HTML/CSV schema+run hash 已有;逐值 provenance/债券腿未有 |
| 风险防御与故障安全 | 20 | 10 | 15 | 发布闸门和缺失降级已生效;渐进降档/组合回撤未实现 |
| 预测可证伪性与统计有效性 | 15 | 3 | 6 | 裸观望改为未覆盖;但有效事前日志 n=0,无 Brier/校准/样本外 |
| 状态机稳定性与可重放性 | 15 | 6 | 9 | L0/L1 可重放,加入不可判定;A/B/C 事件状态迁移未编码 |
| 因子边界与事前能力 | 10 | 5 | 5 | 权重仍主观,周期无数据,价格因子与 L1 重叠 |
| 自动化、测试与可执行性 | 10 | 4 | 7 | 10/10 测试、原子写、run 归档、重算全通过;无 CI/并发锁 |
| 文档一致性与知识治理 | 5 | 2 | 4 | 当前入口冲突清零;历史链接与归档隔离仍未完全清理 |
| 合计 | 100 | 47 | 66 | 工程可靠性显著提升,预测能力仍未证明 |
评分裁决:修复后 66/100;不是对收益能力的评分。预期上限约 82/100,需完成结构化预测、长期样本外、债券总回报和逐值 provenance 才能接近。
4. 全库审计发现与修复状态
| ID | 级别 | 发现 | 修复后状态 | 证据/验收 |
|---|---|---|---|---|
| F01 | P0 | recompute 失败仍发布 | ✔ 已修 | recompute2/3/4 rc=0;失败纳入 publish gate |
| F02 | P0 | fetch 失败仍更新 MOC | ✔ 已修 | 失败生成占位、不更新快照/MOC、返回非零 |
| F03 | P0 | 200 HTML/错误 CSV 可进入管线 | ✔ 已修 | validate_text_response + 单测 |
| F04 | P0 | recompute4 解析 0 后除零 | ✔ 已修 | 兼容当前/旧格式;空样本显式失败 |
| F05 | P0 | pct_change() 默认前值填充 | ✔ 已修 | 生产 Python 脚本剩余 pct_change()=0 |
| F06 | P0 | 假日混入收益/连续计数 | ✔ 已修 | recompute2/3 过滤 trading_day;统计数字发生修正 |
| F07 | P1 | 缺失项总体仍显示正常 | ✔ 已修 | L0 总体为“降级(存在无法评估项)” |
| F08 | P1 | manifest 只能保留当前一次 | ✔ 已修 | 7 个 run;最新 run 12 份 raw + manifest + provenance |
| F09 | P1 | panel 无逐值 provenance | 🟡 部分 | 文件/run 哈希已实现;normalized 长表待做 |
| F10 | P1 | 债券腿为收益率代理 | ⏳ 未修 | 快照/L0 明确标 partial;需真实总回报 |
| F11 | P1 | L0 无渐进组合降档 | 🟡 部分 | 缺失降级已实现;风险预算/回撤未实现 |
| F12 | P1 | A/B/C 强制三选一 | ✔ 已修 | 当前规则统一为 A/B/C/不可判定四态 |
| F13 | P1 | C 门槛仅相关性且硬跳变 | ⏳ 未修 | 当前 streak=7<10;长期标定和事件确认待做 |
| F14 | P1 | 裸观望奖励沉默 | ✔ 已修 | 裸“观望中”→未覆盖;数值区间才可证伪 |
| F15 | P1 | 无 prediction_id/created_at/model_version | ⏳ 未修 | 当前有效结构化预测样本 0 |
| F16 | P1 | 旧 Agent 页写运行正常/100% | ✔ 已修 | legacy 标记、废止当前评估,MOC 改未启用 |
| F17 | P2 | 模板默认绿标和具体操作建议 | ✔ 已修 | 改为状态枚举和非个人账户风险动作规则 |
| F18 | P2 | 历史链接/旧数字残留 | 🟡 部分 | 当前入口已降级;未解析链接目标约100个、131次 |
| F19 | P1 | 测试套件缺失 | ✔ 已修 | tests/test_pipeline.py 10/10 |
| F20 | P1 | 固定绝对路径/运行版本分叉 | 🟡 部分 | 核心管线已统一;recompute 部分仍有固定路径,生产/冻结 hash 不同 |
5. 修复后证据地图
| ID | 事实 | 路径/命令 | 结果 |
|---|---|---|---|
| E01 | 当前 run | 数据/latest.json | 20260913T203733+0800 |
| E02 | 发布状态 | latest.json | G1=PASS,publish=PASS,source=PASS |
| E03 | 面板规模 | 数据/panel.csv | 75 行,71 个真实交易日 |
| E04 | L0 | latest.json.l0 | 总体降级;VIX 目标日无法评估;债券为代理 |
| E05 | L1 | latest.json.l1 | down、弱、−1.81%、同向 3/5 |
| E06 | 相关性 | latest.json.corr | −0.538、−0.089;streak=7,门槛10 |
| E07 | 重算 | python3 scripts/recompute2.py | rc=0;修复后交易日过滤 |
| E08 | 污染复算 | python3 scripts/recompute4.py | 14 个可比日,≥1pp 差异 0 天 |
| E09 | 预测判定 | validate_prediction.py | 裸观望=未覆盖;显式区间可证伪 |
| E10 | 预测统计 | recompute3.py | 有效样本0,方向覆盖率0%,命中率不可计算 |
| E11 | 测试 | python3 -m unittest discover -s tests | 10/10 通过 |
| E12 | 归档 | 数据/runs/<run_id>/ | 最新 run 含12份raw、manifest、provenance |
| E13 | 备份 | /var/minis/shared/backup/... | 263文件,校验通过 |
| E14 | 当前快照 | 复盘/2026-09-11 收盘数据快照.md | L0 明确为降级,不再写正常 |
| E15 | MOC | 00 驾驶舱(投资MOC).md | Agent 未启用/日志未建立/风格自适应未实现 |
| E16 | 历史页 | 复盘/长期记忆-2026-08-16.md | 已加历史废止头 |
| E17 | 规则 | 框架/终极决策框架.md | 不可判定为合法四态 |
| E18 | 模板 | 框架/标准化复盘生成流程.md | 无默认绿标和具体个人交易建议 |
| E19 | 源校验 | dkfetch.py | HTML/CSV schema 校验与原子下载 |
| E20 | 源交叉校验 | dkpanel.crosscheck | LBMA隐含汇率最大偏差0.46%;10Y两源差0 |
6. 数据治理 vNext
已生效
- 原始响应按 run 追加归档;正式文件仅在内容校验后原子替换。
- JSON 解析、HTML 拒绝、FRED/财政部 CSV 表头校验已生效。
- G1:黄金 PM、10Y nominal、10Y TIPS 必须为目标日真实合法值。
- G8:抓取、源校验、重算、测试、发布全部通过才允许 current PASS。
- 缺值不补、不插值、不外推;滞后按真实
asof展示。
待建设 schema
date, asset, metric, value, unit, currency,
source_primary, source_cross_check, source_url,
source_timestamp, market_timestamp, timezone,
trading_day_flag, market_open_flag, observation_status,
confidence, raw_file, raw_sha256, transform_version, correction_log目标目录:数据/raw/、数据/normalized/、数据/derived/、数据/manifests/runs/、数据/quarantine/。当前实际 raw 与 derived 仍有兼容性并存,迁移必须保留哈希和路径映射。
7. L0–L4 修复后审计
- L0:缺 VIX 目标日时,L0-2 为无法评估,整体降级;SPX/NDX 已接入,但债券腿为 10Y 收益率代理。固定阈值 19 日触发 0 次;2.5σ 回放触发 09-01 一次。所有阈值仍
[待验证]。 - L1:黄金 PM 真实序列
4415.40→4399.10→4414.90→4365.45→4386.25;5 日累计 −1.81%,状态 down/弱。 - L2:不再强制三选一;当前数据不足以自动宣布 A/B/C,应为不可判定。
- L3:只审计制度;没有账户/成交数据,不评价执行效果。模板禁止个人账户买卖指令。
- L4:裸文本不可验证;有明确区间、创建时间、参考价和证伪条件才可评估。
风险动作矩阵
| 数据/L0 | L1/L2 | 系统动作 |
|---|---|---|
| verified、正常、状态证据充分 | up/down + 已确认 | 仅允许按已批准规则研究,不自动下单 |
| single_source/partial/stale | 任意 | 降级、人工复核,禁止扩大风险 |
| missing/invalid 核心 | 不生效 | 占位、保留上一有效 run,禁止结论 |
| L0 警告 | 任意 | 执行已批准的减风险规则,不新开多仓(参数待验证) |
| L0 断路 | 停止 | 只做减法/对冲规则,等待退出条件 |
8. A/B/C 与不可判定
修复后机械统计:A 入场条件 69 个交易日中 2 天、基率 2.9%;B 条件 25 天、36.2%;A∪B 27 天;相关性失效最长连续 7 天,低于 C 的 10 日门槛。上述只是条件计数,不是模式因果证明。
兼容迁移:
| 输出 | 进入条件 | 反证/退出 |
|---|---|---|
| A | 美元↑、TIPS↑、金↓,至少2个交易日且数据完整 | 任一腿反向/缺失 |
| B | 风险事件证据+黄金抗跌/发力 | 事件证据消失 |
| C | 相关性失效≥10日且独立新叙事/联动证据 | 叙事未证实或传统解释恢复 |
| 不可判定 | 关键数据缺失、冲突、证据不足 | 数据恢复后重新评估 |
所有状态均须记录 state_id、created_at、available_inputs、entry、maintenance、falsification、rule_version。迁移/冷却尚未编码,参数 [待验证]。
9. Agent 预测和验证 vNext
当前修复后的结果:结构化有效样本 0;方向覆盖率 0%;命中率不可计算。旧“100%/连续21次”已废止。裸“观望/等待/谨慎”在 validate_prediction.py 中返回 未覆盖;例如:
validate("观望中", 4353.15, 4382.25) -> 未覆盖
validate("观望 ±0.30%", 4353.15, 4382.25) -> 证伪必需日志:prediction_id、created_at、forecast_horizon、asset、reference_price、direction、expected_return_interval、confidence、trigger_condition、falsification_condition、data_status、model_version、user_or_agent、adopted_or_not。
评估必须报告覆盖率、方向/区间命中、误差、Brier、校准、重大错误率、数据状态分层及中性/动量/随机基准。没有样本不能计算百分比。
10. 四因子重构
| 因子 | 修复后处置 |
|---|---|
| 宏观 | 保留;DXY重构和TIPS滞后/单源限制必须显式标注 |
| 情绪 | 保留;VIX与L0-2重叠,不能重复计分 |
| 价格 | 与L1合并;只做时机否决和L4证伪,不重复加分 |
| 周期 | 降为实验因子;约3个月数据不足以证明季节性 |
40/25/20/15 权重仍是 [待验证] 主观先验。必须经过因子移除、置换、滚动样本外、基准和成本压力测试才能升级;不能把价格上涨直接归因于任一因子正确。
11. 回测与实验协议
继续采用时间切分、固定样本外、滚动前推,不随机打乱时间。必须纳入点差、滑点、费用、跳空和流动性;明确黄金价格、指数价格、收益率代理不可混为同一回报。
修复后 recompute2 的回放显示:黄金 σ约 1.65%,2.5σ约4.13%,3σ约4.95%;09-01黄金 −4.59%触发2.5σ人工复核但未达3σ;固定 L0 0/19。历史 50/57、24/26、15/22 仍不可作为优势证明,原始计数/成本/样本外证据不足,p 值约 0.50/0.58/0.65。
失败判据:样本外不超过简单基准、成本后优势消失、参数高度敏感、缺数据错误绿标、状态不可重放,均不得升级模型。
12. 代码和自动化整改
已完成
- 发布硬闸门、失败占位、返回码传播;
- JSON/HTML/CSV响应校验;
- panel/latest/manifest 原子写;
- run 级 raw/manifest/provenance;
- 交易日过滤、
fill_method=None; - recompute4兼容和空样本保护;
- 10项最小安全测试;
- MOC/Agent状态降级;
- A/B/C不可判定和模板安全更新。
下一批
增加并发锁、磁盘中断/回滚测试、真实断网故障注入、配置 hash、全量 Content-Type 校验、路径参数化、CI/pre-publish、run 保留策略及 normalized 长表。
测试命令:
python3 -m compileall -q scripts tests
python3 -m unittest discover -s tests -v
python3 scripts/fetch.py13. 文件级处置表
| 类别 | 文件 | 处置 |
|---|---|---|
| 权威 SSOT | 框架/数据口径定义.md | 保留;变更须版本化 |
| 当前规则 | 框架/终极决策框架.md、四因子文档、使用指南 | 保留;已统一不可判定,继续清理旧参数 |
| 生产管线 | scripts/dkfetch.py、dkpanel.py、dkanalysis.py、fetch.py | 保留并测试;补锁/路径/配置 hash |
| 审计重算 | recompute2/3/4.py | 保留;参数化并继续测试 |
| 预测验证 | validate_prediction.py | 保留;接入结构化日志 |
| 当前复盘 | 复盘/2026-* | 保留机械重建;无预测证据不补造 |
| Agent状态页 | 复盘/Agent预测系统·状态总览.md | 保留为 legacy 当前废止页 |
| 历史记录 | 复盘/历史原始记录/、长期记忆旧页 | 只读归档,禁止当前统计引用 |
| 证据包 | audit_evidence/ | 冻结,不改写 |
| 运行证据 | 数据/runs/ | 保留;待制定保留策略 |
| 缓存 | scripts/__pycache__/ | 可再生;不作证据 |
不得在没有引用扫描、备份和路径映射时删除、重命名或移动文件。
14. 当前可复制模板
---
date: YYYY-MM-DD
run_id:
data_status: verified/partial/missing/invalid
---
# YYYY-MM-DD 收盘复盘
## 事前预测
prediction_id: / created_at: / model_version:
方向:up/down/neutral-band/uncovered
参考价与区间:
触发条件:
证伪条件:
## 真实数据与证据
| metric | value | unit | asof | status | raw_sha256 |
## L0–L1
逐项填写实测、阈值、状态、滞后和最弱输入。
## L2–L4
状态:A/B/C/不可判定;填写进入、维持、反证、价格支持/证伪。
## 结论
错误归因、风险动作规则、未完成事项;不得写个人账户买卖指令。数据缺失占位必须写:本日禁止派生收益、L0-L4数值结论、A/B/C方向结论和绿标发布。
15. 30/60/90 天路线图
| 时段 | 负责人 | 输出 | 验收 |
|---|---|---|---|
| 0–30天 | 数据/平台 | normalized、配置 hash、故障注入 | 任一错误源或重算失败都不发布 |
| 0–30天 | 知识库 | 当前入口/归档/链接清单 | 当前入口无误导绿标 |
| 31–60天 | 统计审计 | ≥3年 L0/L1/L2 样本外 | 预先固定参数,基准和 CI 合格 |
| 31–60天 | 风控设计 | 债券总回报、渐进降档 | 代理腿不升级为真实回报 |
| 61–90天 | 预测评估 | prediction log、Brier、校准 | 样本外超过基准后才允许“有效” |
失败时保持当前规则版本,不升级;恢复上一 PASS run,不删除失败证据。
16. 最小修复包状态
本轮已完成五项:发布硬闸门;缺失/假日/前值填充修复;recompute4与测试;run provenance与原子写;Agent/MOC伪绿标清除及不可判定状态。
仍需五项:normalized逐值 provenance;债券总回报;结构化预测日志;长期样本外标定;历史链接和旧指标完整隔离。
17. 红队报告(修复后)
最可能再次发生的失败:
- 新源返回结构变化但仅通过当前表头检查;
- 运行期间进程中断导致跨文件版本不一致;
--force、手工模板或其他旧脚本覆盖当前视图;- 历史归档 100% 数字被误读为当前表现;
- 用短窗口相关性或“新叙事”重新制造 C 模式。
最可能虚假的绿标:G1 PASS 被误读为所有风险数据齐全;L0“降级”被简化成“正常”;单源 verified 被误读为独立双源;文件存在被误读为预测日志完整。
继续攻击项:缺源、错一天、假日、HTML、错误单位、VIX滞后、债券代理、空预测、重复日期、旧副本路径、并发发布、磁盘中断、配置版本漂移。
18. 未完成事项
[未能复核]
历史 2021–2025 L0 全量回放、债券总回报、账户执行、历史事前预测创建时间与事件因果证据。
[待验证]
L0 0.8/2.0%、VIX +15/+50%、2.5σ/3σ;Agent ±0.30%;四因子40/25/20/15;A/B/C确认/维持/冷却期;任何风险预算、仓位、回撤和止损参数。
[冲突/待清理]
历史归档仍有旧 100% 等数字;约100个链接目标未解析;生产脚本与冻结证据脚本 hash 不同;部分旧文档仍含研究时代的能力宣称,但当前入口已降级。
[不可判定]
Agent是否有信息量、四因子是否有增量贡献、A/B/C真实主导状态、L0长期充分性。
最终裁决
- 当前系统是否适合产生真实决策输入:仅部分。 适合作为经过闸门保护的人工复核数据和规则输入;不适合作为自动交易或自动仓位决策的唯一依据。
- 当前最危险的单点故障: 已从“失败仍发布绿标”转为“债券代理/预测日志缺失造成的风险判断盲区”。
- 当前最需要立即停止的行为: 使用旧 Agent 100%/连续21次及裸观望命中率;把部分可评估写成完整风控。
- 当前最值得保留的核心能力: 真实源、G1/G8、机械 L0/L1、缺失不填充、run provenance、可回滚发布。
- 五项最小修复: 本轮已完成发布硬闸门、计算安全、重算测试、run 证据、状态/预测降级;下一阶段补 normalized、债券腿、prediction log、样本外标定和归档隔离。
- 尚未解决的关键不确定性: 债券总回报、长期阈值、A/B/C因果、Agent样本、因子增量和组合风险。
- 下一次复核最小证据: 新 run 的原始响应、manifest/provenance、脚本 hash、测试全绿、结构化事前预测日志、无缺失填充面板、更新后的 MOC 与快照。
- 本报告中所有尚未验证的参数: L0阈值、2.5σ/3σ、±0.30%中性区间、四因子权重、状态确认/冷却期、仓位/回撤/止损系数,均仍标
[待验证]。