前言
况客是张丹老师的一个创业项目,张丹老师是一位资深的R语言用户,著有《R的极客理想》系列书籍与系列博文,在R语言工程化的道路上有很多值得我们学习的,可以说张丹老师代表着R语言技术的最前沿。这一次,我们来体验一下张丹老师的最新作品,重点介绍一下云端量化平台的使用体验。
试用
打开,况客的console,令我眼前一亮的就是自动化统计报表+Rstudio-Server计算环境,参考 前文 基于RStudio Webinars的统计报告Web化与工程化实践总结,完美结合了科学计算环境+RMarkdown输出,这意味着即使我关掉了浏览器,计算现场也会原封不动的保留。
Rstudio环境
参考前文 RStudio Server环境快速配置教程在Rstudio环境中,我们甚至可以引入 Git版本控制、shell脚本、Shiny应用、Project工程化等等。我猜想,况客平台上的Rstudio也许也是基于Docker生成的虚拟环境。
在shell中我们甚至可以看到网络配置
~$ ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:ac:11:2f:77
inet addr:172.17.34.8 Bcast:0.0.0.0 Mask:255.255.0.0
inet6 addr: fe80::42:acff:fe11:2f77/64 Scope:Link
UP BROADCAST RUNNING MTU:9001 Metric:1
RX packets:60686 errors:0 dropped:0 overruns:0 frame:0
TX packets:33607 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:24220177 (24.2 MB) TX bytes:52749143 (52.7 MB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
可以看出,和国内其他提供 Python 科学技术环境的量化平台不同,诸如RiceQuant、Uqer、JoinQuant,它们一律致敬了国外的Quantopian,并且阉割掉了网络调度的功能。显然,况客没有阉割掉网络调度的功能,而是提供了一个专属的Rstudio开发环境。这意味着我们可以在里面随意的网络请求,同时使用多方数据,安装第三方组件,这才是真正的科学计算平台!
安装加载依赖包
library(quantmod)
library(plyr)
library(TTR)
library(scales)
library(ggplot2)
library(qutke)
if(!require(DT)){install.packages("DT")}
# 测试安装 install.packages("dplyr") 包出现底层 Rcpp 错误
# 尝试 devtools::install_github("hadley/dplyr") 也失败了
key <- 'faca4c8ff4dc1502d87944ea9cfd74f19918f0aef37fde6746b61d4d339bfcf3'
init(key)
设置交易日期
sDate<- as.Date("2015-01-03") #开始日期
eDate<- Sys.Date() # 截止今日日期
tradingDay <- getDate(data="tradingDay" ,startdate=sDate,enddate=eDate,key=key)
tradingDay
获取行情
qtid <- c('000001.sz') # 设置股票池
dailyQuote <- getDailyQuote(data="mktFwdDaily" ,qtid=qtid,startdate=sDate,enddate=eDate,key=key)
DT::datatable(dailyQuote)
gglot2图形绘制
qplot(dailyQuote$date,dailyQuote$close)
quantmod图形绘制
参考前文 用R语言打造量化分析平台,我们也将况客上的数据转为xts zoo格式,方便quantmod
包做进一步分析。
# 转化格式
dailyQuote$date <- as.POSIXct(as.character(dailyQuote$date),tz="",format="%Y-%m-%d")
temp = read.zoo(dailyQuote[,-1][,1:2])
payh =as.xts(temp[,1]);colnames(payh)="Close"
chartSeries(payh,name="000001.SZ HarryZhu CopyRight") # 走势图
addMACD() # MACD曲线,不用自己计算
addBBands() # 布林带
效果
以平安银行为例的实时走势图
获取其他数据
更多数据请求方式我们可以参考官方API文档。
qtstock1 <- getQtStock(data='stockBeta',qtid=c('000001.SZ','000002.SZ'),key=key)
DT::datatable(qtstock1)
>head(qtstock1)
qtid date alpha beta nobs rSquared residStdErr
1 000001.SZ 2006-01-04 -1.528329e-05 1.379704 51 0.5235515 0.01256636
2 000001.SZ 2006-01-05 -1.933507e-04 1.351377 52 0.5306370 0.01249164
3 000001.SZ 2006-01-06 -5.029284e-04 1.277151 53 0.5081668 0.01263891
4 000001.SZ 2006-01-09 -5.334534e-04 1.282570 54 0.5149771 0.01245995
5 000001.SZ 2006-01-10 -7.144798e-04 1.264560 55 0.5115413 0.01236187
6 000001.SZ 2006-01-11 -1.084797e-03 1.258566 56 0.4982538 0.01250916
定时任务
在这个 https://qutke.com/console/app/code 定时页面下,我们甚至可以体验一下在Rstudio执行定时的R任务,目前推测是通过addin+crontab 实现的。
文档输出
在文档中我们甚至可以插入实时行情,根据F12的信息,这应该是调用的highcharts库实现的图形绘制。
可惜 Segmentfault 暂时并不支持 iframe格式,否则况客还提供了 iframe便于插入到个人的博客当中,复用相当方便。
结论
在国内区别于一般的Python科学计算平台体系:iPython Notebook + Pandas + Numpy + Matlibplot, 基于R的科学计算平台采用了 Rstudio + dplyr + quantmod + ggplot2 +rmarkdown + knitr 的方式,提供了更加彻底的计算环境和报告输出环境,更加符合量化投资研究性的需求。
欢迎大家在况客科技的网站上开启量化投资之旅。
参考资料
作为分享主义者(sharism),本人所有互联网发布的图文均遵从CC版权,转载请保留作者信息并注明作者 Harry Zhu 的 FinanceR 专栏:https://segmentfault.com/blog/harryprince,如果涉及源代码请注明GitHub地址:https://github.com/harryprince。微信号: harryzhustudio
商业使用请联系作者。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。