美文网首页FinanceR 数据-R语言-图表-决策-Linux-Python
[原]量化投资教程:用R语言打造量化分析平台

[原]量化投资教程:用R语言打造量化分析平台

作者: FinanceR | 来源:发表于2016-03-12 10:56 被阅读1495次

概述

和Python计算环境中的tushare包一样,在R中我们使用quantmod包接入第三方数据源,实现自定义量化分析平台的构建。

本文打算以陌陌的股票分析为背景,介绍如何通过quantmod包构建专属的量化分析平台。

什么是quantmod

quantmod就是提供给宽客们使用的专业模块,Quantmod本身提供强大的数据接入能力,默认是雅虎财经的数据源,此外quantmod还以绘制专业的行情分析图表以及各种技术指标计算等功能著称,常常只要几行函数就能完成从数据获取和处理到画图的复杂功能,其工作效率之高让行家里手都觉得膛目结舌。

利用API读取在线行情

首先,我们利用雅虎财经的默认接口直接体验一下读取多只股票。

原理

利用API读取的方式,我们需要设定一个读取序列和对应的配置,获取行情函数getSymbols类似于原生的assignget函数,用函数的方式将变量名传入后完成变量的赋值。

基于这个原理,我写了一个Quote函数来优化参数配置的体验。首先我们需要定义一个股票池序列,然后调用Quote函数获取某只股票的行情返回数据。

下面以美股的陌陌、360和A股的平安银行为例:

代码

# 加载quantmod包
if(!require(quantmod)){
    install.packages("quantmod")
}
# 股票行情匹配函数
Quote = function(code){
  index = match(code,universes)
  temp = lapply(universes,get)
  return(temp[[index]])
}
# 基本配置
universes <<- c("000001.SZ","QIHU","MOMO")
from = "2015-01-04"
to = Sys.Date() # 结束时间设为当前日期
src= "yahoo" # 来源雅虎财经

# 行情加载 速度有点慢,耐心等待
quantmod::getSymbols(universes,from=from,to=to,src=src)

# 绘制行情
quantmod::chartSeries(Quote("MOMO"),up.col='red',dn.col='green',TA="addVo(); addADX();addMACD(); addSMA(n=10);addBBands(n=14,sd=2,draw=\"bands\")")

效果

momomomo

利用CSV读取离线行情

接着,在离线模式或者网络访问缓慢的情况下,我们也可以用一些实现准备好的CSV文件来读取行情。

原理

分析底层数据结构后,我们知道quantmod包读取后的数据格式是 xts 和 zoo,我们只需要将csv文件按一定的格式读取到内存后再进行相应变换,quantmod强大的分析和作图能力就可以为我们所用。

zoo本身是一种时间序列格式,而xts则是在这基础上一种时间序列格式的加强版。在读取csv的时候,我们需要用首行确定header。在转化为zoo时,我们则需要首列来确定时间序列对应的时间。最后通过xts转化为可以被quantmod识别的xts时间序列对象。下面以平安银行为例:

代码

# 加载 zoo 时间序列包
library(zoo)
library(quantmod)
# 配置文件路径
filePath = '/Users/harryzhu/temp.csv'
# 读取CSV并转化时间格式
csv <- read.csv(filePath,header=TRUE,sep=",")
csv$LZ_GPA_QUOTE_TCLOSE <- as.POSIXct(as.character(csv$LZ_GPA_QUOTE_TCLOSE),tz="",format="%Y%m%d")
# 转化为zoo类型
temp = read.zoo(csv) 
# 转化我xts类型
payh =as.xts(temp[,1]);colnames(payh)="Close"
# 制图
chartSeries(payh,name="000001.SZ") 
# 添加MACD曲线
addMACD() 

效果

payhpayh

指标计算

参考官方文档,我们知道,利用quantmodTTR包,我们可以快速计算常见指标,下面是对应的计算列表。

指标名 TTR 函数名 quantmod 函数名
威尔斯怀尔德移动方向指标 ADX addADX
真实波幅 ATR addATR
布林通道 BBands addBBands
布林带宽 N/A addBBands
百分比布林带 N/A addBBands
顺势指标 CCI addCCI
资金流动 CMF addCMF
钱德动量指标 CMO addCMO
双指数移动平均线 DEMA addDEMA
离势价格偏离指数 DPO addDPO
指数平滑移动平均线 EMA addEMA
价格信封 N/A addEnvelope
指数量权移动平均线 EVWMA addEVWMA
期权期货到期 N/A addExpiry
异同平均线 MACD addMACD
动量 momentum addMomentum
变动率 ROC addROC
相对强弱指数 RSI addRSI
转折点信号 SAR addSAR
简单移动平均线 SMA addSMA
随机动量指数 SMI addSMI
三重平滑振荡指数 TRIX addTRIX
成交量 N/A addVo
加权移动平均法 WMA addWMA
零延迟指数移动平均线 ZLEMA addZLEMA

尾注

综上所述,我们可以发现,利用quantmod包,我们可以快速实现各种姿势的行情获取以及常见的关键指标的计算和绘制。

参考资料

作为分享主义者(sharism),本人所有互联网发布的图文均遵从CC版权,转载请保留作者信息并注明作者 Harry Zhu 的 FinanceR 专栏:https://segmentfault.com/blog/harryprince,如果涉及源代码请注明GitHub地址:https://github.com/harryprince。微信号: harryzhustudio
商业使用请联系作者。

相关文章

  • [原]量化投资教程:用R语言打造量化分析平台

    概述 和Python计算环境中的tushare包一样,在R中我们使用quantmod包接入第三方数据源,实现自定义...

  • Getting Started with R

    最近开始学习用R做数据分析与量化投资,于是写了一篇R语言的入门教程,希望能帮助大家快速上手。我的知乎|简书|CSD...

  • 【Python量化投资与数字货币-系列4 |StudyQuant

    前言 StudyQuant量化投资学院 计划在未来逐步公开以下内容: 量化投资学院:「Python量化投资教程」中...

  • R语言量化投资相关

    R语言在金融领域提供了很多的金融计算框架和工具,当你具备金融理论知识和市场经验,你可以利用这些第三方提供的技术框架...

  • R语言量化投资(1)

    R是一门非常适合做数据的工具。不用关注时间复杂度多少,怎么把程序写漂亮。而是关注如何收集数据,提高数据质量,来解决...

  • R语言量化投资(4)

    低风险交易策略 企业债 企业债是一种低风险的金融产品,又不错的收益水平,风险相对较低。一般有6%的收益率 企业债分...

  • R语言量化投资(5)

    金融理论模型 资本资产定价模型 一元线性回归模型 多元回归模型 自回归模型 资本定价模型反应的是资本的风险和资本收...

  • R语言量化投资(2)

    算法的应用 金融领域,算法的作用之一就是风控,另外就是量化投资领域,通过量化算法模型实现赚钱。 金融市场的规则,有...

  • R语言量化投资(3)

    国内量化投资介绍 中国市场是一个不完全市场,市场和政策相结合的一种情况 在二级市场做交易首先要了解市场规则和交易工...

  • 量化投资的学习资料(自学):

    量化投资的学习资料(自学): 1.研究和回测平台:聚宽、优矿、Quant Opinion等等; 2.《量化分析与机...

网友评论

  • 9916e9e5d87e:你好,请问方便把temp.csv发给我吗?

本文标题:[原]量化投资教程:用R语言打造量化分析平台

本文链接:https://www.haomeiwen.com/subject/wfwtlttx.html