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

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



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


由于目前国内主要期货交易所的行情一般是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检查一下到底是哪个地方掉了链子。



— — — — — — E N D — — — — — —
往期文章:
Numpy处理tick级别数据技巧
真正赚钱的期权策略曲线是这样的
多品种历史波动率计算
如何实现全市场自动盯盘
AI是怎样看懂研报的
真格量化策略debug秘籍
真格量化对接实盘交易
常见高频交易策略简介

如何用撤单函数改进套利成交



真格量化可访问:
https://51zhenge.com

真格量化微信公众号,长按关注:

遇到了技术问题?欢迎加入真格量化Python技术交流QQ群  726895887


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:870
帖子:180
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP