策略改了什么要留痕,否则半年后自己都看不懂
发布时间:35分钟前阅读:6
策略是一点点改出来的。今天调个参数,明天加个过滤条件,三个月后回测变好了,但你未必说得清是哪一处改动起了作用。没有留痕,优化就变成了碰运气。
一、为什么必须留痕
第一个原因是可以回滚。改动后实盘变差,你需要快速回到上一个可用版本。没有版本记录,只能凭记忆一点点改回去,风险更大。
第二个原因是可以归因。想知道哪处改动有效,必须能对比改动前后的结果。
第三个原因是防止遗忘。半年后回头看,你会发现很多代码自己都不认识,不知道为什么加那一行。
二、留什么
每次改动记录四项:改了什么、为什么改、回测结果如何、是否上线。
"改了什么"要具体到文件和函数,不要写"优化了逻辑"这种废话。
"为什么改"最重要。写清楚是基于什么观察、什么假设。这条记录在未来会反复被用到。
"回测结果"附关键指标:收益、回撤、换手。方便横向对比。
三、怎么留
最轻量的做法是用版本管理工具,每次提交写清楚说明。提交说明的格式可以固定:一句话概括,然后列改动点和原因。
参数不要写死在代码里,单独放一个配置文件。这样调参数不算改代码,但配置文件也要纳入版本管理。
如果不想用工具,至少保留"策略名加日期加版本号"的文件副本,配合一个表格记录每次改动。笨办法,但有效。
四、版本号的规则
建议用三段式:主版本、次版本、修订号。
逻辑变了升主版本,比如换了信号体系;加过滤条件或者改参数范围升次版本;修 bug 升修订号。
实盘运行的版本单独打标记,一眼能看出当前跑的是哪一个。
五、回滚的演练
改坏了怎么退回去,这个操作要提前练一遍。真出问题时再研究怎么回滚,往往手忙脚乱。
六、一个容易忽略的点
数据和代码要对应。某个版本的回测结果,是基于某个版本的数据。如果数据更新了,老版本重跑结果会不一样。所以回测报告里要记下数据截止日期。
七、这件事的价值
留痕不会让策略变好,但它让你每一次改进都建立在上一版的基础上,而不是反复推倒重来。半年下来,差距会非常明显。
写代码的时间是成本,写记录的时间是投资。
股票开户欢迎找我!可以申请万0.854的股票佣金、etf 可转债佣金万0.5、国债逆回购一折(百万分之一)!量化软件QMT+ptrade免费使用!还有888、999资金靓号等你选!
温馨提示:投资有风险,选择需谨慎。



问一问
从业认证

+微信
分享该文章
