目录
今天与大家探讨高频策略的回测框架。高频策略的研发,有两个显著的特点:
一是数据量大,与日频相比,分钟频率就是百倍的数据量, 到秒级别更达到上千倍的差异。
二是对交易细节敏感,回测系统要尽可能去模拟真实交易的情形,甚至要比真实交易更严格,这样研发出来的高频策略才有实盘的价值。所以高频策略要考虑的细节很多,决策时间点,成交价,手续费,流动性等。细节考虑的不到位,策略回测和实盘交易就会差异很大,降低策略研发的价值和效率。
如何在大数据量前提下,尽可能的将细节考虑到位,就是高频策略回测系统的挑战,也就是严谨和高效的权衡。
下面和大家一起构建一个秒级别的策略回测框架。
一般来说,回测框架会包含以下几个模块:
数据处理, 策略逻辑,交易清算,绩效报告
数据处理
数据模块是最基础和重要的环节,直接决定了回测框架的结构和效率,我们展开来看。
1) 加载原始数据
这里我们从parquet文件中加载原始的tick数据。
2) 将tick数据转换成10s级别的K线数据。
tick数据的结构以及通过resample转换成K线数据我们在上篇文章《》已经介绍过了,这里增加2个字段:
把10s内的买卖委托价格的均值作为该K线的买卖委托价,这个价格我们用来做成交价格的模拟
3)准备策略决策数据
策略决策有可能用的K线已有的字段,也有可能需要基于已有字段衍生新字段。本例中我们基于Close衍生MA5和MA20两个字段
对于高频数据处理,我们一定要尽可能地避免使用循环,用循环的地方多了,效率就很难提起来。我们使用rolling函数实现滚动计算指定长度的均值,这个内置的滚动机制要比