Ich versuche, die Volatilität einiger Aktien mit verschiedenen Modellen (z. B. AR, HAR etc.) zu prognostizieren. Jetzt bin ich an einem Punkt, wo ich nicht weiß, wie ich vorgehen soll. Mein Problem ist das Folgende. Ich versuche die Volatilität mit einem ARFIMA (2, d, 0) -Modell und einem externen Regressor zu prognostizieren. Ich benutze das Paket rugarch und den Befehl arfimaroll. Hier ist der Code für die ARFIMA-Spezifikation.arfimaroll und externe Regressor
specGT<- arfimaspec(mean.model = list(armaOrder = c(2, 0),arfima=T, external.regressors = TGT))
TGT ist der externe Regressor. Es ist eine Matrix mit 1 Spalte und 1359 Zeilen (die gleiche Anzahl von Zeilen wie mein Datensatz). Dieser Code funktioniert (zumindest keine Fehler). Nun möchte ich mit ARFIMAROLL die Volatilität vorhersagen. Hier ist der Code
forecastarfimaGT<-arfimaroll(specGT,lagRV_d,n.ahead=1,n.start=1014,refit.every=1,refit.window="recursive",solver="hybrid")
Dies gibt auch keine Fehler. Aber wenn ich die Prognosen aus dem Modell mit dem externen Regressor- mit denen aus dem gleichen ARFIMA Modell ohne externen Regressor- vergleiche es gibt mir die gleichen Werte
forecastarfimaGT==forecastarfimarealized
Ausgang bei jedem der 345 Vorhersage Punkte TRUE ist.
Einige Anmerkungen zur Vorhersage. refit.window = "recursive" wird verwendet, um eine erweiterte Fensterprognose durchzuführen, die anderen Argumente sollten nicht wichtig sein (wie refit.every usw.).
Jetzt ist meine Frage, was ich hier falsch mache. Kann mir jemand einen Hinweis auf meinen Fehler geben?
Grüße
EDIT: Um es hier ein fiktives Beispiel deutlicher zu machen. Zunächst läßt eine Zeitreihe machen mit den Daten
a<-abs(rnorm(600,0.1,0.1)
Dann einen Vektor des externen Regressor- machen und es in eine Matrix-Transformation
b<-abs(rnorm(600,1,1))
b1<-as.matrix(b,nrow=600,ncol=1)
nun die arfima Prognose ohne externen Regressor-
spec<- arfimaspec(mean.model = list(armaOrder = c(2, 0),arfima=T))
forecastarfima<-arfimaroll(spec,a,n.ahead=1,n.start=500,refit.every=1,refit.window="recursive",solver="hybrid"
forecastarfimadf<-as.data.frame(forecastarfima)
forecastarfimarealized<-forecastarfimadf[,-c(1:5)]
Die Prognose mit dem Externen Regressor
specGT<- arfimaspec(mean.model = list(armaOrder = c(2, 0),arfima=T, external.regressors = b1))
forecastarfimaGT<-arfimaroll(specGT,a,n.ahead=1,n.start=500,refit.every=1,refit.window="recursive",solver="hybrid"
forecastarfimaGTdf<-as.data.frame(forecastarfimaGT)
forecastarfimarealizedGT<-forecastarfimaGTdf[,-c(1:5)]
Jetzt
lässt die beiden Ergebnisse
forecastarfimarealized==forecastarfimarealizedGT
[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[37] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[73] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
vergleichen Wie Sie Stand Vektoren identisch sind sehen. Dies sollte nicht der Fall sein. Auch wenn der externe Regressor keinen Einfluss hat, sollten die Vektoren nicht exakt gleich sein. Ich bin gerade sehr verwirrt. Benutze ich die richtige Methode? Kannst du mir bei meinem Problem helfen?