R语言量化投资常用包总结
前言
总是被很多的人问,为什么用R语言做量化投资,R、Python、Matlab比起来哪个更好?其实,答案很简单,你哪个用的熟就用哪个,工具是用来提升效率的,结果才是你会得到的。认准一门语言,坚持把它做好你就会成长。
每个领域,每种编程语言都用推动它前进的人,跟上牛人的脚步,你慢慢地也会变牛。
目录
为什么用R语言做量化投资?
常用量化投资工具包
1. 为什么用R语言做量化投资?
R做量化投资到底有哪些优势呢?最主要的一点,就是R语言有很多第三方包的支持。通常编程语言的设计,都是为了解决软件开发和程序实现的问题。但R语言在开始时,就被设计为主要解决数据的问题。量化投资就是对数据进行各种数据处理、数据分析,从而找到数据的规律。所以,有很多从事量化投资的人,把R语言用来构建量化交易的模型,进行回测,风险管理等,最后把研究成果开源并贡献给R语言的社区,为后面的人提供了非常大的帮助。
相比Python来说也有很多的第三方包的支持,这些第三方大部分提供是Web开发,数据爬虫,系统管理,数据库调用,数学计算等,这些都是属于通用的软件需求,而非某个行业的数据需求。当某个Python大神,开始关注量化投资领域,并用Python实现了一套量化的程序库,后面的人就会进入这个领域,只是沿着大神的路线走,等待下一个大神的出现。所以本质上,Python是面向程序设计的语言,而R是面向数据的语言。
R语言在量化投资领域,已经有很多年的积累,很多的算法已经成型。从投资研究到交易分析,再到风险管理,有着完整的体系结构。我们同样可以沿着前人走出来的路,快速学习,快速搭建出量化投资的系统来。对于有IT但背景缺乏金融知识的人来说,有很多的部分知识上手比较困难,同时看不太懂各种统计指标,对学习造成了很大的阻力。这其实是你深入到具体地某个行业后,都会面临的问题。行业知识和数学知识才是最难的,只有突破了,你才能打开认知新领域的方法。
R语言让我们更接近数据,同时提供了各种数学统计的工具,又有大量由第三方贡献的行业知识库,所以我会选择R语言,我会把R语言作为最好的工具,进行量化投资的分析。
2. 常用量化投资工具包
R语言在金融领域提供了很多的金融计算框架和工具,当你具备金融理论知识和市场经验,你可以利用这些第三方提供的技术框架来构建自己的金融模型。我们可以从CRAN上找到各种的金融项目,访问R的官方网站 (),找到Task Views 菜单里的 Finance标签。
金融领域涉及范围是非常广的,包括银行业、保险业、信托业、证券业、租赁业等。金融行业都具有指标性、垄断性、高风险性、效益依赖性和高负债经营性的特点。量化投资是证券投资的一个很细分的专业领域,涉及到的金融工具包其实并不是太多。我们其实能把这些工具包研究好了,就可以方便地做量化的模型和交易了。
如果我们想用R构建自己的量化交易系统,你需要用到5方面的R语言工具包:数据管理、指标计算、回测交易、投资组合、风险管理。
数据管理:
包括数据集抓取、存储、读取、时间序列、数据处理等,涉及R包
1) (时间序列对象)
2)(时间序列处理)
3)(Rmetrics系时间序列对象)
4)(Rmetrics系时间序列处理)
5)(数据处理)
6) (数据下载和图形可视化)
7) (QuantLib数据接口)
8)(Wind数据接口)
9)(数据库访问接口)
10) (Hadoop访问接口)
11) (Hive访问接口)
12) (Redis访问接口)
13) (MongoDB访问接口)
14)(Spark访问接口)
15)(Rmetrics系数据访问接口)等。
指标计算:
包括金融市场的技术指标的各种计算方法,涉及R包
1) (技术指标),
2)TSA(时间序列计算)
3)(单位根检验)
4)(Rmetrics系ARMA计算)
5) (Rmetrics系亚洲期权定价)
6)(Rmetrics系计算工具)
7)(Rmetrics系财务分析)
8) (Rmetrics系期权计算)
9)(Rmetrics系Garch模型)
10) (Rmetrics系非线模型)
11)(Rmetrics系期权定价)
12)(Rmetrics系回归分析)
13)(Rmetrics系单位根检验) 等。
回测交易:
包括金融数据建模,并验证用历史数据验证模型的可靠性,涉及R包
1) (金融产品),
2)(策略模型和回测),
3)(账户管理)
4) (Rmetrics系交易分析)
投资组合:
对多策略或多模型进行管理和优化,涉及R包
1) (组合分析和优化)
2)(股票组合管理)
3) (Rmetrics系组合管理)等
风险管理:
对持仓进行风险指标的计算和风险提示,涉及R包
1) (风险分析)
2)(Rmetrics系组合优化)
3)(Rmetrics系数据处理)
基于上文中列出的R包,我们可以选择使用独立地第三方R包来构建我们的量化交易的系统,也可以选用完整的Rmetrics体系来构建量化交易的系统。这两类R包也可以混合使用,如果在混用时,由于他们基于的时间序列的底层对象是不一样的,那么类型转换的时候,可以你需要花点功夫处理一下。
上文中列出的R语言,并不是所有的R语言量化投资的R包,仅仅我关注的一些包。还有很多其他的,比如用于配对交易的包;在Github上发布的,我并没有发现的R包等。
对于我自己来说,倾向于用独立地第三方R包来做量化交易系统,会用到其中的几个独立的R包。这样选择的主要原因有2个,一是中国市场比较特别,很多规则并不完全符合世界的标准。比如,股票T+1交易就是全球唯一的。另外一点是第三方的开源包,有一些可能有错误,所以你不应该把程序完全依赖于第三方包,要有独立的思考和判断,第三方包只是给我们提供了便利性。
那么常用的第三方R包的组合为:zoo, xts, TTR, quantmod, FinancialInstrument, quantstrat, blotter, PortfolioAnalytics, PerformanceAnalytics。这其中的任何一个包,都可以被替换或自己实现,从而保证自己量化交易系统的独特性。引用国外量化的教材上的一张图,国外用R来研究量化交易已经体系。
图片摘自,作者Guy Yollin。
本系列文章,稍后将对整个量化体系的金融R包进行全面的介绍,并加上我自己的理解。量化相关R包介绍的相关文章列表,持续更新中。。。