量化投资 用python好 还是c++

2024-05-16

1. 量化投资 用python好 还是c++

Python是非常适合做quant类工作的语言,本身就是科学计算方面的统治级语言,现在加入了IPython,pandas等重量级神器,为Quant类工作量身定做,而且仍在飞速发展中,以后会越来越重要。

关于其他语言,首先介绍一下我自己最喜欢的一个比较小众的组合,Mathematica+Java/Scala。 Mathematica的优点在于:本身提供函数式的编程语言,表达能力非常强大,比如Map/Reduce是标配,很多时候不需要去做烦人的for循环或下标控制,排版经常可以直接照数学公式原样输入,即直观又不容易写错;代码和输出混排的排版方式使得建模时的演算和推理过程非常流畅,甚至还可以直接生成动画,对于找直观理解非常有帮助(这几点分别被IPython和R偷师了一部分)。Mathematica的缺点在于对金融类的时间序列数据没有很好的内建支持,使得存储和计算都会比较低效,因此需要用内嵌Java的方式来补足,对于数据格式或性能敏感的操作都可以用Java/Scala实现。这个组合在我心目中无出其右,不论是快速建模,还是建模转生产,都远远领先于其他选择。但Mathematica的商用授权很贵,如果公司本身不认可的话很难得到支持,这是最致命的缺陷。另外随着Python系的逐渐成熟,领先优势在逐渐缩小,长远看Python的势头更好一些。

其他答案里也列举了不少其他语言,我自己既做Quant的工作,也做软件开发的工作,这里想从一个软件工程师的角度,说说我的理解。平时工作中会和一些偏Quant背景的人合作,很容易发现建模能力好的人往往在计算机方面基础比较薄弱(因为以前的训练重点不在这里)。他们也可以快速学习掌握一种像C++,Java这样的语言,实现很多必要的功能。但是一方面这些语言陡峭的学习曲线和繁琐的开发步骤会给他们真正要做的工作增加不必要的负担,另一方面一旦涉及到性能敏感的情景,他们对计算机体系结构缺乏理解的缺点就容易暴露,比如说很可能他们没有计算复杂度,内存碎片,cache miss,甚至多线程等概念,导致写出的程序存在相当大的隐患。

即使是计算机功底扎实,如果每天的工作需要在C++,Python,R/Matlab,甚至一众脚本语言之前来回切换,思维负担也会非常重,人的精力是有限的,很难同时兼顾数学建模和底层代码调试这种差距巨大的工作。长期发展下去最可能的结果就是要么远离建模,专心做生产环境开发,要么远离生产环境,专心建模。这种局面显然不论对个人还是团队都是有很大弊端的。

如果深入思考这个问题,相信不难得出结论,对于Quant来说,C++这种相当面向机器的语言肯定不是最佳选择。的确在历史上,它比更面向机器的C已经友好了很多,但是在计算机技术飞速发展的今天,如果还需要Quant大量使用C++做建模类的工作显然是很遗憾的事情。设想一下你拿到一份股票数据,不论你是想分析价格走势,成交量分布,还是波动性,第一件要做的事一定是画出图来看看,有一个直观认识。如果你的工具是C++,肯定有很多时间花在编译,调试,再编译的过程上,好容易能解析文件了,接下来怎么算移动平均?怎么算波动性?全都要自己写代码。再然后怎么画图?这整个工作流简直惨不忍睹,这些问题浪费掉你大部分精力,而他们全部和你真正感兴趣的工作毫无关系。所以如果你是一个数理金融等背景的新人打算开始Quant生涯,在决定是否要投资到这项重量级技术上时需要慎重,即便它目前的市场定价可能仍在峰值。相比之下我认为Python会是更理想的选择,即能很好的完成建模工作,也可以训练一定的编程技巧,使你在必要时也能胜任一些简单的C++工作。

最后同意 @袁浩瀚,不要拘泥于语言,不论学习那一种,对其他的语言还是要抱有开放的心态。另外世界变化很快,你会发现单一的语言分类方式其实是没有意义的,每一门语言在发展过程中都会逐渐吸收其他语言的特性,比如Python本身就既有C/C++/Java那样命令式的特点,也有函数式的特点,像pandas甚至还提供类似SQL的使用方式,在其他语言或系统里也都或多或少包含了不同的特点,可以在学习过程里慢慢体会。

