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