6.7 案例二:量化策略的版本管理与回退

面向经管学生、研究者与从业者的 AI 智能体设计教材

作者

李学恒、林建浩、严翊歆、张一帆

最后更新

2026-06-24

场景如下:你维护一个均线交叉策略,当前主线版本运行稳定。现在想试验把短期均线从 5 日改为 10 日,同时调整止损阈值。试验如果效果不好,需要完全回退到原版本。

项目目录

ma-crossover-strategy/
├── strategy/                    # 策略代码
│   ├── signal.py                # 信号生成(均线计算与交叉判定)
│   └── risk.py                  # 风控模块(止损与仓位管理)
├── backtest/                    # 回测脚本与结果
│   ├── run_backtest.py
│   └── results/
├── data/                        # 行情数据(写入 .gitignore)
│   └── hs300_daily.csv
└── CLAUDE.md

strategy/ 存放核心逻辑,backtest/ 存放回测代码和输出。行情数据体量大,不纳入 Git 跟踪。

用户操作

参数调整属于试验性改动,不应直接在主线上操作。在 Claude Code 中输入:

▶ Claude Code
从当前主线创建一条新分支,名字叫 exp/ma10-stoploss,切换过去。

然后做两步修改,分开提交:

第一步:打开 strategy/signal.py,把 `SHORT_MA_WINDOW` 从 5 改为 10。
备注写"试验:短期均线窗口从 5 日改为 10 日"。

第二步:打开 strategy/risk.py,把 `STOP_LOSS_PCT` 从 0.03 改为 0.05。
备注写"试验:止损阈值从 3% 放宽至 5%"。

完成后显示最近 3 次存档记录让我确认。

智能体创建新分支,然后分两次提交完成参数修改。此时主线上的代码完全不受影响,试验改动被隔离在独立分支上。

回退到主线

回测结果显示最大回撤明显增大,这组参数不可取。回退操作用对话表达:

▶ Claude Code
这组参数试验效果不好。切回主线,然后删除 exp/ma10-stoploss 分支。
删除前确认一下这条分支上的改动没有被合并到主线。
删除后显示当前所有分支,让我确认已经清理干净。

智能体会先切换回主线,确认试验分支未合入,然后删除分支。工作区恢复到试验前的状态,两次参数修改的记录随分支一起消失,主线历史保持干净。

分支隔离的价值

改动被隔离在独立分支上,主线代码始终可用。试验成功就合入,失败就丢弃,不需要手动撤销每一处修改。