暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

量化策略研究与开发用哪种语言好?

kdb中文教程 2020-12-22
723

"交易机构趋向于Python和C++的组合",再加上一个数据库。而用kdb+/q一个就能全搞定,因为它既是开发语言又是数据库,它比c++简单但速度接近c++甚至超过c++,信不信由你。


本文转自闪策科技。原文:


想要从事量化策略研究与交易的初学者碰到的第一个问题就是编译语言工具的选择。

对于没有编程基础的新手,选择任何一个语言进行策略开发,都有不小的学习成本。

更重要的是,选择了一门语言,接下来开发环境、数据接口与平台、同业之间的交流、遇到问题后的支持、甚至是团队成员的招聘,都跟着被“套牢”。所以从一开始就必须慎重对待。

量化交易员面临的大致选择有:C/C++/Java/C#/R/Matlab/Excel等等。

从应用场景而言,R\Matlab适合于策略研究,Python,C++、C#适合用于策略开发。

从开发难度而言,Python和Matlab都比较容易,Java和C++麻烦一些。

从运行速度而言,C++、Java要快于Matlab和Python,所以追求执行效率的交易团队更多会使用C++进行策略的开发和交易。

另外,从量化资源而言,Python资源较多,可以找到很多开源框架,且 Python是免费的。

所以,Python对于初学者会更友好。

各个语言的层级,图源知乎

性能:汇编>系统级语言>应用级语言>脚本级语言

可读性:脚本级语言>应用级语言>系统级语言>汇编

我们从以下几个方面考虑简单做个对比。

01
学习成本

C、C++的特点是速度最快但要想用好,必须对计算机底层架构、编译器等等有较好的理解这是非计算机专业的人很难做到的。

一般来讲,量化交易中除了最终在生产环境下实现交易的程序,还有许多工作要投入到策略模型的开发、验证等工作中。

对于一个交易策略的想法,如果全部都采用C++,所耗费的开发时间和精力都是不划算的。而且,并不是每个人都能写C++,可能许多是纯金融或者没有程序开发的经验,那么要求他们用C++去对自己的策略进行验证就有些挑战。

Java受语言特征和开发环境限制,开发速度比较慢,代码量比较大,故不合适。

Excel面对GB级别的数据运行效率低,也不适用于处理数据样本较大的量化交易。

Python、R和Matlab学起来都简单,上手也快,可以说是“一周学会编程”。

R和Matlab(商业化产品,价格不太可爱)一般更适合做数据处理、运算,Python可以做的事情更多些,比如写个爬虫爬点数据,写个网页什么的,也可以面对处理实时行情的复杂情况。

Python有许多库可以用,只有你找不到的,没有你想不到,和量化这块结合比较紧密的有:

  • Numpy&Scipy:科学计算库,矩阵计算;

  • Pandas:金融数据分析神器,原AQR资本员工写的一个库,处理时间序列的标配;

  • pandas_datareader:国外股票宏观数据接口;

  • Matplotlib:画图库;

  • scikit-learn:机器学习库,包括一些数据预处理;

  • statsmodels:统计分析模块,线性回归;

  • TuShare:免费、开源的python财经数据接口包;

  • Zipline:回测系统;

  • TaLib:技术指标库;

02
易上手、便捷性

开始进行量化分析阶段,哪个语言用起来碰到问题最少,最方便省事?

用历史数据的回测举例。假设我们有2014年所有股票的全年日线,现在我们想看看600001的全年前10个最高股价出现在什么时候。

Python世界有个强大的pandas库,所以一句话就解决问题:



dailybar[dailybar [‘code’]==‘600001’].sort_values([‘close’].head(10)

R/Mathlab等科学语言也可以做到。

C/C++没有完备的第三方库。如果为了做大量的计算,要自己实现、维护、优化相应的底层算法,是一件很需要花费时间编译的事情。

03
实战效率

现在我们更进一步,要做实时行情分析和决策。

以A股的入门级L1数据为例,每3秒要确保处理完3000条快照数据,并完成相应的计算甚至下单。

这样的场景,C和C++可以快速响应。所以,行情软件比如大智慧、同花顺等客户端都是使用高效率的语言开发的,大部分的交易系统也是基于C和C++研发的。

Python的速度也可以满足一般的实时行情分析的需求,也有越来越多的平台接口Python化,只是如果追求低延时和高稳定,Python作为脚本语言并不是最佳的选择 。

总的来说 

Python可以更快地验证策略,C++可以更快的执行你的策略。所以,越来越多的交易机构趋向于Python和C++的组合。

交易系统的设计上也需要充分考虑到不同交易团队的编译语言,比如闪策科技在策略与交易系统的交互上,可以支持使用不同开发语言的团队使用。

语言就是一种工具,没有最好的语言,只有最合适的语言,策略好不好最重要的还是交易模型思维的可行性。

以上,希望可以帮助到大家。

参考资料:

作者:汪彦冰
https://www.zhihu.com/question/28378292/answer/157062208

作者:李伟振
https://www.zhihu.com/question/22211032/answer/137290158

作者:窦福成
链接:
https://zhuanlan.zhihu.com/p/22113760

作者:find goo
链接:
https://www.zhihu.com/question/25404359/answer/154094045


数据库
文章转载自 kdb中文教程,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

代做工资流水公司兰州车贷银行流水威海企业对公流水模板岳阳代开贷款流水长沙打印工资流水单曲靖签证银行流水 代办临沂代做背调工资流水济南代开流水单绵阳打贷款工资流水宿迁查询购房银行流水黄冈办薪资流水单合肥银行流水账办理泰安代开背调流水漳州企业贷流水制作咸阳查询车贷流水中山办流水单海口打印工作收入证明唐山银行流水电子版淮安代办对公账户流水沈阳入职工资流水多少钱宜昌工资流水账单打印株洲公司流水代开蚌埠个人工资流水 打印揭阳制作消费贷流水鞍山对公账户流水多少钱南通做银行流水PS唐山房贷工资流水 公司莆田银行流水电子版图片赣州办购房银行流水常州入职银行流水多少钱太原薪资流水费用香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

代做工资流水公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化