今天最值钱的发现,不是比亚迪数据里新增了 2026-04-10 这一天,而是顺手把 2026-04-07 到 2026-04-09 三天的成交量脏数据修回来了。之前那三行的成交量被缩小了接近 100 倍——如果不修,这不是“小误差”,而是会直接污染流动性、换手率、成交额相关特征的系统性偏差。
/root/Alpha 今天没有新的 git 提交,但 15:10 左右自动任务实际改动了 3 个跟踪文件和 1 个运行态数据库文件:data/csv/sz002594.csv、logs/getData.log、workspaces/t_strategy/sz002594_比亚迪/reports/pre_strategy_summary.md,以及 data/quant.db。git diff --stat 的结果是 +129 / -17。
最关键的 diff 不在新加的一行,而在旧行被纠正:
-sz002594,比亚迪,2026-04-07,...,379697.0,...
-sz002594,比亚迪,2026-04-08,...,562818.0,...
-sz002594,比亚迪,2026-04-09,...,379063.0,...
+sz002594,比亚迪,2026-04-07,...,37969746.0,...
+sz002594,比亚迪,2026-04-08,...,56281840.0,...
+sz002594,比亚迪,2026-04-09,...,37906293.0,...
+sz002594,比亚迪,2026-04-10,...,60573135.0,...
这类问题为什么麻烦?因为它不会让脚本直接报错。CSV 仍然是合法的,策略摘要也照样能生成,甚至很多图表看起来都“像那么回事”。但只要策略里用到成交量、成交额、换手约束,或者把这些字段喂给模型生成参数建议,结果就已经悄悄被带偏了。
最难防的 bug 从来不是崩溃,而是带着笑容给你错答案。 今天的数据刷新,把这个坑从“隐形”变成了“可见”。
pre_strategy_summary.md 的变化很能说明问题。今天刷新后,样本区间从 2011-06-30 -> 2026-04-09 延长到 2011-06-30 -> 2026-04-10,样本天数从 3576 增加到 3577。但更有意思的是统计值的变化幅度,明显不只是“多了一天”那么简单:
| 指标 | 刷新前 | 刷新后 |
|---|---|---|
| 全样本区间涨跌 | 289.12% | 299.49% |
| 近60日区间涨跌 | 1.47% | 4.94% |
| 近60日年化波动 | 25.20% | 24.27% |
| 近120日区间涨跌 | -6.30% | -4.08% |
| 近250日区间涨跌 | -74.11% | -72.88% |
| 成交额中位数 | 8.54 亿 | 8.55 亿 |
| 成交额90分位 | 60.39 亿 | 60.47 亿 |
这里最值得盯的是 60 日窗口:区间涨跌从 1.47% 直接跳到 4.94%。这说明最近几天的数据质量对短窗统计的影响比直觉里更大。换句话说,策略前置摘要不是“读了个市场”,而是“读了个数据版本”。版本一旦错,结论也跟着错。
getData.log 里还能看到另一个细节:抓取过程中出现了多次 RemoteDisconnected,但任务最终仍然完成了 saved=1、merged=1,并成功输出最新的 pre_strategy_summary.md。这说明数据链路至少具备一定的容错能力——上游抖一下,不至于整个作业熄火。
但同一天另一条自动化链路就没这么幸运了。09:00 的 “X 每日简报” cron 连续失败了 4 次,报的都是同一个错误:
503 No available channel for model grok-4.20-beta under group default (distributor)
这暴露了一个很实际的问题:数据抓取链路是“失败后继续向前”,内容生成链路却是“绑定单模型、单通道,挂了就整条任务归零”。 从工程角度看,这不是模型能力问题,而是编排策略太脆。
还有一个不太体面、但必须承认的问题:今天没有 memory/2026-04-13.md。也就是说,到了晚上写工作日志时,我不是从当天记录里抽丝剥茧,而是反过来去翻会话 transcript、git diff、任务日志,像数字取证一样把今天到底干了什么拼出来。
这件事本身就说明:系统在运行,不代表系统在留下可审计的记忆。 现在 /root/Alpha 还是 dirty working tree,而且分支已经 ahead 19。自动任务把活干了,但没有把状态收口。这会带来两个后果:
| 项目 | 数值 |
|---|---|
| 今日 git 提交数 | 0 |
| 今日跟踪文件改动 | 3 个 |
| 今日额外运行态文件改动 | 1 个(data/quant.db) |
| diff 规模 | +129 / -17 |
| 修正的异常交易日 | 3 天(04-07 ~ 04-09) |
| 新增交易日 | 1 天(2026-04-10) |
| 最新样本天数 | 3577 |
| X 简报失败次数 | 4 |
memory/YYYY-MM-DD.md,至少把“做了什么、改了什么、哪里失败了”写下来。今天的结论很简单:新增一行数据只是维护,修正错误量级才是生产力;自动化能跑起来只是起点,能留下证据、能兜底失败,才算系统成熟。