策略跑得比熊猫还慢?--您也许错过了闪电侠Deque

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了策略跑得比熊猫还慢?--您也许错过了闪电侠Deque相关的知识,希望对你有一定的参考价值。

还在用pandas处理tick数据?看看怎样将策略效率提升1000倍.


我们在设计量化交易系统时有一个非常重要的性能指标,即“内部响应时间”。该指标为从系统收到信息(比如价格数据)到发出委托的时间间隔。该指标只和量化交易系统内部处理数据的性能相关,和交易所、经纪商、天气或其他任何外部环境都无关联(也就是纯粹是您自己编程水平的问题)。

技术图片

如果一个投资者的交易系统有更短的内部响应时间,那么在其他条件相同的情况下,他就能更快地发出委托,更快地成交。如果众多投资者采用相同或比较相似的策略(多亏了我们的科普工作,现在您也知道专业机构的策略思路了),那么速度最快的那个投资者就会占据最有利的地位,不但能够第一个入场成交,还能先人一步去止盈止损。

技术图片

由于目前国内主要期货交易所的行情一般是500毫秒(1毫秒为千分之一秒)一个切片,我们的交易一般也就在毫秒级别完成。

如何去衡量策略代码的执行速度呢?

神通广大的Python可以实现的方式有很多,比如timeit函数。
技术图片

还记得我们曾经介绍过如何用真格量化跑tick策略么,当时用的是Numpy里的array来处理一系列tick数据。这是否是最快的方法呢?我们可以用timeit来测测速度。

技术图片

比如我们拿一个2×1000的数组来模仿针对tick数据的队列操作,即用一个队列存储5行数据,每行两个整数,有新的一行数据时就对这个队列进行先入先出的更新:
技术图片

我们选来进行速度竞赛的选手包括Numpy、Pandas和Deque(还有其他的选手您可以自己试试),看看谁跑得更快。

测试结果如下:

**Deque :

0.00146322382114秒

Pandas :

2.10415453728秒

Numpy Array :

0.00657957320599秒**

跑得最快的Deque居然只用1.46毫秒就完成了操作,Numpy用了6.58毫秒,而Pandas用了惊人(慢得惊人)的2.1秒!

在这个队列操作上,Deque的速度是Pandas的1438倍,Numpy的速度是Pandas的320倍。

技术图片

我们可以说,如果您不加考虑就使用Pandas来频繁处理队列数据,那很可能就输在了起跑线上。您的策略程序“内部响应”时间就已经将您排除在高频交易的朋友圈之外了。

如果您还在抱怨程序跑不快,不妨用timeit检查一下到底是哪个地方掉了链子。
技术图片

以上是关于策略跑得比熊猫还慢?--您也许错过了闪电侠Deque的主要内容,如果未能解决你的问题,请参考以下文章

用「闪电侠」的例子解释一下进程和线程

用「闪电侠」的例子解释一下进程和线程

[51nod1789] 跑得比谁都快

为什么OpenCV用GPU/cuda跑得比用CPU慢?

跑得比猎豹快的机器人来了,还能游泳跳跃,大小仅为毫米级 | Nature子刊

打印文件中每个单词的出现次数[关闭]