R语言

等距离股票配对量化交易策略-R语言

元气小坏坏 提交于 2020-02-27 15:54:01
为了分散交易中的风险,我们可以在量化交易中选择市场中性策略。 我们选择具有基本面相关性的股票对,价格趋势具有趋同和趋离,买多强势的股票,卖空弱势的股票,同时交易,控制股市风险。 案例是石油公司埃克森美孚(NYSE:XOM)和石油公司雪佛龙(NYSE:CVX) > 公司简介:埃克森美孚公司于1882年在美国新泽西州成立,公司的分部及附属公司在美国和世界上大多数其他国家经营或买卖产品。公司主要业务为能源,涉及勘探、生产、原油和天然气;生产石油产品;运输和销售原油、天然气和石油产品。公司是石油化工商品的制造商和销售商,包括烯烃、芳烃、聚乙烯和聚丙烯塑料和各种特色产品。此外,公司还拥有发电设施的利益。公司也是全球主要的石化产品生产商和营销商,并参与发电。 >公司简介: 雪佛龙股份有限公司于1926年在美国特拉华州注册成立。公司经营范围包括石油和化学工业的各个方面。上游业务主要包括勘探、开发及生产原油及天然气;加工、液化、运输和液化天然气再气化;主要的国际石油出口管道输送原油;运输、储存和销售天然气;一个天然气合成油项目。下游业务主要包括将原油提炼为石油产品;营销原油及其成品;通过管道、海洋船舶、电机设备和轨道车运送原油和成品油;制造和销售在工业用途、燃料和润滑油添加剂上应用的石化产品、塑料。 回测 # 载入量化和绩效分析库 library(quantmod) library

Quantsrat让R语言像Python一样进行策略回测和量化交易

Deadly 提交于 2020-02-27 08:16:02
使用Quantsrat包 Quantsrat用来建立策略、添加指标、生成信号、生成买卖规则等进行回测。效果类似优矿、万矿、米筐那样的Python量化平台一样。因为不能CRAN在线安装,安装过程中还有一些坑。希望本文可以帮大家更顺利开始R的量化交易学习。 安装Quantsrat 试了一下,看来Quantsrat没有加入CRAN。每次遇到这种情况知道安装不会太顺利🤣 > install.packages("quantsrat") Warning in install.packages : package ‘quantsrat’ is not available (for R version 3.6.2) 先安装devtools、FinancialInstrument、PerformanceAnalytics和zoo包 > install.packages("devtools") trying URL 'https://mirrors.tongji.edu.cn/CRAN/bin/windows/contrib/3.6/devtools_2.2.1.zip' Content type 'application/zip' length 342853 bytes (334 KB) downloaded 334 KB package ‘devtools’ successfully

R语言:lattice程序包

