楼主: wdd3
18471 13

[分布式系统架构] 为什么说VNPY性能和架构不适合生产环境 [推广有奖]

  • 0关注
  • 0粉丝

小学生

78%

还不是VIP/贵宾

-

威望
0
论坛币
10 个
学术水平
0 点
热心指数
3 点
信用等级
0 点
经验
82 点
帖子
7
精华
0
在线时间
5 小时
注册时间
2014-1-1
最后登录
2019-5-22

wdd3 发表于 2017-12-24 10:12:03 |显示全部楼层
“百家争鸣,百花齐放”的意思是,许多个学派互相争论宣传自己的观点和学说,许多不同品种的花儿一齐开放。形容学术流派自由发展,艺术作品层出不穷,不受约束的一幅欣欣向荣的景象。同时也突出了社会稳定,政治清明,人民安居乐业的可喜景象。

本篇只针对VNPY的架构性能提出问题。

还想说明的是,本篇对VNPY为例子,并不是针对VNPY,而是对现在有VNPY架构的性能提出问题,让VNPY重新审视自身缺陷,对整个量化行业是有意义的;

讲一个笑话:
高考结束了,小明平时成绩很好发挥也不错,完全可以达到重点本科分数线。
但小明在填报志愿的时候,出了一个可笑的逻辑,因为小明觉得考大学本科可能比较难学,想省点脑子,所以最后报考了大专(不用那么消耗脑子嘛,更何况报考的这所大专学校有一门选修课“网页设计”非常不错)。
选VNPY的逻辑如同小明的逻辑,
python较为容易学习嘛,python初学者一看,原来python也可以搞底层(更何况这所大专学校还有“网页设计(PYTHON搞底层)”这门选修课成了加分项?难道本科大学就没这门“网页设计(C++搞底层)”课程了吗?是不是有点违背选python的初衷呢?)啊,其实搞底层C++(大学本科)就好了啊。
同样是搞底层,PYTHON不会比C++简单多少,带来最显著的效果是性能大打折扣!!!VNPY是用python 做了不适合的事情。
在这个行业,相信大家不止一个人也不止一次的说过类似的话:"一个成熟的系统不会是由一门语言去包打天下的”。
python不适合开发大项目,C++可以开发大项目。你拿PYTHON做什么大型交易系统嘛。
VNPY 是把python缺点美化成了优点。
关于python的性能问题,可以参考下面3篇文章
《测试 Node.js 与 python 的计算性能,震惊了,node.js和C居然比python快了70多倍》
https://www.v2ex.com/t/113887?p=1
《循环测试:C性能是PYTHON的 62倍,VNPY你居然用PYTHON做事件驱动?》 http://www.iteye.com/topic/699462
《 Python 比 C++ 慢 22 倍》
https://www.juhe.cn/news/index/id/843
当然简单的说python比C++慢22倍,比node.js慢70倍,比C慢62倍并不公平,
事实上,当python作为胶水调用一些库进行计算的时候,甚至比C++本身做计算还要快,得益于CPU基于硬件对PYTHON调用的类库(例如numpy)做了硬件上的优化
当然如果python只是作为胶水,如果只是粘合各种C++开发的类库,那么性能差异并不明显,就好像用胶水补车胎,只要胶水都抹均匀了,强度取决于贴上去的那块橡胶。
不可能像VNPY那样全部用胶水糊弄一下。
用python搞什么底层嘛?对于一些基本的语句,例如for语句,python性能不足C++
的1/10;VNPY利用python做事件驱动,性能非常之差,而且无法避免GIL全局锁,更重要的是,你逼着PYTHON程序员搞底层啊。既然那么费脑子为什么不直接选择C++?
对刚学习python的初学者来说,一看VN.py可以搞底层,觉得非常棒,“哇,python还可以搞底层”。但他并不知道付出的代价是什么。
用python搞底层是比较讨好而已,但只搞python的人,并不知道性能为何物。
有几个做底层的资深程序员,用过VN.PY后都和我述说,VN.PY根本不适合生产环境。
python的优势不在于做底层,而是做数据分析和调用各种类库。
选择一门语言不在于他的缺点,而在于它的优点
选择是因为优点,但也要规避缺点。
VNPY作者自诩某是私募基金的首席即便是事实,但就我在私募作为CTO从业经历,因为现阶段的私募一般大多在10个人以内,做IT的一般就1个人,做python研究员的有2-3个人居多,其他是财务,前台,基金经理等的。
就目前小的私募规模上,人员配备都不整齐,如果私募想从节省成本考虑,省一个C++的话,就很容易让一个python程序员(例如VNPY作者)替代底层C++程序干了不恰当的事。
据国外的朋友都知道,国外量化基金的量化系统是多么完善。就国内而言还在太过于原始的阶段。特别是拿PYTHON做底层的架构更是简陋不堪。
当然有VNPY的粉丝会不服,但我想说的是,可能是人们只愿意相信他愿意相信的。


回帖推荐

wdgwz 发表于2楼  查看完整内容

目前国内量化系统还不成熟,和国外的系统还差很远,国内的平台还有很大提升空间,如果都像某NPY那样,用谎言低于新的东西被攻击和封杀,那样有悖于开源精神, 如果整个量化行业都是这个风气,大家也就别希望有更好的产品出现了。 没有争论,就没有提高,但是争论的前提不能像之前vnpy那样那样做人身攻击,也不能而已误导和诽谤。 我们看看2017年4月份左右VN.PY作者为攻击比自己性能更好QUICKLIB说出了6个谎言 https:// ...
已有 1 人评分热心指数 收起 理由
我的素质低 + 3 精彩帖子

总评分: 热心指数 + 3   查看全部评分

stata SPSS
wdgwz 在职认证  发表于 2018-7-2 13:59:54 |显示全部楼层
本帖最后由 wdgwz 于 2018-8-10 20:35 编辑

111.jpg



目前国内量化系统还不成熟,和国外的系统还差很远,国内的平台还有很大提升空间,如果都像某NPY那样,用谎言低于新的东西被攻击和封杀,那样有悖于开源精神, 如果整个量化行业都是这个风气,大家也就别希望有更好的产品出现了。

没有争论,就没有提高,但是争论的前提不能像之前vnpy那样那样做人身攻击,也不能而已误导和诽谤。

我们看看2017年4月份左右VN.PY作者为攻击比自己性能更好QUICKLIB说出了6个谎言 https://zhuanlan.zhihu.com/p/27243838

既然VNPY能捏造6个谎言攻击Quicklib 的产品和恶意诽谤Quicklib作者 ,那么Quicklib就能说清楚事实,说VNPY架构的缺陷的道理,对VNPY是害处还是好处,取决于VNPY对缺陷的处理态度。如果VNPY是正视,那么我就是在帮VNPY,如果VNPY不正视,那是它自己不负责任。

下面只看架构理论上的道理,不用关注VNPY原始作者个人对错


选VNPY的逻辑, python较为容易学习嘛,python初学者一看,原来python也可以搞底层 这门选修课成了加分项?完全可以用 C++搞底层 吧?是不是有点违背选python的初衷呢?

在这个行业,相信大家不止一个人也不止一次的说过类似的话:"一个成熟的系统不会是由一门语言去包打天下的”。

python不适合开发大项目,C++可以开发大项目。你拿PYTHON做什么大型交易系统嘛。

VNPY 是把python缺点美化成了优点。

为什么说纯python框架搞底层性能不行?


VNPY 量化交易上的性能对比分析​
www.pythonpai.com图标

关于python的性能问题,可以参考下面3篇文章

《测试 Node.js 与 python 的计算性能,震惊了,node.js和C居然比python快了70多倍》

https://www.v2ex.com/t/113887?p=1
《循环测试:C性能是PYTHON的 62倍,VNPY你居然用PYTHON做事件驱动?》 http://www.iteye.com/topic/699462

《 Python 比 C++ 慢 22 倍》

https://www.juhe.cn/news/index/id/843
当然简单的说python比C++慢22倍,比node.js慢70倍,比C慢62倍并不公平,

事实上,当python作为胶水调用一些库进行计算的时候,甚至比C++本身做计算还要快,得益于CPU基于硬件对PYTHON调用的类库(例如numpy)做了硬件上的优化

