Ich möchte die Daten aus einer Zeitreihe extrahieren, die mit getSymbols erhalten wurde, aber wenn ich die Funktion index / index.xts verwende, scheinen die zurückgegebenen Daten einen Tag früher zu erscheinen. Ich verstehe nicht, warum dieses Verhalten im folgenden Code auftritt.
Die beabsichtigte Verhaltensweise besteht jedoch darin, eine Liste von Date-Objekten zu erhalten, die mit der in der Original-Zeitreihe übereinstimmen.
Hier ist der Code, beachten Sie, dass das letzte Datum der Zeitreihe SPY der 24. August 2012 ist, aber der letzte Wert des index(SPY)-Aufrufs der 23. August 2012 ist:
getSymbols("SPY")
tail(SPY)
SPY.Open SPY.High SPY.Low SPY.Close SPY.Volume SPY.Adjusted
2012-08-17 142,23 142,30 141,86 142,18 90813700 142,18
2012-08-20 141,98 142,22 141,59 142,19 78255700 142,19
2012-08-21 142,54 143,09 141,45 141,76 105581100 141,76
2012-08-22 141,40 142,05 141,07 141,82 132999200 141,82
2012-08-23 141,47 141,48 140,44 140,66 111406800 140,66
2012-08-24 140,31 141,83 140,22 141,51 99431500 141,51
tail(index(SPY))
[1] "2012-08-16" "2012-08-19" "2012-08-20" "2012-08-21" "2012-08-22" "2012-08-23"
tail(index.xts(SPY))
[1] "2012-08-16" "2012-08-19" "2012-08-20" "2012-08-21" "2012-08-22" "2012-08-23"
Vielen Dank an alle, die auf meinen Beitrag geantwortet haben.
Zusätzliche Informationen zur Sitzung
>sessionInfo()
R version 2.15.1 (2012-06-22)
Plattform: i386-pc-mingw32/i386 (32-Bit)
lokale Einstellungen:
[1] LC_COLLATE=Englisch_Vereinigte Staaten.1252 LC_CTYPE=Englisch_Vereinigte Staaten.1252
[3] LC_MONETARY=Englisch_Vereinigte Staaten.1252 LC_NUMERIC=C
[5] LC_TIME=Englisch_Vereinigte Staaten.1252
angehängte Basispakete:
[1] stats graphics grDevices utils datasets methods base
andere angehängte Pakete:
[1] rbenchmark_0.3.1 fGarch_2110.80.1
[3] fBasics_2160.81 MASS_7.3-20
[5] timeSeries_2160.95 timeDate_2160.95
[7] tseries_0.10-29 quadprog_1.5-4
[9] PerformanceAnalytics_1.0.4.4 quantstrat_0.6.8
[11] blotter_0.8.10 FinancialInstrument_0.15.2
[13] quantmod_0.3-17 TTR_0.21-1
[15] Defaults_1.1-1 xts_0.8-6
[17] zoo_1.7-7 lubridate_1.1.0
[19] stringr_0.6.1 plyr_1.7.1
[21] XML_3.9-4.1
geladen über einen Namensraum (und nicht angehängt):
[1] colorspace_1.1-1 dichromat_1.2-4 digest_0.5.2 ggplot2_0.9.1
[5] grid_2.15.1 labeling_0.2 lattice_0.20-6 memoise_0.1
[9] munsell_0.3 proto_0.3-9.2 RColorBrewer_1.0-5 reshape2_1.2.1
[13] scales_0.2.1 stabledist_0.6-4 tools_2.15.1
> getDefaults(getSymbols)
NULL
> getSymbolLookup("SPY")
NULL
> showSymbols()
SPY GSPC IBM XLF XLP XLE XLY XLV XLI
"yahoo" "yahoo" "yahoo" "yahoo" "yahoo" "yahoo" "yahoo" "yahoo" "yahoo"
XLB XLK XLU IEF AAPL DIA MSFT IWM EEM
"yahoo" "yahoo" "yahoo" "yahoo" "yahoo" "yahoo" "yahoo" "yahoo" "yahoo"
EFA GLD AGG HYG FXE FXY VXX VXZ HIG
"yahoo" "yahoo" "yahoo" "yahoo" "yahoo" "yahoo" "yahoo" "yahoo" "yahoo"
VTI VEU VNQ DBC XAU gold Gold STOXX50E GOLD
"yahoo" "yahoo" "yahoo" "yahoo" "oanda" "oanda" "oanda" "yahoo" "yahoo"
VIX DEXUSEU EURUSD DEXKOUS EUR=X INR=X
"yahoo" "FRED" "oanda" "FRED" "yahoo" "yahoo"
Beachten Sie auch, dass ich einige R-Code von dem Systematic Investor Blog, systematicinvestor.wordpress.com, installiert habe, indem ich die Befehle verwendet habe
setInternet2(TRUE)
con = gzcon(url('systematicportfolio.com/sit.gz', 'rb'))
source(con)
close(con)
LÖSUNG ZUZÜGLICH EINER WEITEREN FRAGE
Der Benutzer GSee hat die Antwort gefunden (Danke!), indem er darauf hinweist, dass in meiner Sitzung index.xts überschrieben wurde. Eine Lösung besteht darin, xts:::index.xts(SPY) aufzurufen, anstatt einfach index.xts(SPY), um die Maskierung zu überschreiben. Tatsächlich ergibt der Befehl
> tail(xts:::index.xts(SPY))
die richtige Antwort zurück
[1] "2012-08-17" "2012-08-20" "2012-08-21" "2012-08-22" "2012-08-23" "2012-08-24"
Die Antwort hat nun eine weitere Frage aufgeworfen: Angesichts des Codes für die "Maskierung/Überschreibung" der Funktion index.xts (die die Daten falsch zurückgibt, indem sie die Daten einen Tag früher verschiebt):
> index.xts
function (
x # XTS-Objekt
)
{
temp = attr(x, 'index')
class(temp)='POSIXct'
if( attr(x, '.indexCLASS')[1] == 'Date')
temp = as.Date(temp)
return(temp)
}
Warum gibt diese Funktion die falschen Ergebnisse zurück, wenn sie als tail(index.xts(SPY)) aufgerufen wird? Was ist falsch an diesem Code der index.xts-Funktion?
Vergleichen Sie die beiden Ausgaben (die erste ist falsch, während die zweite die richtige Antwort liefert):
tail(index.xts(SPY))
[1] "2012-08-16" "2012-08-19" "2012-08-20" "2012-08-21" "2012-08-22" "2012-08-23"
tail(xts:::index.xts(SPY))
[1] "2012-08-17" "2012-08-20" "2012-08-21" "2012-08-22" "2012-08-23" "2012-08-24"
Nochmals vielen Dank für Ihre Zeit und Aufmerksamkeit.