码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-04-03 00:05:42      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:相关   时间间隔   pytho   第一个   https   alt   检查   朋友   价格   

还在用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

标签:相关   时间间隔   pytho   第一个   https   alt   检查   朋友   价格   

原文地址:https://blog.51cto.com/14258357/2373261

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!