Skip to content

11.8 策略热更新与版本管理

课前导读

本章目标

学完能解决什么困惑:你将理解为什么实盘策略不能盘中随意改规则,如何用版本号、灰度、回滚和变更记录,让策略迭代既有弹性又有边界。

适合谁学习:已经知道策略从研究、回测到实盘部署的大致流程,想把“改策略”变成可管理工程动作的 A 股投资新手。

难度:advanced

用时:约 40 分钟


知识正文

先做一个生活类比。

你正在开车上高速。

如果发现导航路线不太理想,你会立刻把方向盘猛打到另一条车道吗?

当然不会。

你会先看后视镜,确认车距,再打转向灯,最后平稳变道。

实盘策略热更新也是同样的道理。

策略在真实市场中运行,就像车已经上路。

规则修改不是在纸上擦掉重写。

它会影响持仓、订单、风险、复盘和投资者心态。

所以,热更新不是“想改就改”。

热更新的真正含义是:

在不让系统失控的前提下,把经过确认的新规则替换旧规则。

1. 什么是策略热更新

热更新可以理解为系统不停机或少停机地替换部分策略配置或规则。

例如调整股票池过滤条件。

例如修改单只股票最大仓位上限。

例如把某个风控阈值从较宽改为较严。

例如暂停某个子策略,只保留组合中的其他子策略。

这些都属于策略运行中的变更。

但要注意,本课程讨论的是安全管理思想。

我们不会提供真实券商接口、真实自动下单代码或可直接用于实盘的接口实现。

真正的实盘系统里,热更新必须和风控、日志、权限、复盘绑定在一起。

否则它就不是能力,而是隐患。

风险提示

盘中临时修改策略规则,最容易把“研究判断”变成“情绪交易”。没有审批、记录和回滚方案的热更新,不建议进入真实资金环境。

2. 为什么不能盘中随意改规则

A 股市场的波动很容易刺激人的情绪。

上午亏损时,你可能想把止损条件调紧。

下午反弹时,你又可能想把仓位加回来。

如果每次情绪变化都改策略,系统就失去了可解释性。

最后你无法分清亏损来自哪里。

是原策略不好?

是临时修改导致?

是市场环境突变?

还是执行环节失误?

盘中随意改规则的最大问题,是破坏了实验边界。

回测时你验证的是 A 规则。

实盘上午跑的是 A 规则。

下午你改成 B 规则。

晚上复盘时却拿 A 规则的预期去解释 B 规则的结果。

这会让投资者和开发者都陷入混乱。

3. 版本号:给每一次规则变化贴身份证

版本号就像策略的身份证。

没有版本号,你只能说“我好像改过”。

有版本号,你可以说清楚“从 11.8.1 改到 11.8.2,改了仓位上限和过滤条件”。

一个清晰的版本记录至少包含四件事。

第一,版本编号。

第二,变更内容。

第三,变更原因。

第四,生效时间和影响范围。

例如:

版本变更内容变更原因生效范围
v1.2.0降低单只股票最大仓位近期组合集中度偏高模拟盘先验证
v1.2.1修正停牌过滤逻辑发现停牌样本处理不一致下一个交易日生效

版本号不只是给程序员看的。

它也是给投资者和未来复盘的自己看的。

4. 变更记录:写给未来的证据链

很多策略失败后,最难受的不是亏钱。

而是不知道为什么亏。

变更记录能保留证据链。

它回答以下问题。

当时为什么要改?

改之前看到什么证据?

改动是否经过回测或模拟验证?

谁批准了改动?

如果出问题,怎么回滚?

这些问题看似繁琐。

但它们能保护你不被盘中情绪牵着走。

一个好的变更记录,不需要华丽。

它只需要真实、完整、可追溯。

5. 灰度:不要一次把所有资金都推到新规则上

灰度发布来自工程领域。

用投资语言说,就是不要把新规则一次性应用到所有资金、所有股票、所有子策略上。

可以先在模拟盘观察。

再用小资金或小范围组合观察。

再逐步扩大影响范围。

就像试穿新鞋。

你不会第一天就穿它跑马拉松。

你会先走一段路,看看磨不磨脚。

A 股策略也一样。

新规则在回测里表现好,不代表实盘里立刻稳定。

它可能遇到滑点、停牌、涨跌停、成交不充分、申报限制等真实摩擦。

灰度的价值,是把未知风险限制在较小范围。

mermaid
graph TD
  A[新规则完成研究] --> B[历史回测验证]
  B --> C[模拟盘观察]
  C --> D[小范围灰度]
  D --> E[扩大实盘范围]
  E --> F[正式版本]

6. 回滚:承认错误并快速回到安全状态

回滚不是失败。

回滚是成熟系统的刹车。

如果新版本出现异常,例如信号数量突然增加、订单失败率上升、组合暴露偏离预期,就需要回到上一版稳定规则。

回滚前必须知道上一版是什么。

必须知道当前持仓是否与上一版兼容。

必须知道回滚后哪些订单需要暂停。

必须知道复盘时如何标注这段异常。

这就是为什么版本管理和日志记录必须一起做。

