张丹:如何用R语言做量化分析


如何用R语言做量化分析
张丹,《R的极客理想》系列图书作者

 

 


R语言适合做量化分析的5个理由

 

 

 

1.R语言是统计语言,对数学计算和统计计算有良好的支持。
2.R语言是面向数据的,金融玩的就是数据。
3.R语言有完善第三方包体系,提供很多的量化工具包支持。
4.R语言本身很简单,易学易上手。
5.R语言有清晰的体系结构。

 


能干什么呢?

 

•把论文中,高等数学公式变成算法模型。
•检验数据是否符合某一种统计分布。
•可以用线性代数的方法把循环计算矩阵化。
•可以用R语言来解多元线性方程组。
•用R语言来做参数优化的过程等。

 

 

 

 

 

 

 

 

 

 


R语言易学易上手

 

•R语言把使用者和包开发者,完全分成2个难度。
•使用者:找到目标场景的第三方包,直接调用即可。代码通常也就是20-30行,就算死记硬背都可以了。
•开发者:难度大。如果你想开发出一个比较好的包,你需要考虑代码的优雅性,程序计算性能的高效性,函数API封装的方便性,跨平台支持的兼容性,业务场景的明确性,以及帮助手册的完整性。

 

 


R语言的体系结构

 


如何用R语言做量化分析

 

 

•金融行业有很多背景知识和金融市场规则需要我们了解。
•量化关注的数据:
•交易数据,财务数据,上市公司的各种事件数据,基本面数据,宏观数据,舆情数据,互联网数据等
•量化投资是跨学科应用的结合,有2个关键点。
•数据:用R语言来解决数据的问题。
•金融知识:就是我们对金融行业的行业积累。

 


R语言数据处理–data.frame

 

数据框(data.frame)类型,是R语言内置的一种数据类型,与关系型数据库中表的结构是类似的,是一种二维的数据结构。数据库读取数据,导入CSV数据时,与R语言有了一个很好的映射关系,直接加载到R语言的内存中变成标准化数据格式。

 

 

 

 


金融数据

 

金融市场每日产生的交易数据,以GB的量来增长,跟互联网比起来不是很快。但对于你程序加载10年的数据,也要GB或TB的一个量级。离线模型:把海量数据变成离线的方式,放到hadoop或spark计算,用海量数据进行模型的训练。在线模型:实时数据,一般就是一天或几天的数据,每天从开盘到收盘可能也就1-2GB,放到内存中进行计算。同时配合Docker容器化技术,实现并行化市场扫描。

 

 


时间序列数据模型

 

时间序列:以时间作为数据的索引列,把数据以时间维度进行对齐。模型设计:你设计了一个股票交易策略和一个期货交易策略,由于股票是T+1交易,今天买了明天才能卖;而期货是T+0交易,今天买了马上就可以卖出。如果这两个策略是对冲的,那么我们就需要把它们以时间维度进行对齐,才能进行实现对策略模型对冲的准确计算。

 


金融行业知识

 

从金融交易分析的角度,可以从3个维度进行。
•基本面:指对宏观经济、行业和公司基本情况的分析,包括公司经营理念策略、公司报表等的分析。长线投资一般用基本面分析,通过基本面可以判断是否值去交易。
•技术面:指通过技术指标变化,判断股票走势形态,进行K线组合等,通过技术面可以判断如何进行交易。
•消息面:指上市公司发布的利好和利空的消息,通过消息面可以判断市场的情绪。

 

 

•散户行为,听到一个消息就跟着风的买卖股票,或者凭自己感觉大盘该涨了就跟进去。
•量化的方法,主要是以技术指标为主。通过数据的基础,建立信心,而不是完全拍脑袋的事儿。
•常用量化指标有MACD、KDJ、Boll、RSI、CCI 等。但并不是单独使用,多个指标通过变换组合使用,通过变换再生成新的衍生指标,找到市场上赚钱的机会

 

 


量化分析实例

 

分析IBM的股价和上证综指(000001.ss)的关系,那么可以用quantmod包来完成整个投资研究的操作过程,包括数据下载,数据处理,数据建模,交易回测,可视化的部分。

 


实例一:IBM股价和上证指数

 

 

 

 

 

 

 

 

 

 

 

 


总结

 

2015年我在创业,希望能推动R语言在金融量化领域的发展,但是由于种种原因项目没有持续发展。接下来,我还会以个人的方式继续努力,继续推动R在金融领域的发展。R语言,对我的影响和改变是非常大的,我认识R语言是非常好的一门语言,我会把推动R的发展,当成一项事业来做。希望也能认识各位业界朋友,一起努力,把这份事业做下去!!

 

 

 

推荐文章

沪公网安备 31010702002009号