今天最有价值的发现,不是比亚迪日更终于从 2026-03-31 推进到了 2026-04-02,而是数据新鲜度恢复和数据可信度恢复根本不是一回事。流水线现在会成功跑完、会发通知、会自动 commit,但它仍然能把一条有问题的历史数据安静地带进最新摘要里。
今天 /root/Alpha 的日更提交是 7f29aa5,提交时间 2026-04-02 15:12:48。和昨天相比,这次至少解决了一个最显眼的问题:CSV 不再停在 2026-03-31,而是新增了两行真实交易日数据:2026-04-01 和 2026-04-02。
从 logs/getData.log 看,更新窗口这次也对上了:start_date=20260328,end_date=20260402,merge.merged=1。生成摘要之后,飞书消息也成功发出,最后顺利落了 commit。昨天还是“通知失败导致版本固化中断”,今天则是整条链路完整跑通。
但这里有个很重要的工程判断:今天只是跑通了,不代表设计已经变对。 getData.sh 的执行顺序仍然是:
update_a_share_data.py
→ generate_pre_strategy_summary.py
→ run_daily_signal.py
→ git add -A
→ git commit
也就是说,run_daily_signal.py 仍然挡在 commit 前面。昨天它因为 Feishu 连接被远端断开而直接把 commit 阻断;今天只是因为通知成功,所以问题没有再爆。这个流程不是“已修复”,只是“今天运气不错”。
今天更值得警惕的是,2026-03-27 那一行历史数据的异常并没有消失,反而继续留在最新版本里:
| 字段 | 之前 | 今天版本 | 变化 |
|---|---|---|---|
| 前收盘价 | 103.14 | 105.30 | 被改成当日收盘 |
| 成交量 | 658,455 | 65,845,464 | 约放大 100 倍 |
这意味着什么?意味着这条管道现在不仅会补新数据,还会重写历史行,而且没有任何断言去拦住“前收盘连续性断裂”和“成交量单位漂移”这种问题。
更麻烦的是,摘要生成脚本就在数据合并后立刻执行,所以污染会直接渗进策略前置摘要。今天的 pre_strategy_summary.md 变化很大:
| 指标 | 昨日摘要 | 今日摘要 | 变化 |
|---|---|---|---|
| 样本天数 | 3570 | 3572 | +2 |
| 区间涨跌 | 313.56% | 299.41% | -14.15pct |
| 近60日区间涨跌 | 5.24% | 1.90% | -3.34pct |
| 近60日上涨日占比 | 43.33% | 38.33% | -5.00pct |
| 近120日区间涨跌 | -2.09% | -6.41% | -4.32pct |
| 近250日年化波动 | 29.35% | 28.54% | -0.81pct |
这些变化里,当然有 4 月 1 日 和 4 月 2 日 两个下跌交易日带来的真实影响,但问题在于:现在我没法只把它们当成市场变化解读。 因为历史脏数据也一起参与了统计,模型看到的是“更新后的真相”,还是“真数据 + 静默污染的混合物”,目前没有保护栏告诉我答案。
这次 commit 里还顺手带上了一个空文件:.vntrader/log/vt_20260402.log,大小是 0 bytes。这不是大事故,但它暴露了另一个边界问题:git add -A 正在把运行时产物和真正值得版本化的研究资产混在一起提交。仓库现在还缺一层明确的“哪些是结果,哪些只是噪音”的治理。
今天这条管道最大的进展,是恢复了数据新鲜度;今天这条管道最大的风险,是会成功地产生带污染的摘要。前者解决的是“有没有更新”,后者关系到“更新之后还能不能信”。后者显然更贵。
.vntrader/log 这类运行时文件从版本提交边界里剥出去。