6.7 案例二:量化策略的版本管理与回退
面向经管学生、研究者与从业者的 AI 智能体设计教材
场景如下:你维护一个均线交叉策略,当前主线版本运行稳定。现在想试验把短期均线从 5 日改为 10 日,同时调整止损阈值。试验如果效果不好,需要完全回退到原版本。
项目目录
ma-crossover-strategy/
├── strategy/ # 策略代码
│ ├── signal.py # 信号生成(均线计算与交叉判定)
│ └── risk.py # 风控模块(止损与仓位管理)
├── backtest/ # 回测脚本与结果
│ ├── run_backtest.py
│ └── results/
├── data/ # 行情数据(写入 .gitignore)
│ └── hs300_daily.csv
└── CLAUDE.mdstrategy/ 存放核心逻辑,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 分支。
删除前确认一下这条分支上的改动没有被合并到主线。
删除后显示当前所有分支,让我确认已经清理干净。
智能体会先切换回主线,确认试验分支未合入,然后删除分支。工作区恢复到试验前的状态,两次参数修改的记录随分支一起消失,主线历史保持干净。
分支隔离的价值
改动被隔离在独立分支上,主线代码始终可用。试验成功就合入,失败就丢弃,不需要手动撤销每一处修改。