量化投资 用python好 还是c++

2. Python学习,量化交易的应该怎么学

链接:http://pan.baidu.com/s/1djPqbCXnQrRpW0dgi2MCJg
 提取码:4591
华尔街学堂 python金融实务从入门到精通。最近,越来越多的研究员、基金经理甚至财务会计领域的朋友,向小编咨询:金融人需要学Python么?事实上在现在,这已经不是一个问题了。Python已成为国内很多顶级投行、基金、咨询等泛金融、商科领域的必备技能。中金公司、银河证券、南方基金、银华基金在招聘分析师岗位时,纷纷要求熟练掌握Python数据分析技能。

课程目录:
Python在金融资管领域中的应用
安装anaconda步骤
Python基础知识
Python基础金融分析应用
成为编程能手:Python知识进阶
利用Python实现金融数据收集、分析与可视化
......

3. 量化投资中用python主要是负责什么

python作为一门编程语言,简单说它在量化投资主要是进行量化策略模型的编译。

量化投资中用python主要是负责什么

4. 量化投资中,MATLAB和python哪一个好

Matlab在矩阵处理方面的强大优势Python无法比拟,我曾经用Matlab和Python跑同一个算法,涉及到矩阵中Symbol求导。Python用的是Numpy,Sympy和Scipy,感觉Sympy中Matrix虽然功能强大,但是速度很慢,而且需要专注其中各种细节。如:其对Complex类型是无法自动expand的,常常出现(1+I)(2I+1)这种结果,这时需要调用.expand来解决。Matlab可以使你专注于模型,Python要超过Matlab还需要时间。但是Python在内容抓取,机器学习,等有强大的第三方包,如Scarpy,Skikit-learn等,发展很快。概括之:现在用Matlab,未来用Python

5. 金融工程,量化投资学什么软件好?Python还是Matlab

个人觉得还是都会比较好。技多不压身。量化投资用Matlab 和 C++,一个建模一个执行,足够了。实在不爱用Matlab的话,R和Python也行。
选择python推荐可以阅读:《量化投资:以python为工具》主要讲解量化投资的思想和策略,并借助Python 语言进行实战。《量化投资:以Python为工具》一共分为5 部分,第1 部分是Python 入门,第2 部分是统计学基础,第3 部分是金融理论、投资组合与量化选股,第4 部分是时间序列简介与配对交易,第5 部分是技术指标与量化投资。《量化投资:以Python为工具》首先对Python 编程语言进行介绍,通过学习,读者可以迅速掌握用Python 语言处理数据的方法,并灵活运用Python 解决实际金融问题;其次,向读者介绍量化投资的理论知识,主要讲解量化投资所需的数量基础和类型等方面;最后讲述如何在Python 语言中构建量化投资策略。
选择MATLAB推荐阅读:《问道量化投资:用MATLAB来敲门》主要讲述以MATLAB为分析工具的量化投资,由“MATLAB入门”、“MATLAB量化投资基础”和“MATLAB量化投资相关函数详解”3篇组成。入门篇让零编程基础的读者快速掌握强大的数值计算和模拟分析工具MATLAB;量化投资基础篇简要介绍相关的投资策略及模型,重点讲述MATLAB中的模型实现及应用;函数详解篇对MATLAB的金融工具箱、衍生品工具箱和固定收益工具箱中的全部函数一一进行详解,以帮助读者快速掌握这些函数。

金融工程,量化投资学什么软件好?Python还是Matlab

6. python的量化代码怎么用到股市中

