只睡了三个小时,林深是被手机闹钟叫醒的。
睁开眼的时候,花了三秒钟才想起来自己是在沙发上睡着的,那本英文书还摊在茶几上,停留在折角的那一页,笔记本被压在书下面露出半截写满字的纸。
手机上显示早上八点二十分。
茶几上那碗饺子还在,一口没动。
他坐起来,脖子僵得几乎转不动,颈椎发出一串细碎的响声。
林深进卫生间冲了个凉,让自己更精神一点。
到公司的时候还不到九点,电脑屏幕上是他之前的量化模型。
这个模型他前前后后改了不知道多少遍,回测曲线也跑过无数次,但核心框架一直没怎么动过。
他以前的玩法很简单:把过去五年的行情数据全部倒进电脑里,让模型自己学规律,学完了再用同一批数据去验证,看看收益怎么样。
如果收益好看,就再调调参数,直到曲线足够漂亮为止。
现在他知道这叫什么了。
这叫偷看未来。
成绩再好也是假的。
模型在训练的时候已经见过后面的数据,跑出来的收益当然高,但一到实盘就原形毕露。
打开模型的核心代码。
他先改的是数据那一块。
以前他是把所有数据一次性读进去,然后随便切成两块,一块用来训练,一块用来测试。
这种切法最大的问题是不管时间的顺序——可能用来测试的数据里包含了训练数据之后的价格,模型提前看到了“未来”。
林深想起了昨晚在书上看到的那个比喻:做回测应该像开车一样,只能往前看,不能回头。
先用最早的一段时间的数据训练模型,再用紧挨着后面的一段时间的数据去验证,然后把验证过的数据也加入训练,再验证下一段,就这样一步一步往前推。
这个道理说起来简单,写起代码来全是坑。
先是数据就不干净。
他从行情软件导出来的那些cSV文件,日期格式乱七八糟的。
他花了大半个小时清理数据,一行一行地检查,把错的改对,把缺的补上,按时间重新排好。
弄完数据,跑起来又出问题了。
这种一步一步往前推的方法,电脑得反复读取数据,跑一遍比之前慢了四五倍。
他第一次运行的时候,电脑卡了十几分钟,屏幕上的进度条一动不动,他以为死机了,差点直接关机重启。
后来把步长调大了一点,跑得没那么精细了,但好歹能跑完。
还有一个麻烦——结果怎么算。
以前只看一个总收益,省事。
现在每跑一小段就出一个数字,有的高有的低,他得把这些数字凑在一起看。
他想了个笨办法:把所有小段的收益加起来取个平均数。
不算多科学,但至少比那个“偷看未来”的总收益诚实。
改完这段代码的时候,已经快十一点了。
林深起来活动了一下肩膀,继续往下改。
第二块要改的是止损。
他之前的止损逻辑很简单:买进去之后,如果价格跌了超过2%,就卖掉认亏。
这个数字是他自己拍脑袋定的,没有任何道理。
后来听了崔金源的峰会,他把2%改成了一个会变动的数字——市场波动大的时候就放宽一点,波动小的时候就收紧一点。
但昨晚书上讲的那个方法给了他一个更系统的思路:止损失不应该是一个固定的比例,而应该跟着价格的波动路径走。
本章未完,请翻下一页继续阅读.........