量化投资用什么编程语言研发策略好呢?
龚安静
来自:
移动端
2022-02-12 18:18
声明:本网站依照法律规定提供财经资讯,未授权或允许任何组织与个人发布交易广告。对任何广告信息请谨慎交易,谨防诈骗。举报邮箱:xxxxxxxxx@qq.com
2022-02-12 18:39最佳答案
量化交易,就是把人能够识别的信息变成数字,输入给计算机程序处理,辅助或者代替人类的思考和交易决策。
初学者碰到的第一个问题就是工具的选择。首先大部分交易员本来不会写程序,选择任何一个语言进行策略开发,都有不小的学习成本。更重要的是,选择了一门语言,接下来开发环境、人员招聘、数据接口与平台、甚至同类人群之间的交流、遇到问题后的支持,都跟着被“套牢”。所以从一开始就必须慎重对待。
先给出答案:对于还没有确定一套固定量化环境的,建议用Python。
量化交易员面临的大致选择有:C/C++/java/C#/R/Matlab/excel等。我们从以下几个方面考虑简单做个对比。
注意:这里假设你团队规模在50人以下。
1 学习成本和应用的广泛性
C、C++的特点是速度最快,但要想用好,必须对计算机底层架构、编译器等等有较好的理解,这是非计算机专业的人很难做到的,对于做量化交易来说更是没有必要。
Java本来是SUN的商业产品,有学习成本和体系的限制,也不适合。
Excel面对GB级别的数据无能为力,这里直接排除。
Python、R和Matlab学起来都简单,上手也快,可以说是“一周学会编程”。但R和Matlab一般只用来做数据处理,而Python作为一门强大的语言,可以做任何事,比如随时写个爬虫爬点数据,随时写个网页什么的,更何况还要面对处理实时行情的复杂情况。
2 开始做量化分析后,哪个用起来碰到问题最少,最方便省事?
用历史数据的回测举例。假设我们有2014年所有股票的全年日线,现在我们想看看600001的全年前10个最高股价出现在什么时候。python世界有个强大的pandas库,所以一句话就解决问题:
dailybar[dailybar [‘code’]==‘600001’].sort_values([‘close’].head(10)
R/Mathlab等科学语言也可以做到。
C/C++没有完备的第三方库。如果为了做大量的计算,要自己实现、维护、优化相应的底层算法,是一件多么头疼的事。
Python从一开始就是开源的,有各种第三方的库可以现成使用。这些底层功能库让程序员省去了“造轮子”的时间,让我们可以集中精力做真正的策略开发工作。
3 现在我们更进一步,要做实时行情分析和决策
以A股的入门级L1数据为例,每3秒要确保处理完3000条快照数据,并完成相应的计算甚至下单。这样的场景,C和C++倒是够快了。所以行情软件比如大智慧、同花顺等客户端都是使用高效率的语言做的,但像客户端那样的开发量,绝大部分量化交易机构没能力也没必要去做吧。
python的速度足够对付一般的实时行情分析了。其底层是C实现的,加上很多第三方的C也是C实现,尽管其计算速度比不上原生C程序,但对我们来说是足够啦。
4 quant离职了,他的研究成果怎么办
Python是使用人群最多、社区最活跃的语言之一,也是最受quant欢迎的语言之一。如果你是老板,你能更容易地招聘到优秀人材,享受到python社区带来的便利。
附几个量化中常用的python库:
- Pandas:
天生为处理金融数据而开发的库。几乎所有的主流数据接口都支持Pandas。Python量化必备。
- Numpy:
科学计算包,向量和矩阵处理超级方便
- SciPy:
开源算法和数学工具包,与Matlab和Scilab等类似
- Matplotlib:
Python的数据画图包,用来绘制出各类丰富的图形和报表。
PS: Python也是机器学习领域被使用最多的语言之一。像tensorflow、scikit-learn、Theano等等对python都有极好的支持。
其他回答(共7条)
-
2022-02-12 18:42 符翩翩 客户经理
您好
研究量化投资模型的目的是找出那些具体盈利确定性的时空价格形态,其最重要手段的概率取胜,最重要的技术是概率统计,最主要的研究方向是市场行为心理。那么我们在选择用于研究的参数时,也应该用我们的经验来确定是否把某技术参数放进去,因为一般来说定性投资比较好用的参数指标对量化投资同样适用。
量化投资区别于传统定性投资的主要特征在于模型。我打个比方,我们看病,中医与西医的诊疗方法是不同,中医是望、闻、问、切,最后判断出的结果,很大程度上基于中医的经验,主观定性程度大一些;西医就不同了,先要病人去拍片子、化验等,这些都要依托于医学仪器,最后得出结论,对症下药。中医对医生的经验要求非常高,他们的主观判断往往决定了治疗效果,而西医则要从容得多,按事先规定好的程序走就行了。量化投资就是股票投资中的西医,它可以比较有效地矫正理智与情绪的不兼容现象。
量化投资的一般思路:选定某些技术指标(我们称之为参数,往往几个组成一组),并将每一个参数的数据范围进行分割,成几等份。然后,用计算机编程写出一段能对这些参数组对股票价格造成的影响进行数据统计的程序,连接至大型数据库进行统计计算,自动选择能够达到较高收益水平的参数组合。但是选出这些参数组后还不能马上应用,因为这里涉及到一个概率陷阱的问题,比如说,有1到100这一百个数字放在那里,现在让你选择,请问你选到100的可能性是多大?是的,就是1/100,如果较幸运你选到了100并不能说明你比别人聪明,而是概率的必然。所以,在进行统计时要特别关注统计的频率与选出的结果组数量之间的关系。在选出符合要求的参数组后我们还应留出至少三年的原始市场数据进行验证,只有验证合格后才能试用。
量化投资原始数据策略:我们选用96年后的市场数据,因为96年股市有过一次交易政策改革(你可以自己查询了解一下),为了不影响研究结果我们不采纳96年以前的数据进数据库。
量化投资研究的硬设备:高计算性能电脑,家用电脑也可以,不过运算时间会很长,我曾经用家用电脑计算了三个月时间才得到想要的数据。
统计方法:可以选用遗传算法,但我在这里陪大家做的是比较简单的模型,所以采用普通统计方法就可以了。
用于量化研究的软件:我采用的是免费的大型数据库MYSQL,ASP网络编程语言,以及可以设置成网络服务器的旗舰版WIN7操作系统。 -
2022-02-12 18:36 赵飞船 客户经理
Python很适合策略研究和对速度不高的量化策略执行。比如真格量化就是使用Python作为策略编程语言。
对速度要求高的还是先考虑C++。 -
2022-02-12 18:33 齐文瑞 客户经理
在整个量化交易策略的研发流程当中,买和卖是最为基本的量化交易策略组成部分,而这个部分的设定主要与收益情况相关。这里所说的相关,具体分为两种不同的情形,一种是总体的关联性,即基于买点、卖点的选择,买卖策略应该得到一个正的整体收益。另一种则来自于对交易资产未来收益的判断、或者说预测,即判断交易资产的未来收益为正时,就买入资产;判断交易资产的未来收益为负时,则卖出或卖空资产。实际操作中,这两种关联关系的情况可能更为复杂一些。有的时候,买和卖的具体操作也可能受到风险方面设置的影响,例如为了限制单次交易的最大损失而采取止损之类的操作时,用于清仓的买卖设置就会相应的变动,这也是作者将风险和买卖用虚线相连的原因。不过在大部分情况下,买卖这一最为基本的组成部分还是与收益的关系最大,研究者也应该在研发这一个组成部分时,着重考虑收益情况的具体影响。
对量化交易策略风险的控制可能会影响到量化交易策略中的买卖设置,但是在更普遍的情况下,风险这一因素主要影响的是交易仓位的设置。当然,前提条件还是需要买卖策略的总体收益为正,在这样的条件下再结合仓位的设置,才能够在合适的风险水平下取得达到要求的收益。通过对交易资产具体仓位的调整,交易者可以比较直接的控制单次交易以及整个交易策略的风险水平。例如在满仓交易的情况下,定量的判断了当前交易的风险之后,觉得风险过大无法承受,那么最为直接的处理方法就是在满仓的基础上相应的降低仓位的大小。在仓位降低之后,对于整体资金而言风险也就随之降低了。由于仓位本身具有量化、直观的特性,因此当交易者希望将风险处理到一个特定的水平时,调整仓位是一个比较方便的手段。
需要说明的是,前面已经提到了买和卖是量化交易策略最为基本的组成部分,实际上仓位的设定是根据买卖决策和风险两个因素共同形成的,不建立在买卖之上的仓位选择是空洞没有意义的。此外还有一个更为极端的情况,仓位的正确设定有助于进一步优化策略的整体收益,之后要介绍的凯利公式的意义正在于此。在图1中由买卖到仓位的箭头,实际上可以看作是收益、买卖这一个整体部分指向仓位的箭头。不过在实际使用中,凯利公式所导出的仓位设定往往过于偏激,超过正常风险控制下的最高仓位值,因此仓位仍然与风险的关系更为紧密。
在图1这个较为松散的量化交易策略研发流程中,交易成本是和买卖以及仓位具有同等地位的组成部分。在实际操作中,就是首先基于对收益和风险的判断得出合适的买卖和仓位选择,然后在买卖和仓位共同组成的量化交易策略当中考虑交易成本,也就是在建立仓位和退出仓位等操作中扣除所需要承担的交易成本。随后再次判断该量化交易策略所代表的收益和风险情况,只有这两个因素仍然在接受范围之内,才能确认这是一个可行的量化交易策略。虽然最后用来执行的组成部分只有买卖和仓位,但是交易成本作为对量化交易策略的一个实际化修正,也是策略研发流程中一个不可或缺的组成部分。
上面提到的对量化交易策略收益和风险情况的判断,实际上是一个综合性的评价问题。一个最为重要的参考依据应该是策略在整个交易过程中的净值走势,通过对策略净值走势的分析,就可以建立起该量化交易策略运行情况的全面判断。但是净值走势本身由于细节过多,因此无法简单的用来进行策略之间的横向对比。这时就需要精炼净值走势中所包含的信息,选取合适的部分形成量化的评价指标,从而进行量化交易策略的进一步判定。就作者看来,评判一个策略的标准中最重要的仍然是策略在整个交易过程下的收益情况,一个负收益的量化交易策略根本无需考虑其风险即可排除。而当收益为正时,再结合风险的度量进行具体的取舍,就可以直观的给出量化交易策略是否合格的评判标准了。作者心目中最重要的风险指标是策略净值的回撤水平,在后面的案例分析中也会重点查看回撤的结果。
于此同时,一些量化交易策略在进行收益和风险情况的判断时,仅仅针对策略自身的净值走势进行研究是不够的,给出一个合理的基准来进行对比往往是更为有效的判别方法。例如后面的案例中会涉及到的量化选股策略,当交易选择仅限为对具体的股票进行持仓,而不考虑空仓或者卖空时,选取一个特定的基准进行对比就会是一个更为有效的判别方法。这主要是由于量化选股策略的仓位始终为多头,因此不论如何配置,策略所持仓位都含有资本资产定价模型中所提到的市场成分。而选股策略本身的意义在于选择更好的股票、不在于获取市场收益,因此将市场走势作为对比、或者在策略收益中剔除掉市场成分就是一个更合理的做法。
上述所有的操作,都需要建立在对历史数据的分析之上,在量化交易领域当中一般称之为回溯测试,或者简称回测。所谓回溯,也就是将交易的过程在历史数据上复现一遍,这里面包含了一个假设,即历史数据在量化交易策略中展现出的样本特征在未来的交易中依然存在,否则回溯测试就失去了意义。关于这一假设的分析其实在诸多技术分析著作中均有涉及,一般被称为“历史会重演”,这里不再继续展开。不同于传统技术分析的是,量化交易策略的研发过程更加深入具体,在涉及到策略的参数设定、模型设置等具体问题时,需要采用数量化的方法、也就是最优化等技术手段进行解决。例如如何设置买点和卖点可以使得相应的总体收益最大等等,都是很典型的最优化数学问题,那么找到合适的最优化技术和算法并加以应用,就能够确定量化交易策略的最终形式,用以进行实际交易。
图1中所展示的是一个较为松散的一般性框架,用来总领性的说明量化交易策略的基本研发流程。在具体的策略研发过程中,这个框架经常会因为具体研发设置和策略设置的不同而产生变化。例如当量化交易策略的主要作用不是在时间轴上选择具体的买卖时点,而是在同一个时间点上对多个资产进行选择和配置时,图1中的一些说明就显得有些含混不清。量化选股策略就是这一类策略中最为常见的形式,因此这里在整体框架不变动的情况下,针对图1进行了文字上的调整,用以说明量化选股策略的运行框架与研发流程。当然,使用选股策略的框架体系来处理多个资产甚至多个策略的挑选、配置也是可以的,在不复杂的情况下只需要稍作联想即可。
买卖和仓位虽然是更为通用的说法,但是更适合于描述择时策略,放在选股策略的研发框架中会显得比较突兀,因此图2将买卖换成了选股,仓位则换成了配比,这样更容易让读者领会该研发流程的含义。实际上,对于每一期的选股而言,如果选择了原先没有仓位的股票,那么对应的操作就是买入该股票,如果已经建仓的股票没有被选入这一期的股票池,那么对应的操作就是卖出该股票。而配比则是在买卖的基础上,通过仓位大小的变化来实现具体配置。因此,选股和配比实际上可以算作是买卖和仓位选择的特殊情况,只是这种说法更为贴合量化选股策略本身。
略有不同的,是风险在量化选股策略研发流程中的具体含义。由于选股策略的仓位操作涉及到多个股票之间的配比问题,因此这里的风险不仅包括单支股票的风险,也涉及到多支股票之间的风险程度,后一种风险一般采用股票收益之间的相关性来进行描述。例如在一般性的最优投资组合理论当中,经常使用协方差矩阵来刻画整个资产组合的风险水平。虽然从实际情况来看,相关性这一度量方式与风险的直观感受之间有一定的差距,但是在多资产环境下,一般都将资产间的相关性视为风险的来源之一,这是一个偏学术的、约定俗成的做法。
上面的例子是针对选股策略进行的文字上的变动,实际上量化交易策略研发流程的变化更多来自于各个研发组成部分不同的结合方式。而不同的结合方式,对应的是策略研发过程中不同的目标和需求。例如图1所介绍的松散的研发流程,是在确定好买卖行为和仓位设定之后,再针对实际交易中所产生的交易成本进行二次测试。这样的做法虽然简便易行,但是忽视了交易成本本身对于收益的影响,以及更进一步对于买点和卖点的影响。因此,在确定买卖设置的步骤中就考虑交易成本的影响,应该是一个更贴近于实际的研究框架。图3给出了相应的流程刻画,如图所示,在判断收益因素时,同时考虑交易成本对于收益的影响,从而优化出更为实际的买卖设置。再根据相应的风险控制,结合买卖点的选择,得出最后的仓位设置。在确定了买卖和仓位这两个部分之后,就获得了一个完整的量化交易策略。
图4给出了一个更紧凑、更贴合实际操作的量化交易策略研发流程。在该流程中,买卖和仓位的设置是同时作为参数进行优化的,优化的目标函数也进行了唯一化,即量化交易策略的风险调整后收益。而在确定需要优化的目标函数时,交易成本也如同上一个研发流程一样同时被考虑进去,从而保证买卖和仓位优化结果的准确性。毫无疑问,相较于上面所涉及到的研发流程、特别是图1中较为松散的研发流程,该量化交易策略研发流程的各个组成部分更为紧密,因此在优化过程中所产生的与实际操作的偏离也就越小,买卖和仓位设置的准确度也就更高。但是在实际工作中,如果想参照这一流程进行研发,那么就需要比较强的计算能力,数据量的大小也要达到一定要求,同时优化方法和目标函数的设定要能够同时覆盖买卖和仓位的所有参数,因此往往也只有极为简单的策略思路可以采用这样的流程框架进行研发。
在实际的量化交易策略相关工作中,研发只是整个工作流程的一部分,还有两个组成部分需要着重强调。基于此,图5在图1所示的研发流程的基础上给出了一个更为完整的工作流程。如图所示,需要增加的部分包括处于研发过程之前的数据准备工作以及处于研发过程之后的策略执行工作。这两项工作与前面所论述的研发流程具有很强的逻辑关联性与内在依赖性,三者结合起来形成的一个整体,基本上可以涵盖量化交易策略具体工作的绝大部分内容。
首先论述数据准备的工作,循着图5中的箭头可以看到,在量化交易策略的整体工作中,既要为研发过程准备相应的研究数据,也要为策略执行准备相应的实时数据。在研究数据方面,由于寻找合适的量化交易策略需要不断重复研发流程,因此对于数据的要求更偏重于准确性和覆盖能力。同时,对数据的清洗和转换也是一项重点工作,在大部分的数据科学研究、包括量化交易策略的研发当中,数据特征的合理抽取对于整体效果提升的重要性有时甚至要高于精巧的模型,当然很多时候数据的转换和模型的构造是相互融合的,针对具体情况应当采取具体的分析和处理。而在策略执行数据方面,则更应该关注于数据获取的及时性。至于数据的清洗和变换,只需要完全复制研发得到的量化交易策略下的数据准备工作即可。另外,为了保证数据的及时性,最终进行的数据清洗工作对时间消耗存在一定的要求。
然后讨论策略执行的工作。策略执行,是在量化交易策略研发完成之后,最终产出实际效能的组成部分。执行时应该遵循尽量贴近研发完成的量化交易策略的原则,与量化交易策略所确定的买卖、仓位等设置尽可能的保持一致,这样才能最真实的反映出前面量化交易策略的研发结果。同时,策略执行的结果也可以用来反向支持具体的研发流程,通过对策略执行所得到的收益、风险情况的判断,实时的重新进行研发,对量化交易策略进行修改,从而使得策略能够及时的得到现实的反馈,增强自身的稳健程度。值得一提的是,后面将要介绍的推进分析是一种模拟策略执行的回溯测试技术,读者可以在运行推进分析时有限度的了解到量化交易策略实际执行时的种种状态。 -
2022-02-12 18:30 赵飞虎 客户经理
你好,在金融量化交易领域,掘金量化交易平台可以支持多种主流编程语言的开发,包括python、R、Matlab, C, C++, C# ;可以满足掌握不同编程语言的量化策略者的需求。 -
2022-02-12 18:27 齐明杰 客户经理
Matlab 和 C++,一个建模一个执行,足够了。实在不爱用Matlab的话,R和Python也行。多看书多学习,英语也是很重要的。可以找视频和书籍学习。
个人推荐《》主要讲解量化投资的思想和策略,并借助Python 语言进行实战。《量化投资:以Python为工具》一共分为5 部分,第1 部分是Python 入门,第2 部分是统计学基础,第3 部分是金融理论、投资组合与量化选股,第4 部分是时间序列简介与配对交易,第5 部分是技术指标与量化投资。《量化投资:以Python为工具》首先对Python 编程语言进行介绍,通过学习,读者可以迅速掌握用Python 语言处理数据的方法,并灵活运用Python 解决实际金融问题;其次,向读者介绍量化投资的理论知识,主要讲解量化投资所需的数量基础和类型等方面;最后讲述如何在Python 语言中构建量化投资策略。
-
2022-02-12 18:24 黄益汉 客户经理
建议Python。
量化投资今后离不开大数据,Python简洁的代码及丰富包的支持可以大大提升你的工作学习效率,在这个人工智能高速发展的时代,python已经是AI时代的标准语言。对于新人,建议一定要学好python,无论你未来做什么或者用什么语言,python都会用到,并且会很用。如果想对计算机底层有更深入的理解,同时建议学习C/C++。可边做边学
-
2022-02-12 18:21 龚子顺 客户经理
你好小白,量化交易策略研发是一项很专业的工作,目前国内量化交易平台支持的编程语言主流的python,因为python语言相对容易入门,但是如果你擅长其他语言比如Matlab, C, C++写编程,建议你使用,该平台支持多种编程语言进行策略开发。
没有满意答案?看看这些问答能否帮助您?
相关百科精选
友邦保险有... 2002年7月, 友邦保险苏...
现代财产保险(中国)有限公司 现代财产保险(中国)有限公司的母公司是现代海上火灾保险株式会社。成立于1955年的韩国现代海上火灾保险株式会社,通过持续提供以客户为中心的差别化服务,终于发展成具有最高竞争力的财产保险公司。
已有 86485 位专家入驻汇财吧问答
已经帮助 1173961 人解决了问题
