数据勘误报告 · 2026-09-09
原表头写 变化,但同一张表里:
数据勘误报告 · 2026-09-09
触发:全库口径一致性审查(自动化脚本产出内容的逻辑与数据校验)
范围:
DUCKERRY_Warehouse全库 104 个文件备份:
/var/minis/shared/backup/DUCKERRY_Warehouse_backup_20260909_134843(115 文件,逐一 md5 校验一致)口径基准:框架/数据口径定义(本次新建,全库唯一口径来源)
一、结论速览
| # | 问题 | 严重度 | 影响面 | 处置 |
|---|---|---|---|---|
| 1 | 08-27→09-08 行情为线性外推,非真实数据 | 🔴 致命 | 13 份复盘 | 已加显著警告横幅,禁止用于决策,待回填 |
| 2 | "变化"列单位混用:pp 与 % 不分 | 🔴 高 | 全库每日表 | 已按口径重算(价格=%,利率=pp) |
| 3 | 实际利率与 10Y TIPS 被写成两个数(2.60% vs 2.40%) | 🔴 高 | 13 处 | 已统一为同一个数 |
| 4 | 周末被计为交易日,"C模式连续23个交易日"虚高 | 🟠 中高 | 13 份 + MOC | 已改为 17 个交易日(自然日单列) |
| 5 | 动量序列与收盘价序列不一致(18/18 全错) | 🟠 中高 | 18 份 | 已用真实收盘序列替换 |
| 6 | 准确率三版并存:100% / 80.0% / 68.4% | 🟠 中高 | MOC + 复盘 | 已统一公式,实测 79.3%(23/29) |
| 7 | 驾驶舱明细表 34 行日期列全部破损(残留 ]]) | 🟠 中 | MOC | 已重建为标准 4 列表 |
| 8 | L1 动量两条子规则互相冲突,同一数据可判 up 也可判 neutral | 🟠 中 | 框架 | 已定优先级并重算 20 份结论 |
| 9 | A-B-C 判定两套判据(评分制 vs 持续天数制) | 🟠 中 | 概念/框架 | 已指定框架版为权威,废止评分制 |
| 10 | 资产/黄金.md 把实际利率定义写错 + 动量门槛 8% 与框架 3% 冲突 | 🟡 中 | 资产页 | 已修正 |
| 11 | L0 断路器阈值实际不可触发,13 份复盘只写"正常"未评估 | 🟡 中 | 复盘 | 已补 13 份逐项扫描表;阈值待用户确认 |
| 12 | Agent 日度验证率 100% 不可证伪 | 🟡 中 | 复盘 | 已标注"不作为模型有效性依据" |
| 13 | refactor_md_ios.py 字典 🟠 键重复定义被静默覆盖 | 🟡 低(潜伏) | 脚本 | 已修,库内暂无 🟠 故未造成损失 |
| 14 | 数据库说明.md 统计陈旧 + 权重示例合计 260 | 🟡 低 | 说明文档 | 已重算并加口径约束 |
二、🔴 致命项:08-27 起行情是编的(脚本自证)
证据链
- 脚本自己承认:13 份文件尾部均有
<!-- data_verified: false / status: 待复核 / 数据来源: 线性外推 -->(HTML 注释,Obsidian 阅读态不可见 → 危险)。现已改写为正文可见横幅。 - 文体断崖:08-26 及以前 200–215 行/篇,08-27 起骤降为 75 行固定模板,缺 开盘价、振幅、日内走势、验证分析、反直觉应用、关键事件回溯、结构性观察、风格验证、明日展望 等 9 个段落——违反库内自订的 框架/模板/标准化复盘生成流程。
- 等差数列特征:
| 指标 | 08-27→09-08 序列特征 | 每日增量 | 现实性 |
|---|---|---|---|
| DXY | 98.36→98.00 | 恒定 -0.03/日 | 48 天不动一天?不可能 |
| 10Y TIPS | 2.48→2.60 | 恒定 +0.01pp/日 | 同上 |
| VIX | 15.21→14.75 | 单调递减 | 无一日反弹 |
| 黄金 | 4398.30→4437.80 | 连涨 13 日、零回调,日均 +3.0 | 13 日零回调极不现实 |
| WTI | 82.90→83.35 | 恒定 +0.15/日 | 同上 |
- 系统日志自证矛盾:
logs/automation_20260816.log写着今日非交易日,跳过自动化流程(08-16 是周日)——系统本有"周末≠交易日"的判断,但塌缩版模板照样给 08-22/23、08-29/30、09-05/06 编了收盘价。weekend 共 6 天。
处置
- ✔ 13 份文件顶部加正文可见警告横幅(
extrapolated) - ✔ 所有引用这些数据的汇总位(MOC、数据库说明)标注"待回填"
- ✘ 未伪造真实价格——外部行情不可推算,须由数据源回填后重算全部派生指标
三、单位口径:同一个"变化"列表达两种含义
原表头写 变化,但同一张表里:
| 行 | 标注 | 实际含义 | 真值 |
|---|---|---|---|
| 黄金 4434.20→4437.80 | +0.08% | 真·百分比 | +0.0807% ✓ |
| WTI 83.20→83.35 | +0.15% | 绝对点差 | 应为 +0.18% ✗ |
| VIX 14.78→14.75 | -0.20% | 真·百分比 | -0.203% ✓ |
| DXY 98.03→98.00 | -0.03% | 点差(巧合接近) | -0.031% |
| 10Y 4.80→4.81 | +0.01% | 绝对点差 | 应为 +0.01pp(若按%是 +0.21%)✗ |
为什么这不只是排版问题:利率用
%表达到处传播后,与 L0/L2 的阈值("变动 >0.05% 计入评分")比较时量纲不一致,等于阈值被放大了约 20 倍——实际利率单日 +0.2%(=20bp.pp)会被误判为未达阈值。
已修:全库每日表下方加统一脚注;价格类=百分比,利率类=pp。
四、"实际利率"被当成两个不同的东西
资产/黄金.md 原文:
关注美元指数、实际利率(10Y TIPS 名义利率差)
这是定义错误:实际利率 = 10Y TIPS 收益率本身;名义 − TIPS 是盈亏平衡通胀(breakeven),另一回事。
错误定义直接导致复盘里出现:
10Y TIPS 2.60%,实际利率 2.40%,美元指数 98.00
两个数同时出现在一行,差值恒为 0.20(13/13 份如此)——即脚本硬编了一个假的 20bp 利差。
已修:定义改正;复盘内统一为 实际利率 = 10Y TIPS = X%,不再并列两个值。
五、动量序列 ≠ 收盘价序列(18 份全错)
任意抽查 08-22:
| 位置 | 内容 |
|---|---|
| 表内 5 日收盘 | 4382.50, 4379.80, 4382.15, 4386.80, 4385.20 |
| 第三节"序列" | 4382.15, 4379.80, 4382.50, 4384.20, 4385.20 |
序列里出现 4384.20,而当天收盘是 4386.80。更明显的是:真实收盘有涨有跌,序列却被抹成近乎单调——动量结论建立在被平滑过的假序列上。
已修:20 份复盘的序列改为真实收盘序列,并按 §五 优先级重算方向/强度。
附带发现的逻辑漏洞:L1 两条子规则冲突
- 规则A(方向):5 日收盘价连续上升 ≥3 日 →
up - 规则B(强度):5 日总变动 <1% →
震荡
08-27→09-08 黄金连涨,按 A 应判 up,按 B 必判 震荡,原文写 neutral(震荡偏上) 两头堵。 已修:定为 强度优先,强度=震荡时方向强制 neutral;重算结果 20 份全部为 neutral(区间累计 +0.06%~+0.33%,均 <1%),原文的"震荡偏上/偏下"表述一并清除。
六、准确率:三个版本同时在库里
| 出现位置 | 原文 | 实际 |
|---|---|---|
| MOC 系统概览 | 68.4%(13/19 有效) | 08-17 的旧值,一直没更新 |
| MOC 验证统计 | 80.0%(25 次有效,20 次证实) | 与明细表实测不符 |
| MOC 版本记录 v3.1 | "验证次数 19→24,已证实 13→18,准确率保持 68.4%" | 18/24 = 75.0%,不等于 68.4%,自相矛盾 |
| 每日复盘 | 100%(连续 21 次正确) | 另一个指标,且判据不可证伪 |
根因:数字撞车
数据库说明.md 旧版「主导因子分布」写着 宏观因子 13 次 / 68%,而准确率是 13/19 = 68.4%。两个毫不相干的 68/13 长得几乎一样,抄写时反复串台。
已修
按 框架/数据口径定义#六 固定公式 已证实 ÷ (已证实+已证伪),用 MOC 明细表实测重算:
表内记录 34 条(截至 08-26)
已证实 23 | 已证伪 6 | 待定 5(观察中2 + 方向模糊1 + 待观察1 + 半证实1,不进分母)
有效验证 = 23 + 6 = 29 → 准确率 = 23/29 = 79.3%MOC 系统概览、验证统计、版本记录三处已同步为 79.3%,并保留 08-17 的 68.4% 作为历史对照(公式从未变过)。
08-27→09-08 为什么不计入
该区间 未逐日做因子归因验证,且行情是外推的。计入等于用编造的数据给自己打分。已在 MOC 中显式标注"13 天未纳入统计"。
另一个 100%:Agent 日度验证率(已单独命名 + 打上警告)
判据是"预测观望中 → 实际小幅波动 → 算证实"。"观望中"永远不会被证伪,因此 100% 是判据设计的必然结果,不含任何模型有效性信息。已在每份复盘内加:
⚠ 该判据不可证伪,100% 无信息量,不得用于评估模型有效性。
并给出改造方向:观望中 退出验证,只验证有方向的预测,或改校准度(Brier)。
七、周末被当成交易日
logs/automation_20260816.log:[2026-08-16 15:39:30] 今日非交易日,跳过自动化流程——08-16 是周日,系统本有交易日判断。
但 08-27 起的模板照样为 08-22、08-23、08-29、08-30、09-05、09-06(6 个周末日)生成了收盘价,并计入"连续交易日"。
| 表述 | 原值 | 修正值 |
|---|---|---|
| C模式连续(至 08-26) | 10 个交易日 | 8 个交易日(自然日 10) |
| C模式连续(至 09-08) | 23 个交易日 | 17 个交易日(自然日 23,6 个周末日不计) |
MOC 明细表 08-23/24/25/26 四行的"关键发现"也已逐行回改为 5/6/7/8 日。
顺带:这些复盘的生成时间写 21:00、落款写"明日07:00收盘复盘"——07:00 是盘前时间却是"收盘复盘",属模板时间戳错乱,已在报告记录,未擅自改动(涉及用户作息约定)。
八、驾驶舱明细表:34 行日期列全坏
原表格(每行都坏):
| [[复盘/2026-06-19 非交易日备忘.md]] | 06-19]] | 情绪 | <span…>已证伪</span> | 实际宏观主导 |- 日期列残留
]](链接语法转换时把闭合括号漏在了单元格) - 表头多出一个空列(5 列表头对 6 列分隔行)
- 链接列与日期列语义重复
已重建为标准 4 列,日期即链接别名:
| [[复盘/2026-06-19 非交易日备忘\|06-19]] | 情绪 | <span class="ios-tag ios-red">已证伪</span> | 实际宏观主导 |⚠ 本次重建过程中,我的一个修补脚本因正则
\\|被解析成"空分支",一度把整份 MOC 刷成乱码。已从备份整文件回滚后重做,并补了自检(双重链接 0、破损日期格 0、ios-tag类名 72 处完整)。这也说明:改动前先做可验证的备份,是这类批量脚本的唯一保险。
九、A-B-C 判定存在两套互不兼容的判据
| 文档 | 判据形式 | C 模式条件 |
|---|---|---|
| 框架/黄金主导因子切换(A-B-C) | 持续天数 | 传统相关性失效 ≥10 个交易日(进入)/ ≥20 日确认结构性 |
| 概念/A-B-C阈值(旧版) | 评分制 | "美元弱 + 实际利率↓ + 黄金强 ≥15分" |
关键冲突:旧概念页要求 C 必须"实际利率↓"。但 C 的本质是传统变量失去解释力——现实里恰恰出现"实际利率上行 + 黄金照涨"(当前 TIPS 2.42%→2.47% 上行,黄金同步上涨),按旧表会被误判为 A,与实际记录(C)完全相反。
已修:概念页改为速查表 + 指向框架权威版,废止评分制,并写明"两者冲突以框架版为准"。同时补上"观望最长 2 个交易日,到期强制归类"(原规范有写,但实际从未执行过强制归类)。
十、L0 断路器:阈值设到不可能触发
现行判据:黄金美元同跌 >2% / VIX 单日 +50% / 股债金同跌 >1.5%。
- VIX 处于 15~20 区间时,+50% 意味着单日冲到 22.5~30。2026-08-16 至 09-08 全部复盘的 L0 均为"正常",从未接近。
- 更糟的是 13 份复盘只写"### L0应急扫描:正常",一个检查项都没列——把"我没检查"写成了"检查了,没事"。
- L0-3「股债金三杀」无法评估:库里根本没有 SPX/NDX 字段(
数据库说明.md的字段表只有黄金/DXY/VIX/利率)。这条判据长期处于无法执行状态。
已修:为 13 份复盘补上逐项扫描表(实测值 + 阈值 + 状态),L0-3 明确标注 无法评估(缺股指数据)。 待用户确认:是否把 L0 改为波动率口径(如黄金单日 >3σ、VIX >30 或单日 +25%)。
十一、脚本自身的 bug
refactor_md_ios.py(排版脚本)第 14 行:
'🔴': 'ios-red', '❌': 'ios-red', '⭕': 'ios-red', '🟥': 'ios-red', '🟠': 'ios-red',第 12 行已定义 '🟠': 'ios-yellow'。同一字典字面量里键重复 → 后者静默覆盖前者,橙色(中优先级)会被渲染成红色(高风险)。
- Python 语法合法,不报错,属静默失效
- 扫描全库:目前 🟠 出现 0 次 → 尚未造成实际污染,属潜伏缺陷
- 已修:删除重复项,并注明橙色归 yellow 的语义;已加 AST 扫描确认无其他重复 emoji 键
塌缩的真正原因(推断)
排版脚本不是生成器。真正的生成环节在外部 Agent。08-27 起文体断崖 + data_verified: false 标记说明:取数步骤失败后,生成逻辑没有中止,而是降级为"按上一日数值等差外推"继续产出。
这是自动化最典型的失效模式:上游失败被下游静默兜底。建议生成流程加硬约束:取数失败 → 只写"数据缺失"占位文件,禁止用任何形式的外推填充数值字段。
十二、未修复 / 需要用户决策
| 事项 | 为何没动 | 需要谁 |
|---|---|---|
| 08-27→09-08 真实行情回填 | 外部行情不可推算,伪造即污染 | 数据源 / 用户 |
| L0 阈值改为 σ 口径 | 属于风险偏好决策 | 用户 |
| "观望中"退出验证判据 | 会改变历史指标定义 | 用户 |
| 生成脚本"取数失败即中止"硬约束 | 生成器不在本库内 | 外部 Agent 流程 |
| 复盘时间戳错乱(收盘复盘落款 07:00) | 涉及用户作息约定 | 用户 |
| 6 个周末日已生成的复盘文件是否删除 | 保留可作"外推样本"证据,删除则丢历史 | 用户 |
| 半证实(07-15)计 0.5 还是不计 | 当前取"不进分母",会影响准确率 1~2pp | 用户 |
十三、本次变更清单
| 文件 | 变更 |
|---|---|
新建 框架/数据口径定义.md | 全库口径唯一来源(单位/实际利率/交易日/动量/验证率/A-B-C/可信度 + 更新前自检清单) |
新建 数据勘误报告_2026-09-09.md | 本报告 |
复盘/*收盘复盘.md × 23 | 变化列单位重算、序列改真实收盘、L1 结论重算、连续交易日剔周末、实际利率去重、验证率拆分命名、13 份加警告横幅、13 份补 L0 扫描表 |
00 驾驶舱(投资MOC).md | 明细表重建(34 行)、准确率统一 79.3%、日期戳统一 09-09、逐行连续日数修正、新增外推区间提示 |
概念/A-B-C阈值.md | 废止评分制,改为速查 + 指向框架权威版 |
资产/黄金.md | 实际利率定义改正、动量门槛统一、OI 语义改正、2 处错字 |
数据库说明.md | 可信度分级、字段单位、权重归一、统计重算、L0 存疑提示 |
refactor_md_ios.py | 删除重复 emoji 键 |
备份:/var/minis/shared/backup/DUCKERRY_Warehouse_backup_20260909_134843/(115 文件,md5 全量一致,可整库回滚)
十四、复盘一句
库内最危险的不是数字算错,而是"看起来完整":75 行的模板和 215 行的复盘在 Obsidian 里排版一样漂亮,胶囊徽章一样绿,验证率 100% 一样醒目——但里面是等差数列。自动化最容易骗过的就是它自己的使用者。
十四、修复后自动终检结果(2026-09-09)
| 校验项 | 结果 |
|---|---|
| A 『变化』列单位口径(近期文件) | 0 条错误 ✓(黄金/DXY/VIX/WTI = 真百分比,10Y/TIPS = pp) |
| B 动量序列 vs 收盘价一致性 | 0 处不一致 ✓(修复前 18 处) |
| C 连续交易日是否含周末 | streak 已按交易日重算 ✓;7 个周末文件按用户决定保留,改标注 |
| D A-B-C 定义是否统一 | 口径已统一 ✓(指向框架权威版、评分制废止、C 含 ≥10 交易日门槛) |
| E 验证率三处口径一致性 | MOC 概览 / MOC 统计 / 数据库说明 三处一致 79.3%(23/29) ✓公式复算 23÷(23+6) = 79.3% ✓ |
| F 13 份外推文件的可见警告 | 13/13 就位 ✓ |
| 全库 Markdown 完整性 | 95 个 .md:占位符污染 0、三重链接 0、退化表格 0 ✓ |
| 备份一致性 | 115 个文件 md5 与源目录逐一相符 ✓ |
终检脚本:
/tmp/audit.py(校验 D/E 初版为写死的字面量,已改为实时读取文件,避免"自检通过"是假象)。~~遗留 1 个既有悬空链接:
[[复盘/优化版复盘模板.md]]~~ → 2026-09-12 已修复:模板以[[框架/模板/标准化复盘生成流程]]内联章节为唯一来源,取消对该不存在文件的引用。
十五、本次变更清单
备份:/var/minis/shared/backup/DUCKERRY_Warehouse_backup_20260909_134843/(115 文件,md5 已验证)
| 类型 | 数量 | 文件 |
|---|---|---|
| 新增 | 2 | 框架/数据口径定义.md(口径唯一来源)、数据勘误报告_2026-09-09.md(本文) |
| 修改·复盘 | 24 | 复盘/*.md(单位、序列、交易日、实际利率、L0、验证率、可见警告) |
| 修改·驾驶舱 | 1 | 00 驾驶舱(投资MOC).md(v3.2:34 行表重建、统计统一、日期对齐、口径链接) |
| 修改·规范 | 2 | 数据库说明.md、框架/标准化复盘生成流程.md(新增硬闸门 G1–G5 + v1.1) |
| 修改·定义 | 2 | 概念/A-B-C阈值.md、资产/黄金.md |
| 修改·脚本 | 1 | refactor_md_ios.py(移除重复 🟠 键) |
| 删除 | 0 | 未删除任何文件;未删除任何价格记录 |
修复原则(重要)
- 只改派生值,不改观测值:涨跌%、连续交易日、动量序列、实际利率恒等式——均可由已记录的收盘价推出,故直接重算。
- 绝不编造行情:08-27→09-08 的黄金/DXY/VIX/WTI/利率数值原样保留并标注
extrapolated。这些数字仍然是假的,只是不再假装是真的,也不再被派生指标二次放大。 - 历史错误保留可见:MOC 用删除线保留原文并说明为何错,不做无痕改写。