左心房为你撑大大i 提交于 2020-02-26 18:00:27
R语言:lattice程序包 lattice程序包 实例 lattice程序包 lattice程序包主要用于处理结构稍稍复杂一些的数据集,入门容易,作图速度较快,图形函数种类较多,还可以进行三维绘图。 lattice程序包中主要的函数如下: 实例 调用程序包ggplot2中的diamonds数据集,该数据集包括了砖石的重量、颜色、价格和质量信息等,共10个变量。部分数据如下: 安装并加载程序包 install . packages ( "ggplot2" ) library ( "ggplot2" ) data ( diamonds , package = "ggplot2" ) library ( lattice ) 从数据中随机抽取1000个样本作图 sample = diamonds [ sample ( nrow ( diamonds ) , 1000 ) , ] xyplot ( price ~ carat , data = sample , groups = cut , auto . key = list ( corner = c ( 1 , 0 ) ) , type = c ( "p" , "smooth" ) , span = 0.7 , main = "Price VS. Carat" ) 二元图 bwplot ( color ~ price | cut ,

应用统计学与R语言实现笔记(番外篇二)——假设检验更正

放肆的年华 提交于 2020-02-26 11:48:43
今天的文章想从统计学的角度——假设检验,来回顾最近的疫情。同时也是刚好有之前应用统计学与R语言实现笔记假设检验一章中的的错误更正。关于假设检验的内容,详情见下面的博客。 应用统计学与R语言实现学习笔记(六)——假设检验 1 细心的读者与更正 首先感谢简书平台上这位叫“十七颗青彩”的读者,她提出了我之前笔记里的一个错误。具体如图所示。 定位到博客里就是第二部分将原假设和备择假设的最后部分。 确实是自相矛盾了,下面的表达是错误的。左侧检验和右侧检验是反过来的。目前我在hexo搭建的博客以及CSDN博客均更正(这两个平台支持公式编辑),其余博客平台由于不支持博客平台,这部分内容我推荐看hexo博客或者直接看我的开源项目和电子书。 应用统计学与R语言实现笔记github项目 应用统计学与R语言实现笔记电子书github项目 应用统计学与R语言实现笔记电子书地址 2 p值含义解读、假设检验结论与统计学决策 无论是做线性回归模型,或是做假设检验,还是做方差分析,结果里都会出现的就是p值。比如过去博客里的几张图。 可以说p值是连接概率论与统计学的关键桥梁。p值的学术定义叫做:在一个假设检验问题中,拒绝原假设的最小显著性水平。 这个定义很绕口,我们用之前假设检验的比喻来说一下。原假设是一个暖男A,正在追求的女神叫结论,但是同时还有一个高富帅叫备择假设,也在追求女神结论

R语言和中国地图

穿精又带淫゛_ 提交于 2020-02-26 05:39:40
上图是R语言绘制的按地域分布的数据图。更科学,更严谨,也更有质感的样子。 今天瞎写点东西,我在想数据分析的意义是什么,也许就是研究事物存在的形式。而事物存在的形式是什么样子呢,从最初的三维空间,爱因斯坦伯伯把时间也拉了进来,于是时间作为一种变化的空间而存在着,成为第四维。现在好像还发现了第五空间,可能是人的心理空间或者意识空间,还有人说是曲率,不一而足。个人认为i,所有的事物应该都是彼此联系的,没有单纯的独立的与其他东西绝缘的存在。而人的内心,人的思维目前确实是独立于其他四维的空间。所以他应该是另一种存在,但应该以一种其他的形式,可以和其他维度相统一的形式。波么? 还是更细的粒子?亦或是更加悬而未远的东西。 拉回数据分析,数据分析常用的维度吧,时间,空间,以及复杂的人群分布(人的各种属性,造成了各种人群的分布)。而空间,R语言有一些MAP的方法。于是站在巨人的肩膀上,今天来画地图吧。 基本MAP方法: 1.世界地图: 有一些R包中存储着常见地图的数据,比如maps包中存有世界地图、美国地图、美国各州郡地图、法国地图以及加拿大城市地图等,加载了这个包,就可以轻松愉快地绘制上述地图。mapdata包中存有中国地图的数据,但是比较旧了,这个数据,重庆还没有从四川分出来呢。 library(maps) map("world", fill = TRUE, col = rainbow(200)

R语言神经网络量化交易模型

本小妞迷上赌 提交于 2020-02-26 00:10:39
上篇是逻辑回归模型,这次我们用神经网络模型。再算一遍,试试看 # 载入示例股票 library(quantmod) getSymbols("^DJI", src = "yahoo") dji <- DJI[, "DJI.Close"] # 生成技术指标 avg10 <- rollapply(dji, 10, mean) avg20 <- rollapply(dji, 20, mean) std10 <- rollapply(dji, 10, sd) std20 <- rollapply(dji, 20, sd) rsi5 <- RSI(dji, 5, "SMA") rsi14 <- RSI(dji, 14, "SMA") macd12269 <- MACD(dji, 12, 26, 9, "SMA") macd7205 <- MACD(dji, 7, 20, 5, "SMA") bbands <- BBands(dji, 20, "SMA", 2) # 生成市场方向,收盘价与之后20天价格比较,上涨、下跌、横盘 direction <- data.frame(matrix(NA, dim(dji)[1], 1)) lagret <- (dji - Lag(dji, 20)) / Lag(dji, 20) direction[lagret > 0.02] <- "Up"

R语言用quantstrat包获取股票、债券、基金、黄金、原油、指数、外汇和全球经济数据

谁都会走 提交于 2020-02-25 20:36:26
R语言可以非常轻松的获得证券(股票、债券、基金、期货(黄金、原油等)、期权),指数、外汇和美联储提供的各种经济数据。我来详细说一下。 quantstrat包的金融数据很全 yahoo提供的各种证券数据,股票、债券、基金、期货、期权、指数都有,非常全。你在雅虎财经页面上看见的我们都能拿到。缺点是咱们这边访问速度非常慢。 Google也提供了相同的数据。但是2018年之后已经不能用了。看老资料的时候一定要注意。 OANDA提供了180天的外汇数据。访问也不是速度的问题。你懂的。 FRED是美联储提供的经济数据。利率、GDP、国债收益率之类的都在这里找。速度慢点,但是能用。 Rdata文件。放什么随意,速度看你的硬盘速度。 CSV文件 MySql数据库 我们先载入quantstrat包 > library(quantstrat) 载入需要的程辑包:quantmod 载入需要的程辑包:xts 载入需要的程辑包:zoo 载入程辑包:‘zoo’ The following objects are masked from ‘package:base’: as.Date, as.Date.numeric 载入需要的程辑包:TTR Version 0.4-0 included new data defaults. See ?getSymbols. 载入需要的程辑包:blotter 载入需要的程辑包

方括号[]和双括号[[]]之间的区别是用于访问列表或数据框的元素

耗尽温柔 提交于 2020-02-25 18:48:29
R提供了两种不同的方法来访问列表或data.frame的元素- [] 和 [[]] 运算符。 两者有什么区别? 在什么情况下我应该使用另一个? #1楼 对于另一个具体用例,当您要选择 split() 函数创建的数据框时,请使用双括号。 如果您不知道, split() 基于一个关键字段将一个列表/数据帧分组为子集。 如果要对多个组进行操作,绘制它们等,这将很有用。 > class(data) [1] "data.frame" > dsplit<-split(data, data$id) > class(dsplit) [1] "list" > class(dsplit['ID-1']) [1] "list" > class(dsplit[['ID-1']]) [1] "data.frame" #2楼 R语言定义可轻松回答以下类型的问题: http://cran.r-project.org/doc/manuals/R-lang.html#Indexing R具有三个基本的索引运算符,其语法由以下示例显示 x[i] x[i, j] x[[i]] x[[i, j]] x$a x$"a" 对于矢量和矩阵, [[ 形式]很少使用,尽管它们与 [ 形式有一些细微的语义差异(例如,它删除了任何名称或dimnames属性,并且部分匹配用于字符索引)。 当索引多维结构与单一索引, x[[i]] 或 x

基于相关性的投资中性交易模型-R语言

不羁的心 提交于 2020-02-25 16:10:29
投资中性模型。可以让我们的投资组合的风险敞口极小。 # 滚动计算相关性 data <- cbind(ret_xom,ret_cvx) correlation <- function(x){ result <- cor(x[,1],x[,2],use = "na.or.complete") return(result) } corr <- rollapply(data,252,correlation,by.column=FALSE) plot(corr) # 滚动计算上下边界 hedge_ratio <- xom / cvx roll_me <- rollapply(hedge_ratio,14,mean,na.rm=TRUE) roll_std <- rollapply(hedge_ratio,14,sd,na.rm=TRUE) # n是关键值 n <-1 roll_ub <- roll_me + n * roll_std roll_lb <- roll_me - n * roll_std # 交易信号 signal <- NULL signal <- ifelse(hedge_ratio > roll_ub,-1, ifelse(hedge_ratio<roll_lb,1,0)) lagsignal <- lag(signal,1) signal ifelse(lagsignal

R语言运算符

こ雲淡風輕ζ 提交于 2020-02-25 15:25:20
运算符是一个符号,告诉编译器执行特定的数学或逻辑操作。R语言有丰富的内置运算符,并提供以下类型的运算符。 运算符类型 算术运算符 关系运算符 逻辑运算符 赋值运算符 其他运算符 算术运算符 下表列出了用R语言支持的算术运算符。运算符作用向量中的每个元素。 运算符 描述 示例 + 两个向量相加 v <- c( 2,5.5,6) t <- c(8, 3, 4) print(v+t) 它产生以下结果: [1] 10.0 8.5 10.0 − 从第一个向量减去第二个向量 v <- c( 2,5.5,6) t <- c(8, 3, 4) print(v-t) 它产生以下结果: [1] -6.0 2.5 2.0 * 两个矢量相乘 v <- c( 2,5.5,6) t <- c(8, 3, 4) print(v*t) 它产生以下结果: [1] 16.0 16.5 24.0 / 将第一个向量与第二向量相除 v <- c( 2,5.5,6) t <- c(8, 3, 4) print(v/t) 它产生以下结果: [1] 0.250000 1.833333 1.500000 %% 得到第一矢量与第二个矢量余数 v <- c( 2,5.5,6) t <- c(8, 3, 4) print(v%%t) 它产生以下结果: [1] 2.0 2.5 2.0 %/% 第一个向量与第二(商)相除的结果 v <- c