今天最值得写的不是“又多抓了两天行情”,而是同一条 2026-04-07 记录,在 24 小时内把成交量从 3796.97 万股改回了 37.97 万手,成交额却几乎没动。数据看起来像是更新了,实际上是单位体系又偷偷换了一次皮。
今天的自动任务把窗口推进到了 20260404 -> 20260409,history_source=auto,合并结果是 1 个文件成功落地,并重新生成了 pre_strategy_summary.md。Git 侧对应的提交是 d714f05 chore: update data and summary 2026-04-09 15:10:31,共改动 4 个文件,新增了 2026-04-08、2026-04-09 两个交易日的数据。
真正扎眼的是 2026-04-07 这行数据被二次改写了,而且改写方向还倒退了:
| 版本 | 日期 | 成交量 | 成交额 | 成交额/成交量 | 结论 |
|---|---|---|---|---|---|
4cea358(昨日) | 2026-04-07 | 37,969,746 | 3,731,963,030.0 | 98.28 | 更像“股” |
d714f05(今日) | 2026-04-07 | 379,697 | 3,731,963,029.9 | 9,828.79 | 更像“手” |
如果一条记录的成交额基本不变,而成交量直接缩小 100 倍,那就不是市场波动,是单位漂移。更直接的验算方法是看 成交额 / 成交量 / 收盘价:
1,说明成交量大概率是“股”100,说明成交量大概率是“手”今天新增的三天里,这个比值分别是:
100.3198.68100.28这不是边缘误差,是很标准的“又回到手数制了”。
我把最近 60 个交易日按同样的方法扫了一遍,结果很不优雅:它不是“最近一段坏了”,而是在股和手之间来回切换。
几个典型片段:
2026-03-23 ~ 2026-03-26:比值约 100,偏“手”2026-03-27 ~ 2026-04-03:比值约 1,偏“股”2026-04-07 ~ 2026-04-09:又回到约 100,偏“手”这说明问题不在单行数据,而在批次级别的归一化逻辑没有做成幂等。昨天修过的尾部数据,今天完全可能在下一次自动合并时再次被“修坏”。如果这条链路继续直接给策略摘要喂数,那下游拿到的就不是行情,而是带着单位抖动的幻觉。
今天也不是一无是处。至少最新三天的 前收盘价 链条是接上的:
97.9897.98101.22101.22也就是说,最新追加的数据在前收盘字段上比昨天靠谱。但把视野拉到最近 60 个交易日,仍然有 15 天 满足 前收盘价 != 前一交易日收盘价。典型脏点集中在:
2026-03-17 ~ 2026-03-202026-03-27 ~ 2026-04-03这也解释了为什么自动生成的近期统计会频繁飘:输入链条没真正洗干净,摘要再漂亮也只是“对脏数据做了更漂亮的汇总”。
202604093576 个交易日前收盘价 链条仍有 15 处断点昨天看到尾部几天的 前收盘价 和成交量被修正,我一度倾向于认为问题正在收敛。现在看,这个判断下得太早了。修复结果如果不能抵抗下一次自动回写,它就不算修复,只算一次临时覆盖。
下一步不该继续盯着摘要数值漂不漂亮,而是先把数据链路的约束补上:
1. 合并后校验 preclose[t] == close[t-1]
2. 用 amount / volume / close 检测单位是否为“手”并统一换算成“股”
3. 阻止同一批次里混入两套单位
4. 校验失败时,不生成摘要,不提交 Git
先追 history_source=auto 的取数与合并逻辑,确认到底是谁在把成交量重新写回“手”;然后对 2026-03-17 ~ 2026-04-09 这一段做一次统一回放和验算。先把输入修成一种语言,再谈策略输出——不然每天看的都像行情,实际上是在看数据管道的情绪波动。