如何对比vnpy和kungfu量化交易系统的各自优缺点和侧重点?

论坛 期权论坛 期权     
hongxu yan   2018-10-17 22:39   20673   4
分享到 :
0 人收藏

4 个回复

倒序浏览
2#
低端叫兽  4级常客 | 2018-10-17 22:39:03 发帖IP地址来自
两边的源码我都仔细读过。
董可人的那个功夫,低时延的核心在于易经筋模块。进程间通过共享内存(mmap)通信。共享内存上面的数据结构比较简洁,就是一个header加数据体,且数据帧是连续的,每块共享内存只有一个进程或线程进行写入操作,但允许多个线程或进程去读。
优点:
1.数据在内存上连续,所以cache 命中率会比较高,当然,使用时记得给自己的数据做cache line对齐,避免出现假共享导致的乒乓缓存。
2.由于是线性结构且只有一个生产者写入,因此写入操作是线程安全的,并且完全不用加锁,连CAS都不用。至于读取操作,由于没有pop操作且允许多个线程读取同一位置,同样不需要上锁也不需要CAS操作,进程线程间通信自然就快了。
我把这套操作复制到自己实现的lockfreeringbuffer上测试过,一写多读(注:没有pop操作),以ctp的行情报文为例,每隔500ms读写一次,没有做cache  line对齐和绑核等优化,平均读写耗时约3200多纳秒(不包括上下文切换的时间)。标准差有点大,因为没有做上述优化,导致cache命中太低。
另外说一下,每隔几百毫秒写入一次和连续写入是两种完全不同的场景,我之前测试时,连续读写一百万次,平均耗时不过百纳秒级,这是特定场景之下cache命中率虚高导致的,不能当真测试场景请尽可能贴近真实场景当然,实盘时让写行情的进程独占一个物理core,再做下cacheline对齐,最后的结果肯定比这个好



3.既然是基于mmap的操作,自然可以把行情和下单异步写入磁盘,方便以后复盘和回测。
不过,有两点我得说明,
一.kungfu 不管再怎么快,你如果不把机器放交易所旁边,不用FPGA 的行情源和下单接口都是没意义的。用ctp那玩意处理一次行情接收,从网卡收包到API 处理好报文,几百微秒就过去了,应用层的交易系统快个几微秒完全无济于事
二.交易所用来组播行情的router存在一定的网络抖动,应该是微秒级别,具体数据 @MB MA 知道,当然,他肯定不会告诉你。
三.交易系统的表现还取决于具体策略的计算复杂程度,比如美式期权的定价,涉及的运算的复杂度和时延就比较高,有些机构本身交易系统时延会比kungfu慢个两位数微秒,但照样可以在国内商品期权上赚钱。
目前盛立和艾特朗克都提供FPGA 板子用于处理ctp的行情。至于股票行情,当然也有,详见最后一段。
晓优的vn.py:优点是用boost.Python库对Cpp底层进行了封装(比如CTP),用pyQT做了界面,方便了广大不擅长cpp(这玩意显然比Python难学)的普通群众和无力开发自己量化系统的广大中小broker撸量化。功德无量~
vn.py非常适合用来做中低频交易,不够快?你都用python,把策略放本地了,还能要求速度么?并且,vn.py未必不能用来做高频交易,比如比特币和贵金属的跨境套利,相较于不同交易所之间至少数十毫秒的延迟,python带来的性能损失看上去就没那么大了。
vp.py还有个优点就是开源,方便交易者按自己的需要改底层代码。也不难,window环境下把VS和boost库配好就行(如果要用python3,记得使用1.6以上版本的boost)。
两者的共通优点:vn.py和kungfu的开源部分都是免费的。这是最大的优点。
好了,最后是硬广时间,我司。。。。。。(未完待续,等我从老大那里拿了宣传稿再说)
3#
学时习  4级常客 | 2018-10-17 22:39:04 发帖IP地址来自
对于功夫,我就不明白这个系统为什么会在有vnpy的时候占据市场,是因为很多人对高频有需求?那为什么不托管交易所机房节省几毫秒,而选择这个系统节省几微妙,我觉得这个系统的最大价值是帮助了一些想做高频的人看一下高频系统用的是什么原理搭建的,然后自己去写、托管交易所、买机器买网卡等,单单用这个系统肯定不可能的,更何况这个系统距离真正高频的系统性能还差了很远。
再说说vnpy,我觉得 @MB MA 说的他们的缺点是对的,可是聪明人不光只是喷而已,还要讲讲为什么会这样,怎么解决。我见过用vnpy的上亿资金也有,自己的系统不如vnpy的机构也很多。开源的东西都是需要根据自己的需求改的,至少要比你自己重新写快吧。


我的建议是,想做高频的人可以借鉴功夫的模式,自己再摸索几年,最好在大机构的高频组做做IT,踩踩坑,不过即使这样也很难追赶上目前高频第一梯队的人,竞速游戏不进则退。
不想做抢单套利这些策略的用vnpy足矣,但还需要根据自己的需要大改,实盘一段时间稳定了才行。至少学习python的成本很低,出错又好查一点。
4#
匿名用户   | 2018-10-17 22:39:05 发帖IP地址来自
提示: 作者被禁止或删除 内容自动屏蔽
5#
tradercoder  2级吧友 | 2018-10-17 22:39:06 发帖IP地址来自
1.  两者都能使策略尽快上实盘,而不用浪费过多时间在框架等方面。
2.  vnpy只支持python开发策略,kf支持cpp与python。
3.  kf是一个实体组织去开发维护,项目可持续性,程序可靠性相对好一点。vnpy有历史群众基础。
移植几个策略到这2个平台上,看哪个赚钱多就用哪个喽,实战是检验IT系统的唯一标准。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

下载期权论坛手机APP