运行对交易脚本

时间:2015-10-01 06:19:39

标签: r

我试图运行以下脚本,但我一直收到以下错误: 错误:"""数据"中的意外字符串常量+ Stock1" +。l""

到目前为止,这是我的剧本:

Stock1 <- "PEP"
Stock2 <- "KO"
start.date <- "2014-01-01"
end.date <- Sys.Date()
Quote1 <- paste("http://ichart.finance.yahoo.com/table.csv?s=",
 Stock1,
 "&a=", substr(start.date,6,7),
 "&b=", substr(start.date, 9, 10),
 "&c=", substr(start.date, 1,4),
 "&d=", substr(end.date,6,7),
 "&e=", substr(end.date, 9, 10),
 "&f=", substr(end.date, 1,4),
 "&g=d&ignore=.csv", sep="")
Quote2 <- paste("http://ichart.finance.yahoo.com/table.csv?s=",
 Stock2,
 "&a=", substr(start.date,6,7),
 "&b=", substr(start.date, 9, 10),
 "&c=", substr(start.date, 1,4),
 "&d=", substr(end.date,6,7),
 "&e=", substr(end.date, 9, 10),
 "&f=", substr(end.date, 1,4),
 "&g=d&ignore=.csv", sep="")
"Data" + Stock1 "+.l" <- read.csv(Quote1, as.is=TRUE)
"Data" + Stock2 "+ .l" <- read.csv(Quote2, as.is=TRUE)
"X2=data" + Stock2 "+ ".l[order(data" + Stock2 + ".l$Date"),];Y2="data" + Stock1 "+ .l[order(data" + Stock1 + ".l$Date"),]

par(mfrow=c(1,1),fg = gray(0.7), bty="7")
plot(X2$Close,ylim=c(0,max(X2$Close)),ylab="Price",type="l")
lines(Y2$Close,col="red");grid()
lines(X2$Close/Y2$Close,col="green")

pairt=X2$Close/Y2$Close
abline(h=mean(pairt)+c(-2:2)*sd(pairt),col=c("black","purple"))
abline(h=mean(pairt),col="red")

所以,我认为字符串的串联有问题,但我不确定真正的问题是什么。此外,概念,总体而言,声音?最后,有没有更好的方法来做到这一点,比如S&amp; P 500代码中的转储,获得大约2年左右的历史回报,让R建议对#,而不是让人类对KO&amp; PEP?

1 个答案:

答案 0 :(得分:1)

我认为代码实际上很奇怪。您定义"Data" + Stock1 "+.l""Data" + Stock2 "+.l"X1X2的方式没有意义(至少对我而言)

定义引号后,我会将代码更改为以下内容:

Data1 <- read.csv(Quote1, as.is=TRUE)
Data2 <- read.csv(Quote2, as.is=TRUE)
X2=Data1[order(Data1$Date),];
Y2=Data2[order(Data2$Date),];

par(mfrow=c(1,1),fg = gray(0.7), bty="7")
plot(X2$Close,ylim=c(0,max(X2$Close)),ylab="Price",type="l")
lines(Y2$Close,col="red");grid()
lines(X2$Close/Y2$Close,col="green")
pairt=X2$Close/Y2$Close
abline(h=mean(pairt)+c(-2:2)*sd(pairt),col=c("black","purple"))
abline(h=mean(pairt),col="red")

会产生以下结果: enter image description here

我希望这会有所帮助

PS对于成对交易,你需​​要一些更复杂的分析而不仅仅是回报比较。例如相关性等。