R语言量化投资常用包总结

浏览: 2041

前言

总是被很多的人问,为什么用R语言做量化投资,R、Python、Matlab比起来哪个更好?其实,答案很简单,你哪个用的熟就用哪个,工具是用来提升效率的,结果才是你会得到的。认准一门语言,坚持把它做好你就会成长。

每个领域,每种编程语言都用推动它前进的人,跟上牛人的脚步,你慢慢地也会变牛。

目录

  1. 为什么用R语言做量化投资?

  2. 常用量化投资工具包

1. 为什么用R语言做量化投资?

R做量化投资到底有哪些优势呢?最主要的一点,就是R语言有很多第三方包的支持。通常编程语言的设计,都是为了解决软件开发和程序实现的问题。但R语言在开始时,就被设计为主要解决数据的问题。量化投资就是对数据进行各种数据处理、数据分析,从而找到数据的规律。所以,有很多从事量化投资的人,把R语言用来构建量化交易的模型,进行回测,风险管理等,最后把研究成果开源并贡献给R语言的社区,为后面的人提供了非常大的帮助。

相比Python来说也有很多的第三方包的支持,这些第三方大部分提供是Web开发,数据爬虫,系统管理,数据库调用,数学计算等,这些都是属于通用的软件需求,而非某个行业的数据需求。当某个Python大神,开始关注量化投资领域,并用Python实现了一套量化的程序库,后面的人就会进入这个领域,只是沿着大神的路线走,等待下一个大神的出现。所以本质上,Python是面向程序设计的语言,而R是面向数据的语言。

R语言在量化投资领域,已经有很多年的积累,很多的算法已经成型。从投资研究到交易分析,再到风险管理,有着完整的体系结构。我们同样可以沿着前人走出来的路,快速学习,快速搭建出量化投资的系统来。对于有IT但背景缺乏金融知识的人来说,有很多的部分知识上手比较困难,同时看不太懂各种统计指标,对学习造成了很大的阻力。这其实是你深入到具体地某个行业后,都会面临的问题。行业知识和数学知识才是最难的,只有突破了,你才能打开认知新领域的方法。

R语言让我们更接近数据,同时提供了各种数学统计的工具,又有大量由第三方贡献的行业知识库,所以我会选择R语言,我会把R语言作为最好的工具,进行量化投资的分析。

2. 常用量化投资工具包

R语言在金融领域提供了很多的金融计算框架和工具,当你具备金融理论知识和市场经验,你可以利用这些第三方提供的技术框架来构建自己的金融模型。我们可以从CRAN上找到各种的金融项目,访问R的官方网站 (https://cran.r-project.org/),找到Task Views 菜单里的 Finance标签。

Clipboard Image.png

金融领域涉及范围是非常广的,包括银行业、保险业、信托业、证券业、租赁业等。金融行业都具有指标性、垄断性、高风险性、效益依赖性和高负债经营性的特点。量化投资是证券投资的一个很细分的专业领域,涉及到的金融工具包其实并不是太多。我们其实能把这些工具包研究好了,就可以方便地做量化的模型和交易了。

如果我们想用R构建自己的量化交易系统,你需要用到5方面的R语言工具包:数据管理、指标计算、回测交易、投资组合、风险管理。

Clipboard Image.png

数据管理:

包括数据集抓取、存储、读取、时间序列、数据处理等,涉及R包

1) zoo(时间序列对象)

2)xts(时间序列处理)

3)timeSeries(Rmetrics系时间序列对象) 

4)timeDate(Rmetrics系时间序列处理)

5)data.table(数据处理)

6) quantmod(数据下载和图形可视化)

7) RQuantLib(QuantLib数据接口)

8)WindR(Wind数据接口)

9)RJDBC(数据库访问接口)

10) rhadoop(Hadoop访问接口)

11) rhive(Hive访问接口)

12) rredis(Redis访问接口)

13) rmongodb(MongoDB访问接口)

14)SparkR(Spark访问接口)

15)fImport(Rmetrics系数据访问接口)等。

指标计算:

包括金融市场的技术指标的各种计算方法,涉及R包

1) TTR(技术指标),

2)TSA(时间序列计算)

3)urca(单位根检验)

4)fArma(Rmetrics系ARMA计算)

5) fAsianOptions(Rmetrics系亚洲期权定价)

6)fBasics(Rmetrics系计算工具)

7)fCopulae(Rmetrics系财务分析)

8) fExoticOptions(Rmetrics系期权计算)

9)fGarch(Rmetrics系Garch模型)

10) fNonlinear(Rmetrics系非线模型)

11)fOptions(Rmetrics系期权定价)

12)fRegression(Rmetrics系回归分析)

13)fUnitRoots(Rmetrics系单位根检验) 等。

回测交易:

包括金融数据建模,并验证用历史数据验证模型的可靠性,涉及R包

1) FinancialInstrument(金融产品),

2)quantstrat(策略模型和回测),

3)blotter(账户管理)

4) fTrading(Rmetrics系交易分析)

投资组合:

对多策略或多模型进行管理和优化,涉及R包

1) PortfolioAnalytics(组合分析和优化)

2)stockPortfolio(股票组合管理)

3) fAssets(Rmetrics系组合管理)等

风险管理:

对持仓进行风险指标的计算和风险提示,涉及R包

1) PerformanceAnalytics(风险分析)

2)fPortfolio(Rmetrics系组合优化)

3)fExtremes(Rmetrics系数据处理)

基于上文中列出的R包,我们可以选择使用独立地第三方R包来构建我们的量化交易的系统,也可以选用完整的Rmetrics体系来构建量化交易的系统。这两类R包也可以混合使用,如果在混用时,由于他们基于的时间序列的底层对象是不一样的,那么类型转换的时候,可以你需要花点功夫处理一下。

上文中列出的R语言,并不是所有的R语言量化投资的R包,仅仅我关注的一些包。还有很多其他的,比如用于配对交易的包PairTrading;在Github上发布的,我并没有发现的R包等。

对于我自己来说,倾向于用独立地第三方R包来做量化交易系统,会用到其中的几个独立的R包。这样选择的主要原因有2个,一是中国市场比较特别,很多规则并不完全符合世界的标准。比如,股票T+1交易就是全球唯一的。另外一点是第三方的开源包,有一些可能有错误,所以你不应该把程序完全依赖于第三方包,要有独立的思考和判断,第三方包只是给我们提供了便利性。

那么常用的第三方R包的组合为:zoo, xts, TTR, quantmod, FinancialInstrument, quantstrat, blotter, PortfolioAnalytics, PerformanceAnalytics。这其中的任何一个包,都可以被替换或自己实现,从而保证自己量化交易系统的独特性。引用国外量化的教材上的一张图,国外用R来研究量化交易已经体系。

图片摘自Introduction to Trading Systems,作者Guy Yollin。

本系列文章,稍后将对整个量化体系的金融R包进行全面的介绍,并加上我自己的理解。量化相关R包介绍的相关文章列表,持续更新中。。。

89A1FD86DE31F29EC9524FBF08C96606.png

推荐 3
本文由 R语言中文社区 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

1 个评论

不错

要回复文章请先登录注册