当然如果python只是作为胶水,如果只是粘合各种C++开发的类库,那么性能差异并不明显,就好像用胶水补车胎,只要胶水都抹均匀了,强度取决于贴上去的那块橡胶。

不可能像VNPY那样全部用胶水糊弄一下。

用python搞什么底层嘛?对于一些基本的语句,例如for语句,python性能不足C++
的1/10;VNPY利用python做事件驱动,性能非常之差,而且无法避免GIL全局锁,更重要的是,你逼着PYTHON程序员搞底层啊。既然那么费脑子为什么不直接选择C++?

对刚学习python的初学者来说,一看VN.py可以搞底层,觉得非常棒,“哇,python还可以搞底层”。但他并不知道付出的代价是什么。

用python搞底层是比较讨好而已,但只搞python的人,并不知道性能为何物。

有几个做底层的资深程序员,用过VN.PY后都和我述说,VN.PY根本不适合生产环境。

python的优势不在于做底层,而是做数据分析和调用各种类库。

选择一门语言不在于他的缺点,而在于它的优点

选择是因为优点,但也要规避缺点

VNPY作者自诩某是私募基金的首席即便是事实,但就我在私募作为CTO从业经历,因为现阶段的私募一般大多在10个人以内,做IT的一般就1个人,做python研究员的有2-3个人居多,其他是财务,前台,基金经理等的。

就目前小的私募规模上,人员配备都不整齐,如果私募想从节省成本考虑,省一个C++的话,就很容易让一个python程序员(例如VNPY作者)替代底层C++程序干了不恰当的事。

据国外的朋友都知道,国外量化基金的量化系统是多么完善。就国内而言还在太过于原始的阶段。特别是拿PYTHON做底层的架构更是简陋不堪。

当然有VNPY的粉丝会不服,但我想说的是,可能是人们只愿意相信他愿意相信的。

1.VNPY首先对Quicklib攻击在先,VNPY作者除了采用谎言对产品进行误导性攻击,还对Quciklib作者本人进行了人身攻击。

我们看看2017年4月份左右VN.PY作者为攻击比自己性能更好QUICKLIB说出了6个谎言

https://zhuanlan.zhihu.com/p/27243838

2.长久以来,Quicklib大量发文也只是阐述事情经过的事实。

3.基于VN.PY作者所说,Quicklib蹭VNPY热度的说法,我想说的是目前Quicklib几个群达到2500人,根本不需要蹭任何产品的热度;

4.既然VN.PY认为Quicklib不足为惧,蹭了它的热度,那VNPY为何要首先攻击Quicklib在先?

5.本次只是从理论的高度去阐述VNPY不适合生产环境,并非对VNPY作者进行人身攻击。

因为合理的技术探讨会促使开发出更好的产品。

和VNPY比起来,为什么有其它的程序化交易框架架构可以做到了底层C++驱动的性能,不仅可以实现绕过GIL全局锁,甚至在底层还可以实现C++无锁队列,并在python应用层调用较为简单,性能更好很多。

这不是PYTHON本身的问题,而是VNPY的python框架架构的问题!

Quicklib秉承的是底层用C++驱动,采用C++封装好方法,并提供给python调用,采用异步IO, 通过底层驱动,用较短的代码路径迅速进入数据高效处理环节。

http://www.quicklib.cn

Quicklib作者开发的酷操盘手CTP期货跟单软件
http://www.kucps.com

下一篇《承载科技金融人的梦想,追求量化速度效率的极致》
http://www.lhjie.net
http://www.pythonpai.com


期货,A股等API程序化量化开发技术交流​
www.quicklib.cn
python派量化交易、python、程序化交易、私募基金、基金销售、资源导航站​
www.pythonpai.cn
期货,A股低佣金开户和量化交易技术交流​
www.kaihucn.cn




农夫由于付不起养骡子的成本,于是决定用狗拉磨,于是狗变成了神狗,不仅要看家,还要拉磨​
www.pythonpai.com图标


农夫由于付不起养骡子的成本,于是决定用狗拉磨,于是狗变成了神狗,不仅要看家,还要拉磨。

农夫于是对对周围的邻居们夸耀说自己养了一条神狗。有邻居l前来询问如何培养神狗,于是农夫写了一本厚厚的小册子,教学各种培训神狗的方法。甚至开了LIVE讲座,收取350元培训费用。

