R语言与金融大数据处理——基础篇(代码)
发布时间:2021-01-22 21:28:29 所属栏目:大数据 来源:网络整理
导读:# 加百力咨询: 《R说话与金融大数据处理赏罚》 - 《基本篇》 (v1.0) # 最后修改时刻:2014-04-23(17.3) # 加百力咨询: 《R说话与金融大数据处理赏罚》 - 《基本篇》 (v1.0) # 主讲人:加百力 ### 01、课程先容 ### ###### ###### ###### ###### ###### ###### ##
# 加百力咨询: 《R说话与金融大数据处理赏罚》 - 《基本篇》 (v1.0) # 最后修改时刻:2014-04-23(17.3) # 加百力咨询: 《R说话与金融大数据处理赏罚》 - 《基本篇》 (v1.0) # 主讲人:加百力 ### 01、课程先容 ########################################################################################## # 课程内容 - 先容课程的意义、根基布局、课程报告要领 { # 为什么选择R说话做金融大数据处理赏罚? # R说话是免费、开源、自由的计较平台行使本钱低 # R的基本语法简朴、进修速率快、上手轻易 # R说话的数据可视化手段强,提供了富厚的画图函数 # 扩展软件包成长速率快、更新快,今朝已稀有千个扩展包包围险些全部的科学计较规模 # 固然运行速率比C/C++等慢,可是可以快速测试各类算法,节省项目尝试、研究时刻。 # 许多时辰只需一行代码就可以实施一项伟大的成果 # R说话的进修、研究社区成长快、进修资料富厚 # 课程整体布局 # R博大博识,内容极其富厚,纵然单个偏向要充实把握也必要数年时刻 # 本课程的目标是辅佐对措施编写有必然相识的学员快速把握R说话基本常识和金融大数据处理赏罚的根基要领 # 课程整体上分成两部门:《基本篇》 和 《扩展软件包篇》 # 此刻各人看到的10节课属于《基本篇》先容R说话的基本常识,辅佐各人成立根基的常识框架,可以顿时上手行使 # 后期我们还将推出的《扩展软件包篇》课程以R说话中的重要软件包为分类方法,每个软件包用4-6节课做具体先容 # 本讲座的特点 # 本讲座不行使PPT而是在RStudio平分享常识、直接运行代码块展示功效,让各人看到立竿见影的结果 # 贴近拭魅战,在先容R说话常识的同时中也分享金融大数据处理赏罚拭魅战心得 # 由于加百力从2002年就在做数据说明、数据库打点相干事变 # 近几年成立了本身的公司做对冲基金打点和金融大数据处理赏罚事变 # 以是本讲座还会分享成立数据说明、发掘公司的理念、事变系统和企业打点履历 # RStudio 重要快捷键 # Ctrl + L # 破除节制台输出 # Ctrl + Enter # 运行光标地址行的R代码 可能 当前选中行的R代码 # Ctrl + Shift + S # 运行当前剧本文件 # Ctrl + D # 删除整行 } # 加百力咨询: 《R说话与金融大数据处理赏罚》 - 《基本篇》 (v1.0) # 主讲人:加百力 ### 02、R基本常识 ########################################################################################## # 课程内容:先容:变量赋值、分支布局、轮回布局、函数行使、获取辅佐等常识 { # 通过赋值天生一个新变量 x <- 1.5;print(x) y1 <- c(1.5,2.3,8.6,7.4,9.2);print(y1) y2 <- c("MSFT","GOOG","AAPL");print(y2) y3 <- c(T,F,T,F);print(y3) 3.1415926 -> z;print(z) # 数据在左,变量名在右赋值,但较量罕用 assign("t",1.414);print(t) # assign()函数给变量赋值 szSymbolName <- 'GSPC' # assign()函数的风趣用途:将数值赋值给生涯在字符串变量中的变量名 assign(szSymbolName,1860);print(GSPC) # 可一次输入多个数据 cat("x = ",x,"n",sep="") # 表现当前内存中的全部变量、函数名称 ls() # 删除内存中的指命名称变量 rm(GSPC) # 删除内存中加载的全部变量和函数,慎用 rm(list=ls()) # 分支布局 a <- 1 if(a==1) print("a==1") a <- 2 if(a > 1) print("a > 1") else print("a <= 1") a <- 3 if( a == 1) { print("a == 1") }else # 留意这里,else必需紧跟在上一个大括号后头 { print("a != 1") } # 多重分支布局,同样每个else必需和前面的}牢牢粘在一路 a <- 4 if( a == 1) { print("a == 1") }else if( a == 2) { print("a == 2") }else { print("Not 1 & 2") } # ifelse()计较第一个逻辑表达式获得功效假如为T则返回第二个参数;不然返回第三个参数 a <- 2 print( ifelse(a > 1,3.1416,1.414) ) # switch语句的多重分支布局 n <- 1 switch(n,print("选项1"),print("选项2"),print("选项3"),print("选项4"),print("选项5") ) # for 轮回布局 iTotal <- 0 for(i in 1:100) # 行使要害词in列举向量中的每一整数 { iTotal <- iTotal + i } cat("1-100的累加和为:",iTotal,sep="") # 字符串也同样可以乐成列举异常利便 szSymbols <- c("MSFT","AAPL","INTL","ORCL","SYMC") for(SymbolName in szSymbols) { cat(SymbolName,sep="") } # while轮回 i <- 1 iTotal <- 0 while(i <= 100) { iTotal <- iTotal + i i <- i + 1 } cat("1-100的累加和为:",sep="") # repeat轮回 i <- 1 iTotal <- 0 repeat # 无前提轮回,必需在措施内部想法退出 { iTotal <- iTotal + i i <- i + 1 if(i <= 100) next else break # 留意:next,break的用法 } cat("1-100的累加和为:",sep="") # 自界说函数 # 留意:成立成果富厚、复杂、专业的自界说函数库、类库是公司的焦点竞争力 #pt <- function() { szCurTime <- as.character.Date(Sys.time()); options(prompt=paste(szCurTime,">",sep="")) } #pt() # 界说本身的二元运算符,%anything%,两个百分号之间可所以任何字符串 # 界说二元运算符的进程和编写自界说函数本质沟通 "%g%" <- function(x,y) { print(x+y) print(x-y) print(x*y) print(x/y) } 3%g%5 # 获取辅佐信息 ?print # 在RStudio右侧打开相干辅佐界面 example(print) ?quantmod # 打开扩展包整体辅佐信息 apropos("print*") # 在搜刮路径下查找满意正则表达式的全部函数信息 demo(graphics) # 计较机英语照旧较量轻易,何况要想拥有国际程度的金融大数据处理赏罚手段英语关必需过 # 还可以安装一个金山词霸,一边读辅佐文档一边将生词计入生词库,多温习、影象就好了 } # 加百力咨询: 《R说话与金融大数据处理赏罚》 - 《基本篇》 (v1.0) # 主讲人:加百力 ### 03、R常用数据布局 ############################################################################################### # 课程内容:先容向量、数组、列表、数据框、日期时刻等数据布局的基本常识,以及天生这些布局的要领 # R说话的内部数据布局很富厚、行使机动可是也很伟大较量轻易堕落。函数和数据布局差池应很轻易报错 { # 向量 x <- c(1,2,3,4,5);print(x) x <- 1:10;print(x) x <- seq(from=1,to=10);print(x) x <- seq(from=1,to=10,by=2);print(x) x <- seq(from=1,length.out=50);print(x) # 天生日期变量并用天生的日期变量天生一组日期序列数据 s <- as.Date("2014-1-1") e <- as.Date("2014-4-1") dtVec <- seq(from=s,to=e,by=1) print(dtVec) print(class(dtVec)) # 天生一组一再数据。行使常数初始化指定长度的向量 x <- rep(1,10);print(x) x <- rep("USD",5);print(x) # sample()取样函数从一组数据中随机取出指定命量的数据 # replace参数抉择是否可以一再取数 y <- sample(x=1:100,size=10,replace=F);print(y) y <- sample(x=c(0,1),size=20,replace=T);print(y) # 行使正态漫衍随机数天生函数天生指定命量、均匀值、尺度差的随机数 x <- rnorm(n=10,mean=100,sd=20);print(x) # 数组 # 天生向量然后通过配置队列数据转换成二维数组 x <- 1:20 dim(x) <- c(5,4) print(x) # 直接天生数组并初始化每个元素为3.14 x <- array(3.14,dim=c(5,4)) print(x) # 可以天生三维数组 # 行使正态漫衍随机数初始化整个数组 x <- array(rnorm(40,10,5),2)) print(x) print(length(x)) # 对付矩阵length()函数获得的是全部元素的总数目 # 数据框 # 数据框的情势和Excel较量相似 # 每一列可以看做是一个向量,范例沟通;差异列数据之间可以有差异范例 # 同列表的重要区别是:数据框要求每一列数据长度沟通 # 数据框的每一行可以看作是一笔记录,每一列看做是记录的某一个属性 # 数据框是金融大数据处理赏罚中很是重要的数据布局,用途很广必需深入相识 df <- data.frame(symbols=c("MSFT","KO","CSCO"),price=c(40.40,40.56,23.02),currency=rep("USD",3),country=rep("USA",type=rep("STOCK",3)) df print(class(df)) cat("df数据框行数为:",nrow(df),"ndf数据框列数为:",ncol(df),sep="") cat("df数据框总元素数目为:",length(df),sep="") # 获得的不是总元素个数,也不是行数而是列数(属性)数目 # 列表 # 列表行使list()函数来界说,列表中的每个元素可所以单个变量可能是向量,乃至是另一个列表 # 列表中每个向量的长度可以差异,这是列表和数据框的重要区别 # 数据框是一种情势非凡的列表 lst <- list(symbols=c("MSFT",currency="USD",country="USA",type="STOCK" ) lst print(length(lst)) # 共5个元素 # 日期类变量 dtVar <- Sys.Date() print(class(dtVar));print(dtVar) dtVar <- Sys.time() print(class(dtVar));print(dtVar) dtVar <- as.Date("2014-4-17",tz="UTC") print(class(dtVar));print(dtVar) dtVar <- as.Date("2014/4/17",tz="CST") print(class(dtVar));print(dtVar) # 用数字直接天生日期工具 # ISOdate()函数获得的是一个POSIXct工具 t <- ISOdate(2014,17) print(class(t));print(t) # 应承继承插手小时、分钟、秒数信息 t <- ISOdatetime(2014,17,15,28,48) print(class(t));print(t) # 将Date日期转换成儒略日期 # 在R中这是自1970-1-1以来的天数 d <- as.Date("2014-4-17") as.integer(d) julian(d) # 提取日期中的各个构成部门信息 d <- Sys.time() p <- as.POSIXlt(d) print(class(p));print(mode(p));print(p) print(p$year+1900) # p$year 自1900年以来的年份 print(p$mon+1) # p$mon 暗示0-11月 print(p$mday) # p$mday 该月的第几天 print(p$yday+1) # p$yday 该年的第几天,0-365天,元旦当天是第0天 print(p$wday) # p$wday 对应周几,0-6,周日为0,其他时刻和我们一般风俗同等 } # 加百力咨询: 《R说话与金融大数据处理赏罚》 - 《基本篇》 (v1.0) # 主讲人:加百力 ### 04、R的数据操纵 ############################################################################################### # 课程内容:R提供了极其机动的方法,会见、修改、扩充、删除、计较向量、列表、数据框等基本数据布局 { # 会见向量中元素 x <- 1:10;print(x) print(x[5]) print(x[-5]) print(x[c(1,5,8)]) print(x[1:5]) print(x[1:5*2]) # 冒号优先级更高,起首获得1-5这5个数据再乘以2 print(x[ x > 5 ]) # 逻辑表达式用x中每一个元素计较逻辑表达式的值做索引,获得的是原数组中x大于5的元素 print(mean(x)) print(x[ x > mean(x) ] ) # 逻辑表达中可以行使函数 names(x) <- LETTERS[1:10];print(x) # 行使字符常数数组给向量定名,再通过变量名会见向量中的元素 print(x["A"]) View(x) # 计较向量的长度 print(length(x)) # 修改指定位置的向量元素 x <- 1:10;print(x) x[5] <- 100;print(x) # 追加向量元素增进向量长度 x <- 1:10;print(x) x <- c(x,11,12,13);print(x) # 直接在向量末端写入数据 x <- 1:10;print(x) x[length(x)+1] <- 11;print(x) # 在向量指定位置插入数据 # 并不是在原本的向量中插入数据而是返回一个新的向量 # after参数暗示在原向量中的谁人向量后头插入数据 x <- 1:10;print(x) y <- append(x,11:13,after=0);print(x);print(y) y <- append(x,after=5);print(x);print(y) # 会见列表 lst <- list(symbols=c("MSFT",type="STOCK" ) print(lst[1]) print(lst$symbols) print(lst[[1]]) # 该列表的第一个元素是一个向量symbols print(lst$symbols[1]) # 该列表中symbols向量的第一个元素 # 在列表末端添加一个新的元素TradeDate names(lst) lst$TradeDate <- as.Date(rep("2014-4-17",3)) names(lst) # 在列表恣意位置添加一个新的元素 z <- list(plantform = rep("FXCM",3)) lst <- append(lst,z,after=0) names(lst) str(lst) # 删除列表中的指定项 names(lst) lst$price <- NULL names(lst) # 矩阵会见 data(EuStockMarkets) print(head(EuStockMarkets)) print(class(EuStockMarkets)) print(summary(EuStockMarkets)) print(EuStockMarkets[,"DAX"]) # 输出全部行,DAX列数据,直接行使列名称会见 print(EuStockMarkets[,1]) # 输出全部行,第一列(德国DAX指数)数据,编写大型措施时显然不足直观 # 查察整个矩阵的数据,弊端是还必要手动封锁打开的页面 View(EuStockMarkets) # rowSums()计较矩阵每一行的和天生一个新向量 rowTotal <- rowSums(EuStockMarkets) # 以列方法将每一行和向量接在矩阵之后形成有5列的新矩阵 EuStockMarkets <- cbind(EuStockMarkets,rowTotal) View(EuStockMarkets) # colSums()计较矩阵每一列的和天生一个新向量 colTotal <- colSums(EuStockMarkets) # 以行方法将每一行和向量接在矩阵之后形成一个有新累加和行的矩阵 EuStockMarkets <- rbind(EuStockMarkets,colTotal) print(tail(EuStockMarkets)) # 会见数据框 df <- data.frame(symbols=c("MSFT",3)) df print(class(df)) print(df[1,]) # 通过队列号会见数据框的一行 print(df[,2]) # 通过队列号会见数据框的一列 print(df$price) # 用列名称是更好、更直观的方法 # 假如必要多次会见数据框中的数据列可以将数据框名称插手到搜刮路径中 # 这样就可以直接行使数据列名称 attach(df) print(currency) print(type) detach(df) } # 加百力咨询: 《R说话与金融大数据处理赏罚》 - 《基本篇》 (v1.0) # 主讲人:加百力 ### 05、R的重要数据说明函数 ####################################################################################### # 课程内容:先容R中许多重要、常用的数据说明函数 { # 表现加载到内存中的变量和函数名称 ls() # 表现加载到内存中的变量和函数的具体信息 ls.str() # 计较返回向量中最大、最小的元素的索引值 x <- 1:100 print(which.max(x)) print(which.min(x)) # 假如向量中存在多个相称的最大、最小值返回的是第一个最大、最小值的索引 x <- c(1,1,5) print(which.max(x)) print(which.min(x)) # 返回最大、最小值 print(max(x)) print(min(x)) # 对向量举办排序,默认回收升序排序方法 x <- c(3,8,6,9,7,4) print(sort(x)) print(sort(x,decreasing=T)) # 默认的降序参数配置为F,假如配置为T则回收降序排序 # 日期字符串向量 szDate <- c("2014-1-1","2014-3-1","2014-3-18","2014-2-14","2014-4-26","2014-4-1","2014-1-24") # 通过as.Date()函数天生日期序列 # 留意:R说话中许多函数都可以行使向量做参数 t <- as.Date(szDate) # sort()函数可以对日期序列做排序操纵 t <- sort(t);print(t) # rev()函数对向量做逆序处理赏罚 x <- c(3,4) print(x);print(rev(x)) # 上例中的日期型数据同样可以逆序分列 print(t);print(rev(t)) # 获取游程的信息 x <- c(1,-1,1) y <- rle(x) print(mode(y)) str(y) # 凭证巨细对向量数据做分类处理赏罚,可以用于绘制直方图 x <- rnorm(n=10,mean=10,5) print(x) breaks <- c(-20,-10,0,20) # 支解数据的界线数值向量 y <- cut(x,breaks) print(summary(y)) # 在向量中查找指定命据(数据可用向量情势给出),此函数返回一个和原向量等长的向量 # 存在待匹配数据的位置上标志为N(第N个待匹配数据就标志N) x <- c(2,3) print(match(x,4)) print(match(x,c(4,5))) # 计较组合数/分列数 print(choose(5,2)) print(factorial(3)) # 标记函数 # 逐日股市上涨下跌收益率有正有负可以用sign()函数天生1,-1,0构成的游措施列 cat("sign()函数运算功效:",sign(0),",",sign(3.14159),sign(-1024),sep="") # 删除向量、矩阵、数据框中的NA值 x <- c(1,NA,9) y <- na.omit(x);print(y); print(length(y));print(class(y)) dim(x) <- c(5,2) print(x) print(na.omit(x)) # 删除数组中的NA值的法则是删除含有NA值的整行数据 # 买卖营业品的汗青数据中也许存在NA数值,行使na.omit()函数将会删除整条汗青记录 # 检测向量、矩阵、数据框中是否包括NA数值,假如包括返回错误信息 x <- c(1,9) y <- na.omit(x) na.fail(x) na.fail(y) dim(x) <- c(2,5) na.fail(x) # 去除向量中的一再数据 x <- c(1,9) print(unique(x)) # subset()从数据框中取出满意前提的子集 # 对付汗青行情数据、汗青买卖营业记录可以很利便的取出个中感乐趣的数据 data(airquality) head(airquality) newset <- subset(airquality,Temp > 80 & Month == 5,select = c(Ozone:Day)) head(newset) } # 加百力咨询: 《R说话与金融大数据处理赏罚》 - 《基本篇》 (v1.0) # 主讲人:加百力 ### 06、R基本画图技能 ############################################################################################## # 课程内容: 具体先容基本的R画图技能 { x <- 1:100 y <- 100 + x*5 windows(300,200);plot(y) windows(300,200);plot(y,type="l") # 天生100个正态漫衍随机数并画图 x <- rnorm(100,5) plot(x) # 绘制1000个正态漫衍随机数的频数直方图 x <- rnorm(1000,30,10) hist(x) # 行使核密度预计函数density(),在直方图上绘制密度曲线 # hist()函数必需配置freq参数为F才气表现密度曲线 x <- rnorm(1000,10) hist(x,freq=F) lines(density(x),col="blue") box() # 茎叶图很直观的示意出数据的漫衍环境 x <- rnorm(100,1) stem(x) # 绘制10个正态漫衍随机数的条形图 x <- rnorm(10,10);barplot(x) box() # 在当前图上加个方框 # 绘制饼图 x <-1:5;pie(x,col=rainbow(5)) box() # 绘制箱线图 # 中间黑线为中位数位置;上下框线为上下四分位数位置;上下触须为1.5倍四分位数间距;假若有孤├点暗示非常值 x <-rnorm(10,3);boxplot(x) # 绘制向日葵图 data(iris) sunflowerplot(iris[,3:4]) # 绘制矩阵或数据框的二元图 data(iris) pairs(iris[1:4],main = "Anderson's Iris Data -- 3 species",pch = 21,bg = c("red","green3","blue")[unclass(iris$Species)]) # 绘制QQ图 # 假如向量为正态漫衍则数据点根基在一条直线上 x <- rnorm(500,5);qqnorm(x) # 按照指定函数绘制指定范畴的曲线图 curve(sin,-2*pi,2*pi,xname = "t") # 低程度画图函数:在高程度画图函数绘制的图形上做增补和修饰 # 天生50个正态漫衍随机数并画图 x <- 1:50 y <- rnorm(50,5) plot(x,y,type="n",xlab="数据索引",ylab="随机数点",xlim=c(1,50),ylim=c(-20,20),main="尝试图",sub="随机数画图") points(x,col="blue") lines(x,col="red") text(5,max(y),"随机数据点") # 在指定坐标位置安排文本 mtext("横轴下方笔墨",side=1) # 横轴、纵轴上安排笔墨 mtext("纵轴左方笔墨",side=2) mtext("横轴上方笔墨",side=3) mtext("纵轴右方笔墨",side=4) segments(10,50,-10) # 按照出发点、终点坐标绘制线段 arrows(10,40,20,angle=15,code=1) # 绘制带箭头线段,可以配置箭头角度,有几个箭头(1出发点箭头、2终点箭头,3双箭头) abline(-20,.5) # 在图上绘制直线,第一个参数为截距,第二个参数为斜率 abline(h=0,col="red") # 在图上绘制程度线或垂直线,可以标示临界位置,很好用的成果 legend(0,"随机点连线") # 坐标定位模式得到鼠标点击位置的坐标 x <- 1:50 y <- rnorm(50,main="尝试图") print(locator(3,type="p")) # 图像进入定位模式,第一个参数抉择获取几个点的坐标信息,第二个参数抉择画图方法 rect(5,20) # 在已经乐成绘制的图形内部绘制一个长方形 polygon(c(20,45),c(-10,-10)) # 在高级图形内部绘制多边形 # 天生一个画图窗口在个中绘制图形后用savePlot()函数生涯 windows() plot(1:10) rect(1,col="blue") savePlot("test01",type="jpg",device=dev.cur(),restoreConsole=TRUE) # 直接在jpeg装备上绘制图形,完成后行使dev.off()封锁装备,存盘退出 jpeg(file="myplot.jpeg") plot(1:10) rect(1,col="blue") dev.off() } # 加百力咨询: 《R说话与金融大数据处理赏罚》 - 《基本篇》 (v1.0) # 主讲人:加百力 ### 07、金融数据获取 ############################################################################################### # 课程内容:从雅虎金融等数据网站获取:各国股票、股指、债券、ETF基金、汇率、金属、期权等买卖营业品种汗青数据和上市公司年报数据 { library(quantmod) # 不配置来历则默认从雅虎金融下载; # 雅虎金融上大量指数品种都以"^"开头 # from,to参数配置读取汗青数据的时刻段 getSymbols("^GSPC",src="yahoo",from="1994-1-1",to=Sys.Date()) print(head(GSPC));print(tail(GSPC)) print(class(GSPC)) print(is.OHLC(GSPC)) print(is.OHLCV(GSPC)) # 从雅虎金融读取闻名的苹果公司的所有股票数据 getSymbols("AAPL",from="1900-1-1",to=Sys.Date()) print(head(AAPL));print(tail(AAPL)) # 从雅虎金融读取闻名港股长江实业的股票数据 # 港股和大陆A股相同行使数字编号,雅虎金融上面有环球几十个市场的数据必要举办区分 # 美股不行使后缀而其他国度或地域的股票必要行使后缀:大陆沪市行使:".SS",深市行使:".SZ",香港行使:".HK" setSymbolLookup(CJSY=list(name="0001.HK",src="yahoo")) # 在函数内部用列表指明股票代码和查询网站并指定一个变量名便于生涯 getSymbols("CJSY",to=Sys.Date()) print(head(CJSY));print(tail(CJSY)) # 用字符串向量生涯股票代码一次下载一组股票数据 # 下载股票数目高出5种时体系会自动停息1秒 szSymbols <- c("MSFT","CSCO","SYMC","TSLA") getSymbols(szSymbols,from="2008-1-1",to=Sys.Date()) # 美国10年期债券收益率 getSymbols("^TNX",to=Sys.Date()) print(head(TNX));print(tail(TNX)) # ETF基金,伊斯兰地域ETF基金,2008-03-28 getSymbols("ACWI",to=Sys.Date()) print(head(ACWI));print(tail(ACWI)) # 获取美元兑日元汇率数据 # 只能获取最近1年多的汇率汗青数据,而且只有收盘价 getFX("USD/JPY") print(head(USDJPY));print(tail(USDJPY)) # 获取欧元兑美元汇率数据 getSymbols("EUR/USD",src="oanda") print(head(EURUSD));print(tail(EURUSD)) # 运行这一段代码会呈现错误,该数据源每次哀求只能获取500天以内的数据 # 外汇是极其重要的买卖营业品种,天天成交量高出5.3万亿美金,大型对冲基金都要操纵 # 获取高出30年,天天OHLC汗青数据的要领在第9课中具体先容 getSymbols("EUR/USD",src="oanda",from="2005-01-01") # 获取买卖营业品当前最新的具体报价数据信息 tmp <- getQuote("AAPL");print(tmp);print(class(tmp)) # 获取财报信息 getFinancials("TSLA") viewFin(TSLA.f) viewFin(TSLA.f,"CF","A") # 每年的现金流 # 得到股票的股息汗青数据 getDividends("AAPL") # 得到股票的拆分信息 getSplits("BIDU") # 对股票举办除权除息调解 # 除权除息对付早期汗青数据影响更明明 getSymbols("BIDU",from="2005-01-01",src="yahoo") head(BIDU) head(BIDU.a <- adjustOHLC(BIDU)) # 默认调解方法不行使Adjusted列的数据 head(BIDU.uA <- adjustOHLC(BIDU,use.Adjusted=T)) # 计较除权除息之后的开盘价收盘价收益率和收盘价收益率,保持稳固 head(cbind(OpCl(BIDU),OpCl(BIDU.a),OpCl(BIDU.uA))) head(cbind(ClCl(BIDU),ClCl(BIDU.a),ClCl(BIDU.uA))) # 获取期权信息 # 期权是极为重要的买卖营业品种 BIDU.OPT <- getOptionChain("BIDU") print(class(BIDU.OPT)) # 获取的期权链数据生涯在列表中 print(BIDU.OPT) # 表现所有期权链数据量很是大 print(BIDU.OPT$symbol) # 表现期权链列表中的symbol数据 print(BIDU.OPT$calls) # 表现期权链列表中的看涨期权数据 } # 加百力咨询: 《R说话与金融大数据处理赏罚》 - 《基本篇》 (v1.0) # 主讲人:加百力 ### 08、金融数据画图与技能指标 ##################################################################################### # 课程内容:金融时刻序列的画图、quantmod软件包中的专用函数画图、把常用技能指标、成交量等内容插手图形 { # getSymbols("^GSPC",src="yahoo",from="2004-1-1",to="2014-1-1") tail(GSPC) GSPCClose <- Cl(GSPC) tail(GSPCClose) # plot()是泛型函数可以或许按照输入自变量的范例差异挪用差异模块绘制图形 # 只能对收盘价这样的单个数据点画图 windows() plot(GSPCClose) # chartSeries() 画图 # 函数可以直接接管OHLCV时刻序列作为输入 windows() chartSeries(GSPC) # 只用收盘价数据也没题目 windows() chartSeries(GSPCClose) # chartSeries()具体参数行使 windows() chartSeries(GSPC,name="标普500走势图",type="candlesticks",subset="2012/2013",# ISO8601气魄威风凛凛的字符串用于暗示时刻范畴 TA=NULL,# 默认行使"addVo()"将成交量表现在图形底部,配置为NULL增进显树模畴 theme=chartTheme("white")) # 行使名为"white"的画图主题 # 获取white画图主题的参数 theme.white <- chartTheme("white") # 查察画图主题全部参数 names(theme.white) theme.white$up.col <- "red" theme.white$dn.col <- "white" theme.white$border <- "lightgray" windows() chartSeries(GSPC,subset="2013-6/",# 2013年6月到最后一个数据 TA=NULL,theme=theme.white) # 行使参数颠末修改的画图主题 # 行使笔墨描写的取子集成果 windows() chartSeries(GSPC,show.grid = T,# 无论是否行使此参数都看到 type="candlesticks",subset="last 3 months",# 行使笔墨描写,最后3个月时刻序列值 TA="addVo()",# 插手成交量数据 theme=theme.white) # reChart()的大大都参数和chartSeries()相似用于对最新绘制的图形做修改 reChart(theme=chartTheme("black"),subset="last 6 months") # 插手多个技能指标 windows() chartSeries(GSPC,subset="last 2 quarters",# 行使笔墨描写,最后2个季度的时刻序列值 TA="addVo();addSMA(20);addBBands(20,3)",# 插手简朴移动均匀线和布林线指标,不是指标函数 theme=theme.white) # 行使参数颠末修改的画图主题 # chartSeries()函数绘制出的图形通过zooom()函数做缩放操纵 # n 每次挪用函数时交互图形变革的倍数 # eps 点击鼠标屡次图形产生改变 zooom(n=1,eps=2) # 放大2012年的汗青数据 zoomChart("2012") # 放大2012年9月的汗青数据,第三轮QE启动 zoomChart("2012-9") # 直接行使addCCI()函数在当前图形上添加新技能指标 addCCI(20) windows() chartSeries(GSPC,# 插手简朴移动均匀线和布林线指标,不是指标函数 theme=theme.white) # 行使参数颠末修改的画图主题 # 默认行使的是"pdf"参数,图形被生涯在当前目次下 # 运行时常常堕落 saveChart(.type="jpeg",dev=dev.cur()) # 行使jpeg()和dev.off()函数共同生涯绘制的图形到JPEG文件中 jpeg("GSPC.jpeg") chartSeries(GSPC,# 插手简朴移动均匀线和布林线指标,不是指标函数 theme=theme.white) # 行使参数颠末修改的画图主题 dev.off() } # 加百力咨询: 《R说话与金融大数据处理赏罚》 - 《基本篇》 (v1.0) # 主讲人:加百力 ### 09、金融数据文件读写 ########################################################################################## # 课程内容:将获取到的金融数据写入多种差异的文件;读取大伶俐导出数据文件;读取MT4导出数据文件 { getSymbols("^GSPC",from="2004-1-1",to="2014-1-1") tail(GSPC) # 将生涯汗青记录的数据框直接写入当地RDATA文件 save(GSPC,file="GSPC.RDATA") # 删除变量GSPC之后,内存中无内容无法会见 rm(GSPC) tail(GSPC) # load()函数可以装载save()函数生涯的汗青数据 load("GSPC.RDATA") tail(GSPC) # 读取CSV文件 # header=T,暗示文件存在暗示数据寄义的数据头部 # skip=0,暗示数据中没有必要跳过的行 TRData <- read.csv("TradeRecord.csv",header=T,skip=0) head(TRData) # 将csv数据写入文件 # 假如这样直接写入会保存行号倒霉于后续说明,并增进文件巨细 write.csv(TRData,file="WriteTR.csv") # 配置参数不写入 write.csv(TRData,file="WriteTR.csv",row.names=F) # 读取内存数据文件 # 打开Excel文件,拷贝相干买卖营业数据 # read.table()具备从内存剪贴板中读取数据 TRData <- read.table("clipboard",header = T,sep = "t") head(TRData) # 从平凡文本中读取数据 # 打开大伶俐软件查找EURUSD品种,找到欧元兑美元汇率 # 将数据拷贝到剪贴板中并生涯到文本文件中 # 行使read.table()读取文件 EURUSD <- read.table("DZHEURUSD.txt",skip=1,sep = "t") head(EURUSD);tail(EURUSD) # 1989-7-17以来的英镑兑美元汗青数据 GBPUSD <- read.table("DZHGBPUSD.txt",sep = "t") head(GBPUSD);tail(GBPUSD) # 从网站上读取全部表格文件 library(XML) url <- "http://en.wikipedia.org/wiki/world_population" tbls <- readHTMLTable(url) # 说明tbls的范例为列表 print(class(tbls)) str(tbls) print(length(tbls)) # 输出表格列表中的第一个元素 tbls[[1]] # 从MT4平台导出数据的要领 # MT4也是外盘重要的买卖营业平台,当我们没有特定品种数据时可以从MT4中导出文本文件 # 留意:MT4暗示时刻时行使"."做支解如:2014.4.18,这种名目R说话无法直接读取 # 要么编写一个MT4剧本读取到汗青数据之后提取年代日信息然后转换成尺度的2014/4/18字符串情势 # 要么明晰日期字符串名目范例,然后转换 as.Date("2014.4.18",format="%Y.%m.%d") # MT4中导出HKG33数据写为文本文件然后读取 HKG33 <- read.table("HKG33.TXT",sep = "t") head(HKG33);tail(HKG33) } # 加百力咨询: 《R说话与金融大数据处理赏罚》 - 《基本篇》 (v1.0) # 主讲人:加百力 ### 10、加百力的R说话、金融大数据处理赏罚进修提议 ####################################################################### # 课程内容:先容加百力总结的深入进修R说话,晋升开拓功力、金融大数据处理赏罚手段的要领 # R说话的特点是:成果极其强盛;各类帮助软件包千差万别(多达数千种); # 函数成果富厚(每个包中常有几十乃至上百个高代价函数) # 基于R说话的特点有以下几条提议 # 1、规避陷阱:慎入群、慎入论坛、慎提问、慎写代码 # 2、进修计策:循规蹈矩、多读经典图书;多读体系辅佐;多写测试代码; # 站在巨人的肩膀上(不是本身逐步写代码实现已存在成果) # 3、低级阶段:制订久远进修打算;僵持念书、成系统、成体系的进修R说话 # 4、中高级阶段:以软件包为焦点。加百力曰:不学扩展包,脑壳就长包 # 5、高级要领:扫描式进修软件包;成立本身的示例代码库;翻译扩展软件包;建造电子档(进修条记)宣布 # 晋升金融大数据处理赏罚手段的几条提议 # 1、多蕴蓄买卖营业品基本常识:外汇、股指、能源、金属、农产物、名誉产物、ETF基金 # 相识的越多,买卖营业红利的机遇越多,风险越小 # 2、多蕴蓄极度市场行情的案例:1987年股灾、1994年债券市场瓦解、1997年亚洲金融危急 # 1998年俄罗斯债务危急、2008年次级债危急 # 3、多蕴蓄先进乐成、失败的案例。先进碰着的环境我们也会碰着,模子是否可以或许扛住 # 4、多思索乐成案例背后的通用模式、模子:许多案例有相同的模式如公司危急模式、季候模式、 # 打算变乱模式都可以总结成数学模子 # 5、多蕴蓄跨学科模子:天气模子、天体物理模子、神经收集、小波说明等都有也许应用于投资拭魅战, # 蕴蓄的模子越多越能发明新纪律 # 6、多蕴蓄代码履历、多思索、多测试。不满意于拍脑门、想虽然的下结论,而是用现实汗青数据措辞 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |