Probieren Sie die Lambert W x F- Distributionen mit schwerem Schwanz oder die verzerrten Lambert W x F- Distributionen aus (Haftungsausschluss: Ich bin der Autor). In R sind sie im LambertW- Paket implementiert .
Zusammenhängende Posts:
Ein Vorteil gegenüber der Cauchy- oder Student-t-Verteilung mit festen Freiheitsgraden besteht darin, dass die Endparameter aus den Daten geschätzt werden können - so können Sie die Daten entscheiden lassen, welche Momente existieren. Darüber hinaus können Sie mit dem Lambert W x F-Framework Ihre Daten transformieren und Schiefe / schwere Schwänze entfernen. Es ist jedoch wichtig zu beachten, dass OLS keine Normalität von oder erfordert . Für Ihre EDA könnte es sich jedoch lohnen.X.yX
Hier ist ein Beispiel für Lambert W x Gaussian-Schätzungen, die auf die Rendite von Aktienfonds angewendet werden.
library(fEcofin)
ret <- ts(equityFunds[, -1] * 100)
plot(ret)
Die zusammenfassenden Metriken der Renditen sind ähnlich (nicht so extrem) wie in OPs Beitrag.
data_metrics <- function(x) {
c(mean = mean(x), sd = sd(x), min = min(x), max = max(x),
skewness = skewness(x), kurtosis = kurtosis(x))
}
ret.metrics <- t(apply(ret, 2, data_metrics))
ret.metrics
## mean sd min max skewness kurtosis
## EASTEU 0.1300 1.538 -18.42 12.38 -1.855 28.95
## LATAM 0.1206 1.468 -6.06 5.66 -0.434 4.21
## CHINA 0.0864 0.911 -4.71 4.27 -0.322 5.42
## INDIA 0.1515 1.502 -12.72 14.05 -0.505 15.22
## ENERGY 0.0997 1.187 -5.00 5.02 -0.271 4.48
## MINING 0.1315 1.394 -7.72 5.69 -0.692 5.64
## GOLD 0.1098 1.855 -10.14 6.99 -0.350 5.11
## WATER 0.0628 0.748 -5.07 3.72 -0.405 6.08
Die meisten Serien zeigen deutlich nicht normale Eigenschaften (starke Schiefe und / oder große Kurtosis). Lassen Sie uns jede Reihe unter Verwendung einer Lambert W x Gaußschen Verteilung mit schwerem Schwanz (= Tukey's h) unter Verwendung einer Methode des Momentenschätzers ( IGMM
) Gaußschisieren .
library(LambertW)
ret.gauss <- Gaussianize(ret, type = "h", method = "IGMM")
colnames(ret.gauss) <- gsub(".X", "", colnames(ret.gauss))
plot(ts(ret.gauss))
Die Zeitreihendiagramme zeigen viel weniger Schwänze und auch eine stabilere zeitliche Variation (jedoch nicht konstant). Die erneute Berechnung der Metriken für die Gaußschen Zeitreihen ergibt:
ret.gauss.metrics <- t(apply(ret.gauss, 2, data_metrics))
ret.gauss.metrics
## mean sd min max skewness kurtosis
## EASTEU 0.1663 0.962 -3.50 3.46 -0.193 3
## LATAM 0.1371 1.279 -3.91 3.93 -0.253 3
## CHINA 0.0933 0.734 -2.32 2.36 -0.102 3
## INDIA 0.1819 1.002 -3.35 3.78 -0.193 3
## ENERGY 0.1088 1.006 -3.03 3.18 -0.144 3
## MINING 0.1610 1.109 -3.55 3.34 -0.298 3
## GOLD 0.1241 1.537 -5.15 4.48 -0.123 3
## WATER 0.0704 0.607 -2.17 2.02 -0.157 3
Der IGMM
Algorithmus hat genau das erreicht, was er wollte: die Daten so transformieren, dass eine Kurtosis von vorliegt . Interessanterweise weisen alle Zeitreihen jetzt eine negative Schiefe auf, was mit der meisten Literatur zu Finanzzeitreihen übereinstimmt. Es ist wichtig darauf hinzuweisen, dass dies nur am Rande funktioniert, nicht gemeinsam (analog zu ).3Gaussianize()
scale()
Einfache bivariate Regression
Um die Auswirkung der Gaußschen Methode auf OLS zu berücksichtigen, sollten Sie die "EASTEU" -Rendite aus "INDIA" -Renditen vorhersagen und umgekehrt. Obwohl wir die Renditen am selben Tag zwischen und (keine verzögerten Variablen), liefert sie angesichts des Zeitunterschieds von 6 Stunden + zwischen Indien und Europa immer noch einen Wert für eine Börsenprognose. r I N D I A , trEASTEU,trINDIA,t
layout(matrix(1:2, ncol = 2, byrow = TRUE))
plot(ret[, "INDIA"], ret[, "EASTEU"])
grid()
plot(ret.gauss[, "INDIA"], ret.gauss[, "EASTEU"])
grid()
Das linke Streudiagramm der Originalserie zeigt, dass die starken Ausreißer nicht an denselben Tagen, sondern zu unterschiedlichen Zeiten in Indien und Europa auftraten. Ansonsten ist nicht klar, ob die Datenwolke in der Mitte keine Korrelation oder negative / positive Abhängigkeit unterstützt. Da Ausreißer die Varianz- und Korrelationsschätzungen stark beeinflussen, lohnt es sich, die Abhängigkeit bei entfernten schweren Schwänzen zu betrachten (rechtes Streudiagramm). Hier sind die Muster viel klarer und die positive Beziehung zwischen Indien und dem osteuropäischen Markt wird deutlich.
# try these models on your own
mod <- lm(EASTEU ~ INDIA * CHINA, data = ret)
mod.robust <- rlm(EASTEU ~ INDIA, data = ret)
mod.gauss <- lm(EASTEU ~ INDIA, data = ret.gauss)
summary(mod)
summary(mod.robust)
summary(mod.gauss)
Granger-Kausalität
Ein Granger-Kausaltest basierend auf einem -Modell (ich verwende , um den Wocheneffekt des täglichen Handels zu erfassen) für "EASTEU" und "INDIA" lehnt "keine Granger-Kausalität" für beide Richtungen ab.p = 5VAR(5)p=5
library(vars)
mod.vars <- vars::VAR(ret[, c("EASTEU", "INDIA")], p = 5)
causality(mod.vars, "INDIA")$Granger
##
## Granger causality H0: INDIA do not Granger-cause EASTEU
##
## data: VAR object mod.vars
## F-Test = 3, df1 = 5, df2 = 3000, p-value = 0.02
causality(mod.vars, "EASTEU")$Granger
##
## Granger causality H0: EASTEU do not Granger-cause INDIA
##
## data: VAR object mod.vars
## F-Test = 4, df1 = 5, df2 = 3000, p-value = 0.003
Für die Gaußschen Daten ist die Antwort jedoch anders! Hier kann der Test H0 nicht ablehnen, dass "INDIEN kein Granger verursacht EASTEU", aber dennoch ablehnt, dass "EASTEU kein Granger verursacht INDIEN". Die Gaußschen Daten stützen also die Hypothese, dass die europäischen Märkte am nächsten Tag die Märkte in Indien antreiben.
mod.vars.gauss <- vars::VAR(ret.gauss[, c("EASTEU", "INDIA")], p = 5)
causality(mod.vars.gauss, "INDIA")$Granger
##
## Granger causality H0: INDIA do not Granger-cause EASTEU
##
## data: VAR object mod.vars.gauss
## F-Test = 0.8, df1 = 5, df2 = 3000, p-value = 0.5
causality(mod.vars.gauss, "EASTEU")$Granger
##
## Granger causality H0: EASTEU do not Granger-cause INDIA
##
## data: VAR object mod.vars.gauss
## F-Test = 2, df1 = 5, df2 = 3000, p-value = 0.06
Beachten Sie, dass mir nicht klar ist, welche die richtige Antwort ist (falls vorhanden), aber es ist eine interessante Beobachtung. Es ist unnötig zu erwähnen, dass dieser gesamte Kausaltest davon abhängt, dass der das richtige Modell ist - was höchstwahrscheinlich nicht der Fall ist. aber ich denke, es dient gut zur Veranschaulichung.VAR(5)