有人开始用这小册子开班授课教大家如何培育,既可以看门,又可以拉磨的神狗。




由于大家都在讲如何培育神狗,渐渐的趋之若鹜。

很多做神狗培育课程的培训师还赚了一笔小钱,这样大家都赚了小钱。

但大家都没有用神狗拉磨提高正常的生产效率而赚钱!

突然有人问农夫:你为什么不养一头骡子?

这真是狗的悲哀。

222.jpg


在量化行业,这几年的风向在vnpy的引领下都是去养“神狗”,既要搞底层,还要搞策略。运行效率降低10倍以上,导致大家花了大量时间最后发现根本不适合生产环境。

有人安慰自己,本来python效率就不高嘛。 这说法只是横向对比,狗和骡子比起来确实不适合拉磨。

但请注意,因为这个神狗长期疲惫,积劳成疾,既不能拉磨也不能看门了。连普通狗都不如了 (纵向对比)。



这是python的悲哀,也是量化人的悲哀!

当然python做策略开发部分是非常适合的,调用各种C++开发的库做i数据分析和数据处理,一点也不低效,但做底层那就效率低效了。

所以最好的方式是: 用python做策略,用C++开发底层。

养一头骡子拉磨,养一条狗看门。对测量师来说,不用把职业生涯精力浪费在底层处理上。

****把量化交易中最后一环(策略开发)交给python,这需要C++的异步驱动支持python的策略开发。

关于C++开发底层异步IO驱动python

量化林:Quicklib采用的异步IO架构的特点​
zhuanlan.zhihu.com图标

当然也有人说, VN.PY至少在开源和推动python量化做了贡献啊!

开源和不开源都是为了利益,开源可能是因为为了普及,也可能是为了向赚培训的钱和LIVE的钱。

需求引导技术,需求的出现是必然的,而用哪一种技术,哪一种语言,哪一种框架实现量化确实不确定的。

没有python,也会有xython出现,zython出现。

没有ANPY,也会有BNPY,也会有CNPY出现。

你认为VN.PY贡献就是普及了python还是普及了量化?

可能有一点用,但最重要的原因是因为你为了学习量化付出了时间,无论是你看视频,还是看书,都会有收获的,而不是因为任何语言或者任何框架。
回复

使用道具 举报

wdgwz 在职认证  发表于 2018-7-2 14:00:30 |显示全部楼层
当然Quicklib还有一系列工具,比如资金曲线分时图工具,按每10秒取样一次,绘制资金曲线分时图,可以很方便来进行交易策略的调整,还有全市场行情采集工具,以及回播行情API,接入分布式计算可以实现TICK基本的高效回测,并支持实盘的数据和历史数据的结合。

1是可以用来尽心基于TICK的回测,2是可以用来进行降低交易系统的初始化时间,本地局域网维护行情历史数据,非常简单便利。

CTP账户资金曲线工具使用说明 一、本工具用于绘制资金曲线分时图。 每10s查询一次账户的动态权益,可用资金,静态权益(前一天结算权益,当天不会变化) 盈亏比例计算公式为: 盈亏比例 = 100*(动态权益-静态权益)/静态权益)% 二、 通过修改配置文件setting.ini信息,运行后自动按配置文件中的账户登录,并保持资金变化信息到Data\日期\账户.csv 文件中; 双击列表中的账户,可以打开当天资金曲线分时图。 三、设置您的CTP账户,可支持模拟和实盘账户,目前只支持1个账户,未来会支持多账户资金曲线数据存储和绘制。

以下是Quicklib资金曲线工具,对高频交易的资金曲线进行测试https://pic4.zhimg.com/v2-ae0a0dfb1892d17b4fb6bfc250f71e97_b.jpg

CTP账户资金曲线工具 下载 http://www.quicklib.cn/download/Quicklib_AcountCurve_windows.rar

Quicklib CTP 期货行情库交易库下载 http://www.quicklib.cn/download/Quicklib_ctp_furure_windows.rar

Quicklib CTP2 A股行情库 http://www.quicklib.cn/download/Quicklib_ctp2_Ashare_windows.rar

