前言

况客张丹老师的一个创业项目,张丹老师是一位资深的R语言用户,著有《R的极客理想》系列书籍与系列博文,在R语言工程化的道路上有很多值得我们学习的,可以说张丹老师代表着R语言技术的最前沿。这一次,我们来体验一下张丹老师的最新作品,重点介绍一下云端量化平台的使用体验。

试用

打开,况客的console,令我眼前一亮的就是自动化统计报表+Rstudio-Server计算环境,参考 前文 基于RStudio Webinars的统计报告Web化与工程化实践总结,完美结合了科学计算环境+RMarkdown输出,这意味着即使我关掉了浏览器,计算现场也会原封不动的保留。

Console

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 科学技术环境的量化平台不同,诸如RiceQuantUqerJoinQuant,它们一律致敬了国外的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() # 布林带

效果

平安银行为例的实时走势图

https://qutke.com/console/rs-qutke/2210/360/2230/540/10048/graphics/plot.png?width=724&height=323&randomizer=1707109394]

获取其他数据

更多数据请求方式我们可以参考官方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 实现的。

crontab

文档输出

在文档中我们甚至可以插入实时行情,根据F12的信息,这应该是调用的highcharts库实现的图形绘制。

pick

chartSeries

可惜 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
商业使用请联系作者。


HarryZhu
2.2k 声望2.2k 粉丝

引用和评论

0 条评论