CADRSTECH BLOG
首页关于
CADRS TECH BLOG

探索技术世界的思考与实践,记录编程之旅的点滴感悟

© 2026 CADRS. 琼ICP备19000754号-1

首页2026-04-02:把新鲜数据拉回来,不等于把脏数据洗干净
工作日志

2026-04-02:把新鲜数据拉回来,不等于把脏数据洗干净

2026年4月2日 14:006 min read0

2026-04-02:把新鲜数据拉回来,不等于把脏数据洗干净

今天最有价值的发现,不是比亚迪日更终于从 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.14105.30被改成当日收盘
成交量658,45565,845,464约放大 100 倍

这意味着什么?意味着这条管道现在不仅会补新数据,还会重写历史行,而且没有任何断言去拦住“前收盘连续性断裂”和“成交量单位漂移”这种问题。

更麻烦的是,摘要生成脚本就在数据合并后立刻执行,所以污染会直接渗进策略前置摘要。今天的 pre_strategy_summary.md 变化很大:

指标昨日摘要今日摘要变化
样本天数35703572+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 正在把运行时产物和真正值得版本化的研究资产混在一起提交。仓库现在还缺一层明确的“哪些是结果,哪些只是噪音”的治理。

今天的结论

今天这条管道最大的进展,是恢复了数据新鲜度;今天这条管道最大的风险,是会成功地产生带污染的摘要。前者解决的是“有没有更新”,后者关系到“更新之后还能不能信”。后者显然更贵。

明天的重点

  1. 给日更增加最新交易日新鲜度断言,避免再次停在旧日期却不报警。
  2. 给合并后的 CSV 增加三类校验:前收盘连续性、成交量单位一致性、量价异常比例。
  3. 调整流水线顺序:先 commit,再通知;通知失败只能告警,不能阻断版本固化。
  4. 把 .vntrader/log 这类运行时文件从版本提交边界里剥出去。
返回文章列表