策略跑得比熊猫还慢?--您也许错过了闪电侠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检查一下到底是哪个地方掉了链子。

— — — — — — E N D — — — — — —

往期文章:

Numpy处理tick级别数据技巧

真正赚钱的期权策略曲线是这样的

多品种历史波动率计算

如何实现全市场自动盯盘

AI是怎样看懂研报的

真格量化策略debug秘籍

真格量化对接实盘交易

常见高频交易策略简介

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

真格量化可访问:

https://51zhenge.com

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值