Ich habe versucht, die Impulsstrategie von rbresearch mit S & P 500 Unternehmen zu replizieren. Es stellte sich jedoch heraus, dass getSymbols
nicht in der Lage war Preisdaten für alle Tickern zu greifen, und ich bekam nur 300 Aktien um unter Verwendung von:R - Xts Objekt findet Zeichenfolge ist nicht in einem einheitlichen Standardformat
getSymbols(symbols, src='yahoo', index.class=c("POSIXt","POSIXct"), from='2000-01-01', to = '2015-12-31')
ich diese thread über dieses Thema zu diskutieren gefunden und es könnte von der Quelle kommen " chart.yahoo.com ". Daher habe ich die von jlhoward vorgeschlagene Methode übernommen und es schien perfekt ohne Warnungen zu funktionieren.
UPDATE: Nach Überprüfung der quantmod
Paket, fand ich es auch Daten von ichart.yahoo.com jetzt ergreift.
Allerdings, wenn es die monatliche Nähe der Berechnung kommt, lesen ein Fehler wie,
Error in try.xts(x) :
Error in as.POSIXlt.character(x, tz, ...) : character string is not in a standard unambiguous format
Called from: try.xts(x)
Hier sind meine Fragen und was ich nicht verstehe:
1) Gibt es eine Möglichkeit, um getSymbols zu "ichart.yahoo.com" zu leiten, was verlässlichere Zitate liefert?
2) Ich habe alle Symbole in xts-Objekte umgewandelt, also warum der Fehler von try.xts aufgerufen wurde?
3) Ich nehme an, das Problem ist mit den Daten, die nicht im Format ISO 8601 sind. Aber ich habe keine Möglichkeit gefunden, die Daten in POSIXct zu konvertieren, da die Daten nur rund um Tage sind.
4) Alle Kommentare zu den Codes werden sehr geschätzt.
Ich beigefügt mit den Codes und die sp500components.csv konnte von here heruntergeladen werden.
Vielen Dank für Ihre Zeit und freundliche Hilfe! Alles Gute.
library(quantstrat)
library(FinancialInstrument)
library(TTR)
symbols <- read.table("sp500components.csv", header = FALSE, sep = ",")$V1
symbols <- as.character(symbols)
currency("USD")
stock(symbols, currency="USD",multiplier=1)
MonthlyAd <- function(x){
# Converts daily data to monthly and returns only the monthly close
# Note: only used with Yahoo Finance data so far
# Thanks to Joshua Ulrich for the Monthly Ad function
#
# args:
# x = daily price data from Yahoo Finance
#
# Returns:
# xts object with the monthly adjusted close prices
sym <- sub("\\..*$", "", names(x)[1])
Ad(to.monthly(x, indexAt = 'lastof', drop.time = TRUE, name = sym))
}
symEnv <- new.env()
f <- function(x) {
uri <- "http://ichart.yahoo.com/table.csv"
symbol <- paste("s",x,sep="=")
from <- "a=1&b=1&c=2000"
to <- "d=31&e=12&f=2015"
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=symEnv))
}
lapply(symbols,f)
ts <- function(x) {
x["Date"] <- as.Date.character(x[["Date"]], "%Y-%m-%d")
x <- xts(x[,-1], order.by = x$Date)
colnames(x) <- gsub("Adj", "Adjusted", colnames(x))
assign(symbol, x)
}
eapply(symEnv, ts)
symbols.close <- do.call(merge, eapply(symEnv, MonthlyAd))