2010 ~ 2017 沪深A股各行业量化分析
在开始各行业的量化分析之前,我们需要先弄清楚两个问题:
第一,A股市场上都有哪些行业;
第二,各行业自2010年以来的营收、净利润增速表现如何?
第一个问题很好回答,我们使用JQData提供的获取行业成分股的方法,输入get_industries(name='sw_l1')得到申万一级行业分类结果如下:它们分别是:【农林牧渔、采掘、化工、钢铁、有色金属、电子、家用电器、食品饮料、纺织服装、轻工制造、医药生物、公用事业、交通运输、房地产、商业贸易、休闲服务、综合、建筑材料、建筑装饰、电器设备、国防军工、计算机、传媒、通信、银行、非银金融、汽车、机械设备】共计28个行业。
第二个问题要知道各行业自2010年以来的营收、净利润增速表现,我们首先需要知道各行业在各个年度都有哪些成分股,然后加总该行业在该年度各成分股的总营收和净利润,就能得到整个行业在该年度的总营收和总利润了。这部分数据JQData也为我们提供了方便的接口:通过调用get_industry_stocks(industry_code=‘行业编码’, date=‘统计日期’),获取申万一级行业指定日期下的行业成分股列表,然后再调用查询财务的数据接口:get_fundamentals(query_object=‘query_object’, statDate=year)来获取各个成分股在对应年度的总营收和净利润,最后通过加总得到整个行业的总营收和总利润。这里为了避免非经常性损益的影响,我们对净利润指标最终选取的扣除非经常性损益的净利润数据。
我们已经获取到想要的行业数据了。接下来,我们需要进一步分析,这些行业都有什么样的增长特征。
我们发现,在28个申万一级行业中,有18个行业自2010年以来在总营收方面保持了持续稳定的增长。它们分别是:【农林牧渔,电子,食品饮料,纺织服装,轻工制造,医药生物,公用事业,交通运输,房地产,休闲服务,建筑装饰,电气设备,国防军工,计算机,传媒,通信,银行,汽车】;其他行业在该时间范围内出现了不同程度的负增长。
那么,自2010年以来净利润保持持续增长的行业又会是哪些呢?结果是只有5个行业保持了基业长青,他们分别是医药生物,建筑装饰,电气设备,银行和汽车。(注:由于申万行业在2014年发生过一次大的调整,建筑装饰,电气设备,银行和汽车实际从2014年才开始统计。)
从上面的分析结果可以看到,真正能够保持持续稳定增长的行业并不多,如果以扣非净利润为标准,那么只有医药生物,建筑装饰,电气设备,银行和汽车这五个行业可以称之为优质行业,实际投资中,就可以只从这几个行业中去投资。这样做的目的是,一方面,能够从行业大格局层面避免行业下行的风险,绕开一个可能出现负增长的的行业,从而降低投资的风险;另一方面,也大大缩短了我们的投资范围,让投资者能够专注于从真正好的行业去挑选公司进行投资。
「2010-2017」投资于优质行业龙头的收益表现
选好行业之后,下面进入选公司环节。我们知道,即便是一个好的行业也仍然存在表现不好的公司,那么什么是好的公司呢,本文试图从营业收入规模和利润规模和来考察以上五个基业长青的行业,从它们中去筛选公司作为投资标的。
3.1按营业收入规模构建的行业龙头投资组合
首先,我们按照营业收入规模,筛选出以上5个行业【医药生物,建筑装饰,电气设备,银行和汽车】从2010年至今的行业龙头如下表所示:

可以看到,虽然时间跨度很长,但是在这5个行业中,营收规模大的公司始终处于领先地位。它们分别是【上海医药,中国建筑,上海电气,工商银行,上汽集团】。
由于各年度上市公司年报的公布截止日是4月30日,待所有上市公司年报公布后,确定行业龙头,然后将这些行业龙头构建成一个投资组合。那么,持有投资组合的收益表现如何呢?为了保证投资时间的一致性,我们假设从2015年4月30号之后的第一个交易日开始投资,本金是100万,每个标的投资权重相同,都是20%,并且忽略交易成本,那么持有该组合至2018年4月30号的投资收益是多少呢?
我们利用JQData提供的获取行情接口get_price(security='股票代码', start_date='开始交易日', end_date='投资截止日', frequency='daily', fields=None, skip_paused=False, fq='pre'),分别获取组合中各个公司在各年度开始交易日和投资截止日(4.30之后的第一个交易日)的价格,得到最终的投资结果如下图所示:

