我正在尝试从以下网站实现以下代码:
library(quantmod)
library(tseries)
library(timeDate)
symbols <- read.csv("sp500.csv", header = F, stringsAsFactors = F)
nrStocks <- length(symbols[,1])
z <- zoo()
for (i in 1:nrStocks) {
cat("Downloading ", i, " out of ", nrStocks , "\n")
x <- get.hist.quote(instrument = symbols[i,], start = dateStart,
quote = "AdjClose", retclass = "zoo", quiet = T)
z <- merge(z, x)
}
但我收到错误消息:
Error in download.file(url, destfile, method = method, quiet = quiet) :
cannot open URL 'http://chart.yahoo.com/table.csv?s=MFE&a=0&b=01&c=2008&d=8&e=12&f=2011&g=d&q=q&y=0&z=MFE&x=.csv'
In addition: There were 50 or more warnings (use warnings() to see the first 50)
In merge.zoo(z, x) : Index vectors are of different classes: numeric Date
有什么想法吗?
答案 0 :(得分:4)
以下是可能出现的问题列表:
答案 1 :(得分:2)
Wikipedia允许您为sp500.csv制作更准确的列表
雅虎日期存在问题
一个。当美国市场开放时,这将有效。
湾当美国市场关闭时,这可能不会起作用
get.hist.quote的完整参考可以在此处获取 http://rgm2.lab.nig.ac.jp/RGM2/func.php?rd_id=tseries:get.hist.quote, 它也没给我任何帮助, 之后我查看了市场开放时间以外的数据: 第一个下载的工具是MMM,前几行是在这里(当市场关闭时):
:Date,Open,High,Low,Close,Volume,Adj Close
2012-07-16,88.10,88.55,87.78,88.10,2120700,88.10
2012-07-16,88.12,88.65,87.77,88.10,2848100,88.10
2012-07-13,86.32,87.83,86.32,87.59,2599300,87.59
前两行似乎相同。 对于另一种工具,在市场开放的同时(欧洲工具), 这不是问题。
x <- get.hist.quote(instrument = "^GDAXI", start = dateStart,
quote = "AdjClose", retclass = "zoo", quiet = T)
对于DAX,数据低于(现在是11H45 CET):
Date,Open,High,Low,Close,Volume,Adj Close
2012-07-17,6583.77,6610.26,6583.57,6593.82,000,6565.72
2012-07-16,6550.95,6577.06,6511.18,6565.72,20388100,6565.72
查看zoo.pdf手册(日期:2012年2月14日):
他们建议通过添加一行解决此问题:
x <- aggregate(x, identity, mean) # for an average
或
x <- aggregate(x, identity, tail) # for the last observation
尚未完成我的测试,但到目前为止这似乎没有警告和错误
答案 2 :(得分:0)
根据维基百科信息制作准确的S&amp; P500符号列表的代码:
library(XML)
library(RCurl)
url <- "https://en.wikipedia.org/wiki/List_of_S%26P_500_companies"
sp500html <- getURL(url)
sp500 <- readHTMLTable(sp500html, stringsAsFactors = F)[[1]][,1]