文 | 用Python的交易员
编辑 | 对冲研投 转载请注明出处
申明
事情起源于这篇文章:Quicklib对VNPY团队贬低回应和异步IO与传统架构性能对比 - 知乎专栏
Quicklib利用Python特点,在底层驱动上采用了异步IO来替代多线程,使得底层没有全局锁,性能大大提高。进入应用层后,复杂的耗时计算则采用Python的多进程库。
对于Quicklib这个项目,过去几个月也是一直有所耳闻,不过一直没有时间去做深入的研究。晚上吃饭的时候收到多位朋友发来的这篇文章,发现作者在文中对于vn.py表现出了诸多不满的情绪(社区和代码),尤其指责vn.py核心开发团队对Quicklib大肆抨击。
想了半天也记不起来自己或者几个做核心开发的朋友干过相关的事情(最近因为商品期权上市一直忙的不可开交),然后去调查了一圈,发现是社区论坛上有位用户写了若干篇关于Quicklib的分析文章,估计引起了Quicklib作者的不满,在此先告个歉。
不过同时也想郑重申明下:vn.py的核心开发团队基本都是各家大型量化私募的交易负责人,平时一般都忙于从“交易”而非“软件”或者“培训””上赚钱,以后没有弄清楚请不要乱扣帽子。
回应
本来做完上面的申明后就准备这么算了,不过豆粕期权的隐含波动率从上市日的18%三个交易日不到就跌的接近了最近的实现波动率13%,接下来几天一下子没了什么特别显著的交易机会,闲来无事就多看了点Quicklib相关的信息,不看还好,看了后这下真是有点气不打一处来。
在多篇文章里,Quicklib的作者都表达了对vn.py性能方面的抨击,指出vn.py在架构方面的各种不合理,并且提出Quicklib则是解决了Python最大的难题GIL全局锁,并且能够直接使用Python来开发超高频交易策略。
“同行是冤家”的道理我明白,也知道不是所有开源项目的作者都对于盈利没有追求,有时抨击下对手抬高下自己本不是什么大不了的事情,只要说的事情符合事实那都可以算作“技术切磋”的范畴,不过从Quicklib官网下载“内盘期货CTP Python框架”后,解压一看瞬间有点无语:
首先是一张“QuickLibGUIDemo”的截图:
诶,怎么和vn.py早期开发演示模块的vn.demo看着这么像??可能只是借鉴了一些GUI设计吧......
然后再打开目录:
怎么连部分文件名都一模一样??不会这么巧吧。
不信邪了,打开demoUi.py文件看看:
我了个CAO!根本就是vn.demo里面的代码啊,类名、变量名就算了,连格式都是WingIDE内置模板自动生成的效果!当然在文件开头Quicklib的作者没有忘记加入一些自己的“原创描述”内容。
vn.py项目采用的是授权非常自由的MIT协议,允许任何人用于任何其他的开源或者商业项目,都无需向我或者vn.py社区支付任何费用(其实连招呼都不用打)。
但是Quicklib作者老兄,您一边抨击着vn.py架构的各种不合理,一边还在自己的项目里大量使用着vn.py的代码,我想问问:
而且抄的时候拜托能不能专业点,哪怕把代码里的格式稍微换换也行啊......
为了留个证据,我把Quicklib官网下载的代码上传了:微云文件。
另外如果有人质疑以上代码是否属于vn.py项目先写出来的,可以问问vn.py社区早期的用户,几乎所有人都看过这些代码,也可以去vn.py的Github仓库翻commit的历史,没记错这些应该是差不多两年前的代码了。
另外还有看到Quicklib的仓库里有这么一个文件夹:与其他开源框架对比聊天截图。我也真是醉了,借用一个朋友的评论:做开源用这种方式攻击对手,犯得着么?要是真做商业项目那还得了?(我默默补一句:还用了一堆对手的代码......)
计划
对于看到了这里的读者朋友想先道个歉,讲了这么多废话还没有提到和标题相关的内容。
生气归生气,本人好歹是做交易的,转念一想:Quicklib万一真的是彻底解决了GIL的问题,而且还可以应用于超高频交易,那么这个技术无论是对于我自己的交易策略或者对于vn.py项目本身也完全值得借鉴啊!
毕竟开源的好处之一不就是可以博览众长,吸收各家的有点么(想到年底的Performance不进口水也流了下来)!
获得在vn.py社区论坛发布Quicklib相关文章的作者同意后,接下来将会在专栏里发布其写的几篇文章,另外我本人也会再做一个系列关于性能方面的专题内容,一方面是想看看Quicklib是否真的完成了解决GIL痛点的技术(这么言之凿凿估计还是有些干货),另一方面也希望可以激发vn.py社区的灵感和相关讨论,看看有没有其他的办法可以进一步提高vn.py框架的性能。
不早了,准备睡觉,感谢读者朋友们的耐心~
— END —