可以看到,除了2015.5.4-2016.5.3股灾期间,该组合投资收益率和上证指数、沪深300指数有一个同步的大幅下跌外,从2016.5.3至2018年5.2,改组合连续两年获得了正收益,并在2016年大幅跑赢另外两个基准指数20%以上。
聪明的读者一定会问这样一个问题,如果我从2018年5月2号开始,投资100万买入这样一个按营收规模衡量的行业龙头组合,至2018年5月30号,收益表现会如何呢?答案是【3.04%】,而同期上证指数收益率和沪深300收益率分别是【-0.20%】和【-0.39%】,可以说表现非常之好了。具体收益如下表所示:

3.2按扣非净利润规模构建的行业龙头投资组合如果我们按照扣除非经常性损益的净利润来衡量,以上5个行业从2010年至今的行业龙头又会是哪些呢,我们查出来如下表所示:

可以看到,按照扣非净利润来构建投资组合,医药生物和电气设备两个行业分别发生了行业龙头的更替,如果要构建基于扣非净利润的投资组合,那么我们就需要每年去调整我们的组合标的以保证组合中都是上一年度的行业龙头。和上述投资回测方式一样,我们从2015年5月4号买入这样一个组合,并在之后每年4月30号之后的第一个交易日调整组合中的行业龙头标的,最终的投资结果如下表所示:

可以看到,即使是2015.4.30-2016.5.3股灾期间,该组合也跑赢上证指数和沪深300指数3%左右;而2016.5.3至2018年5.2期间更是大幅跑赢两个基准指数高达30%以上。
同样的,如果从2018年5月2号开始,投资100万买入这样一个按扣非净利润规模衡量的行业龙头组合,至2018年5月30号,收益表现会如何呢?答案是【2.83%】,对比同期上证指数收益率和沪深300指数的【-0.20%】和【-0.39%】,仍然维持了非常良好的表现。具体收益如下表所示:

结论通过以上行业分析和投资组合的历史回测可以看到:
先选行业,再选公司,即使是从2015年股灾期间开始投资,至2018年5月1号,仍然能够获得相对理想的收益,可以说,红杉资本的赛道投资法则对于一般投资者还是比较靠谱的。
在构建行业龙头投资组合时,净利润指标显著优于营业收入指标,获得的投资收益能够更大的跑赢全市场收益率
市场是不断波动的,如果一个投资者从股灾期间开始投资,那么即使他买入了上述优质行业的龙头组合,在近3年也只能获得12%左右的累计收益;而如果从2016年5月3日开始投资,那么至2018年5月2日,2年时间就能获得超过50%以上的收益了。所以,在投资过程中选择时机也非常重要。
出自:JoinQuant 聚宽数据 JQData

7. Python 与 Matlab 哪一个对量化投资和分析更有帮助

Matlab在矩阵处理方面的强大优势Python无法比拟,我曾经用Matlab和Python跑同一个算法,涉及到矩阵中Symbol求导。Python用的是Numpy,Sympy和Scipy,感觉Sympy中Matrix虽然功能强大,但是速度很慢,而且需要专注其中各种细节。如:其对Complex类型是无法自动expand的,常常出现(1+I)(2I+1)这种结果,这时需要调用.expand来解决。Matlab可以使你专注于模型,Python要超过Matlab还需要时间。但是Python在内容抓取,机器学习,等有强大的第三方包,如Scarpy,Skikit-learn等,发展很快。概括之:现在用Matlab,未来用Python

Python 与 Matlab 哪一个对量化投资和分析更有帮助

8. Python 与 Matlab 哪一个对量化投资和分析更有帮助

现在分析全线转R/python,未来有可能上Julia。
别问为什么不用matlab了。R/python组合好处在于开源,数据workflow相当容易搭建起来,另外背靠学术界,有相当多的新统计工具可以试。说R速度慢根本不是问题,机器好一点就行了。超大型的数据甚至可以跑R/hadoop。
MATLAB的完全就不能比。
————————————
另外说在“工程上MATLAB有而R/python没有”我觉得是十分奇怪的。就比如,目前新工具而言比如deep learning来说。python上有Theano/pylearn2/对接caffe,MATLAB的deep learning我目前只知道一个Toolbox。旧的工具R/python上也不缺。

另外我看有答案把MATLAB能直接发送交易信号作为MATLAB卖点。我觉得贵司策略和交易是不是定位不太清晰。为了保证可靠的性能和策略管理的便利性,我想除了个人投资者没有人会选择开着MATLAB下单。