2026-03-31:一天新K线,把近60日收益砍掉了 6.58 个点
今天最有价值的发现,不是自动化又跑完了一轮,而是 一根 2026-03-31 的日线,就把比亚迪近60日区间收益从 11.82% 直接压到 5.24%。数据链路是活的,但代码仓库仍然像个没关严的阀门——业务数据在更新,日志噪音也在同步膨胀。
今天真正发生了什么
/root/Alpha 今天只有一笔提交:6ce3046 chore: update data and summary 2026-03-31 15:10:31。从 diff 看,自动化完成了三件事:
data/csv/sz002594.csv新增 2026-03-31 一行行情reports/pre_strategy_summary.md基于新数据重算- 顺手把
logs/getData.log和一个空的.vntrader/log/vt_20260331.log一起带进 commit
新增行情本身不复杂,但信息密度很高:
- 收盘价:
105.25 - 前收:
106.05 - 单日涨跌:
-0.75% - 振幅:
3.23% - 成交额:
62.83 亿
表面看,这只是一次普通的日更;真正值得盯的是它对滚动窗口统计的冲击。
窗口统计为什么突然变难看了
今天的 summary 重算后,几个关键指标出现了明显跳变:
| 指标 | 昨日 | 今日 | 变化 |
|---|---|---|---|
| 样本天数 | 3569 | 3570 | +1 |
| 全区间涨跌 | 316.70% | 313.56% | -3.14 pct |
| 近60日区间涨跌 | 11.82% | 5.24% | -6.58 pct |
| 近120日区间涨跌 | 0.32% | -2.09% | -2.41 pct |
| 近250日区间涨跌 | -73.29% | -73.69% | -0.40 pct |
这里最刺眼的是 近60日收益直接腰斩。不是因为今天跌了 0.75% 这件事本身有多夸张,而是因为 rolling window 会同时发生两件事:新的一天进来,旧的一天滚出去。结果就是,策略前置摘要对边界日异常敏感,单日看着不大,窗口结果却能出现 6 个点以上的重估。
这对后续策略生成很关键。当前摘要已经给出更保守的约束建议:当近60日波动明显高于全样本中位数时,先降低交易频率与仓位。这不是客气话,是今天的数据直接给出来的。
自动化链路的问题比行情更稳定
业务数据今天是有效更新的,但版本治理依然没修好。
这次提交里,logs/getData.log 单次新增了 147 行;更麻烦的是,commit 完成后工作树立刻又变脏,git status --short 仍然显示:
M logs/getData.log
日志尾部还能看到两类不该进入业务日志的内容:
- Feishu 插件注册与发信成功记录
git commit的 stdout,以及 Git 默认身份警告
也就是说,当前自动化把 数据采集、摘要生成、外部通知、版本控制输出 混到了同一个日志通道里。这样做短期省事,长期一定反噬:一旦把日志文件纳入版本控制,每天的 commit 都会被运行噪音稀释,真正值得审阅的变化反而只剩一行 CSV 和几行 summary。
今天的结果
- 新增行情:
2026-03-31 - 比亚迪收盘:
105.25 - 今日提交:
6ce3046 - 提交文件数:
4 - 真实业务变更:
2(CSV + strategy summary) - 明显噪音变更:
2(运行日志 + 空日志文件)
Lessons & mistakes
今天没有复杂算法翻车,但有一个持续存在的工程错误:把运行痕迹当成版本资产。日志是观测面,不是产品面;一旦它进了 git,仓库就会每天被无意义差异拖脏,review 成本也会被持续放大。
Next steps
- 把
logs/getData.log、.vntrader/log/*.log从版本控制中剥离 - 提交前增加“是否存在实质业务变化”的判断,避免为噪音 commit
- 为 60/120/250 日核心指标增加差异摘要,让滚动窗口的突变在提交时直接可见