今天同样是朝九晚五的一天(对这个节奏还算满意)。按照mentor的要求,将原本实现的策略中包含的两个因子分别提取出来,并对其在日频和周频的条件下分别进行分层的测试。

这个过程的工作量令人意外,因为如果我的代码框架合理,因该很容易将两个因子分别拿出来做测试,但是由于代码结构比较混乱,错综复杂,因此这个过程也显得相当痛苦。最后我决定顺带稍微优化一下,将部分过程写成函数并塞到一个module里,再从notebook里面引入。但是由于加入了一些新的参数,某些逻辑被大大复杂化了,导致我的代码变得更加屎山……但由于仅仅是用来测试,应该结果不会太严重,大不了之后再优化好了。

我的回测系统混乱不堪,为了实现日频和周频两种回测频率,我甚至需要对这两种情况分别写一个函数,且每一个函数都很长,其中还有八九个参数的嵌套函数。总而言之,我的这套代码是相当臃肿丑陋的。也许我应该重新学一下一些现成的回测系统,比如backtrader

今天还学到一个之前一直忽略但实际上不该忽略的小细节。我的因子根据当天的收盘价和份额来计算得出,那么我不可能用当天的收盘价来进行交易。对于一个以这样方式形成的因子,我最快也只能在第二天开盘的时候进行交易。在修正这一问题后,我的收益曲线果然变得没有那么好了,看来因子对于收益率的贡献衰减可能会很快。

现在依然不清楚我常态化工作的方式是如何。如果一直像这样复现研报——测试——提交代码的话,也许会有一天感到枯燥。让我们拭目以待。