Quicklib MOM模式 博易资管交易库 http://www.quicklib.cn/download/Quicklib_BoyiMom_furure_windows.rar

(用于接入资管投顾系统,MOM模式可实现私募进行投顾的选拔考核,并通过自己的风控系统接入实盘)

期货全品种行情收集工具下载 http://www.quicklib.cn/download/Quicklib_DataCollect_Windows.rar 期货行情重播API作为回测客户端(对应本地的期货全品种行情收集工具作为服务器)

https://pic3.zhimg.com/v2-d3c7328a598a68c4100a2d18c02d6952_b.jpg

分布式计算例子,可用于回测 http://www.quicklib.cn/download/DistributedComputing

Quicklib 监控器库(预警、监控、交易信号数据复制、跟单) http://www.quicklib.cn/download/Quicklib_Monitor&CtpExample_windows

http://www.quicklib.cn/download/Quicklib_Monitor_windows.rar


这是我作为Quicklib作者开发的产品

http://www.kucps.com

程序主界面,基于C++开发的,并封装了子账户API接口
回复

使用道具 举报

wdgwz 在职认证  发表于 2018-7-2 14:00:47 |显示全部楼层
回复

使用道具 举报

wdd3 发表于 2018-10-4 10:05:46 |显示全部楼层
根据金融圈的网友反馈,这个说法在网络并得到至少超过5名金融行业网友认可,原来知乎VNPY和Quicklib对怂事件是VNPY的阴谋!!Quicklib是受害者。

事实是,2017.4的事件不仅得的VNPY作者团队支持,而且大量转发这个不实的文章,VNPY作者用不实的谎言亲自发文攻击Quicklib。
按VNPY作者说的什么需要去蹭热度,这也是大家普遍观点,事实上,这本就是VNPY的谎言之一,网络上已经有人证明了,这是VN.PY策划的阴谋。
我后来看到群友的说法的时候,倒吸了一口凉气,并心里暗暗的骂了一声无耻!

看这篇文章,这是VNPY作者在社区和知乎多次发表10篇以上文章对Quicklib产品和Quicklib原始作者进行人身攻击

这次VNPY一遍用至少6个谎言继续攻击,将攻击Quicklib产品以及对Quicklib原始作者的谎言的文章放在网上,一边装的若无其事,如图:

这是VNPY作者一边心口不一,一边将文章挂在百度第一页对Quicklib产品用6个谎言进行攻击,并对Quicklib进行挖苦和贬低 诽谤长达数千字的文章。

搞Quicklib是因为同属PYTHON ,又是后来者,性能对VNPY有明显优势,扩展性也会好, 有威胁;VNPY捧TUSHARE等,可能是VNPY暂时做不了全部环节, 还要沾别的产品的光。VNPY的文章从来就不是公道的 。
但无论如何,VN.PY不该用下三滥手段用6个谎言攻击Quicklib和作者本人。
刚看到,原来是VN.PY的阴谋,我刚刚明白为什么有人说Quicklib是VN.PY炒作的影子,炒完了,再厚颜无耻的说Quicklib在碰瓷?
让我想起了,在南京大屠杀几十年后,日本人曾经不承认南京大屠杀的事实。
圈里人都知道金融民工和VNPY作者关系很熟,这个文章包括金融民工在VNPY社区撰写,并且得到VNPY作者转发到知乎就是一场VNPY的阴谋!!!!!反过来却说Quicklib在碰瓷?
对VNPY作者我像说的是,一边不声不响的用谎言黑产品,黑作者,一边说不理会了,做**还要立牌坊。
真是让我想起了道貌岸然这个词!!
据知情人说,VNPY名气大适合培训教学,因为坑太多了。
回复

使用道具 举报