没有版本管理,回滚会变成“凭感觉还原”。

7. A 股案例:临时放宽条件带来的偏差

假设你有一个 A 股低频选股策略。

原规则要求股票满足流动性、财务质量和波动控制三个条件。

某周市场热点很强,你发现策略没有买到几只热门股。

你在盘中临时放宽了波动控制条件。

结果策略买入了几只短期涨幅很大的股票。

第二天市场回落,组合回撤明显扩大。

晚上复盘时,你发现原策略并不会买入这些股票。

亏损不是来自原规则,而是来自盘中修改。

如果没有版本记录,你可能会误判“策略失效”。

如果有记录,你会看到真正原因是“临时放宽条件未经过灰度验证”。

这个案例说明,策略热更新最怕没有边界。

8. 哪些变更适合热更新

不是所有变更都适合热更新。

比较适合热更新的是低风险配置。

例如暂停某个明显异常的数据源。

例如把最大仓位从较高调到较低。

例如临时关闭新增买入,只保留风险降低动作。

不适合随意热更新的是核心逻辑。

例如选股因子整体替换。

例如买卖条件重写。

例如仓位模型从等权改成激进集中。

这些变化会改变策略性格。

它们应该走完整研究、回测、模拟、灰度流程。

关键心得

热更新越接近“风险降低”,越适合快速执行;越接近“收益增强”,越需要慢下来验证。

9. 发布窗口:什么时候改比改什么同样重要

A 股有明确交易时间。

盘前、盘中、盘后,每个窗口适合的动作不同。

盘前适合加载已经审批的新配置。

盘中适合处理风险降低类变更,例如暂停新增买入。

盘后适合做完整复盘、回测补充和版本发布准备。

如果把所有变更都挤到盘中,系统压力和心理压力都会上升。

更稳妥的做法是设定发布窗口。

例如核心策略规则只允许盘后准备、下一个交易日前生效。

紧急风控配置可以盘中生效,但必须记录原因。

10. 版本管理的四个角色视角

从专业老师角度看,版本管理是学习过程。

它让你知道每一次改变带来了什么后果。

从投资者角度看,版本管理是风险控制。

它避免资金暴露在未经验证的冲动规则里。

从量化开发角度看,版本管理是工程纪律。

它保证代码、配置、日志、实盘结果能够对齐。

从复盘角度看,版本管理是因果链。

它让你能把盈亏归因到具体版本,而不是模糊地怪市场。

11. 一段安全发布伪代码

下面只是流程示意,不是实盘接口实现。

text
如果 新版本 未完成变更记录:
  禁止发布

如果 新版本 未经过模拟盘或小范围验证:
  禁止扩大实盘范围

如果 发布后 告警等级达到紧急级:
  暂停新增风险
  回滚到上一稳定版本
  记录回滚原因

这段伪代码表达的是发布纪律。

它不是为了让系统变慢。

而是为了避免错误以最快速度扩散。


交互实验室

本节的交互产物是一张版本发布检查表

请在每一次修改策略前完成,而不是亏损后补写。

检查项问题通过标准我的记录
版本编号是否给新规则设置唯一版本号能明确区分旧版和新版
变更内容改了哪些规则或配置能用三句话说清楚
变更原因为什么要改有数据、复盘或风险证据
验证结果是否回测、模拟或小范围观察结果与预期基本一致
影响范围会影响哪些股票、组合或资金范围明确且可控制
发布窗口何时生效避免盘中随意改核心规则
回滚方案出问题怎么办能回到上一稳定版本
复盘标记如何记录结果日志能追踪到版本

练习步骤如下。

  1. 回想你最近一次想修改策略规则的时刻。

  2. 写下当时的触发原因。

  3. 判断它是情绪驱动,还是证据驱动。

  4. 为这次变更设计一个版本号。

  5. 写出影响范围。

  6. 写出最小灰度范围。

  7. 写出失败后的回滚动作。

  8. 最后问自己:如果这次修改亏钱,我能不能说清楚原因?

示例:

项目示例填写
版本号v1.3.0
改动单只股票最大仓位从 15% 降到 10%
原因最近组合集中度偏高,回撤集中来自少数持仓
生效下一个交易日前加载配置
回滚若信号数量异常减少,恢复 v1.2.4 并复盘

练习提醒

真正成熟的策略,不是永远不更新,而是每一次更新都能被解释、被限制、被撤回。


核心复盘

知识清单

  • [ ] 我能解释热更新不是随意改规则,而是有边界地替换策略配置或逻辑。
  • [ ] 我理解盘中随意修改核心规则会破坏复盘因果链。
  • [ ] 我知道版本号、变更记录、生效时间和影响范围必须成套出现。
  • [ ] 我理解灰度可以把新规则的不确定性限制在小范围。
  • [ ] 我知道回滚是实盘系统的刹车,不是失败的羞耻。
  • [ ] 我能为一次策略变更填写版本发布检查表。

金句总结

能热更新的系统不一定安全;能灰度、能回滚、能解释每次更新的系统,才有资格进入实盘。

本文档仅供学习交流用途,不构成任何投资建议。股市有风险,入市需谨慎。