/ / Quantmod, błąd getSymbols podczas próby replikacji odpowiedzi - r, quantmod

Quantmod, błąd getSymbols próbujący replikować odpowiedź - r, quantmod

Właśnie pobrałem pakiet Quantmod i bawiłem się z getSymbols. Chcę mieć możliwość uzyskania danych dla wielu zapasów, jak w tym pytaniu: getSymbols i używając lapply, Cl i scal, aby wyodrębnić ceny zamknięcia.

Niestety, kiedy próbuję powielić odpowiedź:

tickers <- c("SPY","DIA","IWM","SMH","OIH","XLY",
"XLP","XLE","XLI","XLB","XLK","XLU")
getSymbols(tickers, from="2001-03-01", to="2011-03-11")

Pojawia się następujący komunikat o błędzie:

Error in download.file(paste(yahoo.URL, "s=", Symbols.name, "&a=", from.m,  :
cannot open URL
"http://chart.yahoo.com/table.csv?s=SPY&a=2&b=01&c=2001&d=2&e=11&f=2011&g=d&q=q&y=0&z=SPY&x=.csv"
In addition: Warning message:
In download.file(paste(yahoo.URL, "s=", Symbols.name, "&a=", from.m,
: cannot open: HTTP status was "0 (null)"

Oto moja sessionInfo ()

R version 3.0.2 (2013-09-25)
Platform: x86_64-apple-darwin10.8.0 (64-bit)

locale:
[1] en_US.utf-8/en_US.utf-8/en_US.utf-8/C/en_US.utf-8/en_US.utf-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

other attached packages:
[1] quantmod_0.4-0 TTR_0.22-0     xts_0.9-7      zoo_1.7-10     Defaults_1.1-1

loaded via a namespace (and not attached):
[1] grid_3.0.2      lattice_0.20-23 tools_3.0.2

Odpowiedzi:

4 dla odpowiedzi № 1

EDYTOWAĆ: W odpowiedzi na komentarz OP:

Więc wydaje się, że najważniejsze są te strony, którezapewniają bezpłatne pobieranie danych historycznych, co najmniej dziwaczne. Nie muszą działać dla wszystkich prawidłowych symboli, a czasem stają się niedostępne bez wyraźnego powodu. ichart.yahoo.com/table.csv pracował dla mnie 24 godziny temu, ale nie działa(dla mnie) w tej chwili. Może to być spowodowane tym, że Yahoo nałożyło na moje IP 24-godzinną blokadę, co zrobią, jeśli wykryją aktywność interpretowaną jako atak DDOS. A może z innego powodu ...

Poniższy zaktualizowany kod, który wysyła zapytanie do Google, działa (ponownie w tej chwili) dla wszystkich elementów oprócz DJIA. Zauważ, że odniesiesz większy sukces, jeśli określisz giełdę i symbol (EXCHANGE:SYMBOL). Nie mogłem pobrać SMH bez wymiany. Wreszcie, jeśli masz problemy, usuń komentarz z instrukcji drukowania i wklej adres URL do przeglądarki, aby zobaczyć, co się stanie.

tickers <- c("SPY","DJIA","IWM","NYSEARCA:SMH","OIH","XLY",
"XLP","XLE","XLI","XLB","XLK","XLU")

g <- function(x,from,to,output="csv") {
uri      <- "http://www.google.com/finance/historical"
q.symbol <- paste("q",x,sep="=")
q.from   <- paste("startdate",from,sep="=")
q.to     <- paste("enddate",to,sep="=")
q.output <- paste("output",output,sep="=")
query    <- paste(q.symbol,q.output,q.from,q.to,sep="&")
url      <- paste(uri,query,sep="?")
# print(url)
try(assign(x,read.csv(url),envir=.GlobalEnv))
}
lapply(tickers,g,from="2001-03-01",to="2011-03-11",output="csv")

Możesz pobrać DJI z St. Louis Fed, który jest bardzo niezawodny. Niestety, otrzymujesz wszystko (od 1896 r.) I jest to seria czasowa.

getSymbols("DJIA",src="FRED")

Oryginalna odpowiedź:

To działało dla mnie dla wszystkich oprócz SMH i OIH.

tickers <- c("SPY","DJIA","IWM","SMH","OIH","XLY",
"XLP","XLE","XLI","XLB","XLK","XLU")

f <- function(x) {
uri    <- "http://ichart.yahoo.com/table.csv"
symbol <- paste("s",x,sep="=")
from   <- "a=2&b=1&c=2001"
to     <- "d=2&e=11&f=2011"
period <- "g=d"
ignore <- "ignore=.csv"
query  <- paste(symbol,from,to,period,ignore,sep="&")
url    <- paste(uri,query,sep="?")
try(assign(x,read.csv(url),envir=.GlobalEnv))
}
lapply(tickers,f)

Główna różnica między tym a getSymbols(...) jest to, że używa ichart.yahoo.com (jak udokumentowano tutaj), natomiast getSymbols(...) używa chart.yahoo.com. Ten pierwszy wydaje się być znacznie bardziej niezawodny. Z mojego doświadczenia wynika, że ​​korzystam getSymbols(...) z Yahoo to ogromny ból głowy.

Jeśli sugestia @ user2492310, użyć src="google" działa dla ciebie, to oczywiście jest to droga. Nie działało to dla mnie.

Jeszcze jedna uwaga: SMH i OIH nie istniały w 2001 roku. Wszystkie pozostałe cofają się do co najmniej 2000. Być może więc ichart.yahoo.com (i chart.yahoo.com) zgłaszają błąd, jeśli podasz zakres dat poza zakresem operacyjnym symbolu.