wdgwz 在职认证  发表于 2018-10-16 09:31:33 |显示全部楼层
定量投资和传统的定性投资本质上来说是相同的,二者都是基于市场非有效或弱有效的理论基础。两者的区别在于定量投资管理是“定性思想的量化应用”,更加强调数据。量化交易具有以下几个方面的特点:
1、纪律性。根据模型的运行结果进行决策,而不是凭感觉。纪律性既可以克制人性中贪婪、恐惧和侥幸心理等弱点,也可以克服认知偏差,且可跟踪。
2、系统性。具体表现为“三多”。一是多层次,包括在大类资产配置、行业选择、精选具体资产三个层次上都有模型;二是多角度,定量投资的核心思想包括宏观周期、市场结构、估值、成长、盈利质量、分析师盈利预测、市场情绪等多个角度;三是多数据,即对海量数据的处理。
3、套利思想。定量投资通过全面、系统性的扫描捕捉错误定价、错误估值带来的机会,从而发现估值洼地,并通过买入低估资产、卖出高估资产而获利。
4、概率取胜。一是定量投资不断从历史数据中挖掘有望重复的规律并加以利用;二是依靠组合资产取胜,而不是单个资产取胜。
回复

使用道具 举报

wdgwz 在职认证  发表于 2018-10-16 09:32:14 |显示全部楼层
wdgwz 发表于 2018-10-16 09:31
定量投资和传统的定性投资本质上来说是相同的,二者都是基于市场非有效或弱有效的理论基础。两者的区别在于 ...
量化交易是指以先进的数学模型替代人为的主观判断,利用计算机技术从庞大的历史数据中海选能带来超额收益的多种“大概率”事件以制定策略,极大地减少了投资者情绪波动的影响,避免在市场极度狂热或悲观的情况下作出非理性的投资决策 。
回复

使用道具 举报

wdgwz 在职认证  发表于 2018-10-16 09:33:39 |显示全部楼层
本帖最后由 wdgwz 于 2018-10-16 09:34 编辑

看起和AlgoTrader基本没差太多对吧? 但是呢仔细看一下, 还是有一些区别的, 在vnpy里面:

    VNPY界面与逻辑耦合到一起
     VNPYIO(数据落地的mango db)和逻辑耦合到一起

这两点异同其实是会照成 VNPY比较大的性能问题的 ,

经过实测,几个朋友都发现VNPY不适合实盘交易的

回复

使用道具 举报

wdgwz 在职认证  发表于 2018-10-23 15:15:31 |显示全部楼层
VNNPY适合培训,不适合实盘
性能架构有缺陷

用python搞底层是比较讨好而已,但只搞python的人,并不知道性能为何物。

误导PYTHON的方向

农夫由于付不起养骡子的成本,于是决定用狗拉磨,于是狗变成了神狗,不仅要看家,还要拉磨。 农夫于是对对周围的邻居们夸耀说自己养了一条神狗。有邻居l前来询问如何培养神狗,于是农夫写了一本厚厚的小册子,教学各种培训神狗的方法。甚至开了LIVE讲座,收取350元培训费用。 有人开始用这小册子开班授课教大家如何培育,既可以看门,又可以拉磨的神狗。 由于大家都在讲如何培育神狗,渐渐的趋之若鹜。 很多做神狗培育课程的培训师还赚了一笔小钱,这样大家都赚了小钱。 但大家都没有用神狗拉磨提高正常的生产效率而赚钱! 突然有人问农夫:你为什么不养一头骡子? 这真是狗的悲哀。 在量化行业,这几年的风向在vnpy的引领下都是去养“神狗”,既要搞底层,还要搞策略。运行效率降低10倍以上,导致大家花了大量时间最后发现根本不适合生产环境。 有人安慰自己,本来python效率就不高嘛。 这说法只是横向对比,狗和骡子比起来确实不适合拉磨。 但请注意,因为这个神狗长期疲惫,积劳成疾,既不能拉磨也不能看门了。连普通狗都不如了 (纵向对比)。 这是python的悲哀,也是量化人的悲哀! 当然python做策略开发部分是非常适合的,调用各种C++开发的库做i数据分析和数据处理,一点也不低效,但做底层那就效率低效了。 所以最好的方式是: 用python做策略,用C++开发底层。 养一头骡子拉磨,养一条狗看门。 对策略师来说,不应该把职业生涯精力浪费在底层处理上。 把量化交易中最后一环(策略开发)交给python,这需要C++的异步驱动支持python的策略开发。
回复

使用道具 举报

wangyong8935 发表于 2018-10-26 13:02:56 |显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 我要注册

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2019-5-23 03:43