Maschinelles Lernen im Handel: Theorie, Modelle, Praxis und Algo-Trading - Seite 295

 

Die Frage der Korrelation von Variablen wurde bereits mehrfach diskutiert.

Natürlich ist die Korrelation das Fragwürdigste, sehr schnell wird die Korrelation mit den Saturnringen, dem Kaffeesatz... sichtbar.

Irgendwie ist das in Vergessenheit geraten:

DerGranger-Kausalitätstest ist ein Verfahren zur Prüfung der Kausalität ("Granger-Kausalität") zwischenZeitreihen. Die Idee des Tests ist, dass die Werte (Änderungen) der Zeitreihe{\displaystyle x_{t}}, die Änderungen in der Zeitreihe{\displaystyle y_{t}} verursachen, den Änderungen in dieser Zeitreihe vorausgehen und darüber hinaus signifikant zu ihren vorhergesagten Werten beitragen müssen. Wenn jede Variable einen bedeutenden Beitrag zur Vorhersage der anderen leistet, kann es eine andere Variable geben, die beide beeinflusst.

DerGranger-Testtestet konsequent zwei Nullhypothesen: "x ist nicht die Ursache von y nach Granger" und "y ist nicht die Ursache von x nach Granger". Um diese Hypothesen zu testen, werden zwei Regressionen konstruiert: In jeder Regression ist die abhängige Variable eine der auf Kausalität getesteten Variablen, und die Regressoren sind die Verzögerungen der beiden Variablen (es handelt sich also umeine Vektorautoregression).

Und hier ist der Code für diesen Fall von hier

# READ QUARTERLY DATA FROM CSV
library(zoo)
ts1 <- read.zoo('Documents/data/macros.csv', header = T, sep = ",", 
FUN = as.yearqtr)
 
# CONVERT THE DATA TO STATIONARY TIME SERIES
ts1$hpi_rate <- log(ts1$hpi / lag(ts1$hpi))
ts1$unemp_rate <- log(ts1$unemp / lag(ts1$unemp))
ts2 <- ts1[1:nrow(ts1) - 1, c(3, 4)]
 
# METHOD 1: LMTEST PACKAGE
library(lmtest)
grangertest(unemp_rate ~ hpi_rate, order = 1, data = ts2)
# Granger causality test
#
# Model 1: unemp_rate ~ Lags(unemp_rate, 1:1) + Lags(hpi_rate, 1:1)
# Model 2: unemp_rate ~ Lags(unemp_rate, 1:1)
#   Res.Df Df      F  Pr(>F)
# 1     55
# 2     56 -1 4.5419 0.03756 *
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
 
# METHOD 2: VARS PACKAGE
library(vars)
var <- VAR(ts2, p = 1, type = "const")
causality(var, cause = "hpi_rate")$Granger
#         Granger causality H0: hpi_rate do not Granger-cause unemp_rate
#
# data:  VAR object var
# F-Test = 4.5419, df1 = 1, df2 = 110, p-value = 0.0353
 
# AUTOMATICALLY SEARCH FOR THE MOST SIGNIFICANT RESULT
for (i in 1:4)
  {
  cat("LAG =", i)
  print(causality(VAR(ts2, p = i, type = "const"), cause = "hpi_rate")$Granger)
Английский язык — Википедия
Английский язык — Википедия
  • ru.wikipedia.org
Самоназвание: Регулирующая организация: Общее число говорящих: Статус: Классификация Категория: Письменность: Языковые коды ГОСТ 7.75–97: ISO 639-1: ISO 639-2: ISO 639-3: Распространение английского языка[3]: Английский язык возник в раннем Средневековье как язык части германских племён, вторгшихся в Британию. Он стал родным для...
 
SanSanych Fomenko:

Natürlich ist die Korrelation das Fragwürdigste, sehr schnell taucht die Korrelation mit den Saturnringen, dem Kaffeesatz... auf.

Irgendwie ist das in Vergessenheit geraten:

Niemand hat etwas vergessen....

Dann fragt google correlate, wie Sie die Korrelation messen wollen. Googeln wird nicht danach fragen, und das wird es auch nicht. Der Dienst ist 6 Jahre alt, und wenn sie es tun wollten, hätten sie es schon getan ...

Und noch etwas...

Google hat Milliarden von BPs in seiner Datenbank, es wird immer hundert oder so BPs geben, die zufällig nahe beieinander liegen, einfach weil die Datenbank riesig ist, und es spielt keine Rolle, wie sie die Nähe messen, einfache Korrelation oder etwas Kompliziertes und Kompliziertes.

Die Frage ist, wie man das Zufällige vom Nicht-Zufälligen unterscheiden kann.

 
mytarmailS:

Die Frage ist, wie man das Zufällige vom Nicht-Zufälligen trennen kann.

Wir könnten

1) die Serie eura in zwei Teile "1" und "2" zu unterteilen

2) Geben Sie die Zeile "1" in Google ein, und es werden alle eng verwandten Zeilen gefunden.

3) Merken Sie sich die Namen aller nahen Reihen.

4) Gib die Zeile "2" in Google ein und es werden alle Zeilen in der Nähe davon gefunden.

5) Merke dir die Namen aller nahen Reihen

6) Vergleiche die Namen der Zeilen aus den Punkten 3) und 5) und suche nach einer solchen Zeile, die sowohl in 3) als auch in 5) vorkommt

Auf diese Weise finden wir Reihen, die nicht zufällig mit dem Euro korrelieren - dies ist eine Art Kreuzvalidierung in ihrer primitivsten Form.

Aber wie man an diese Namen kommt, weiß ich nicht, wahrscheinlich muss man die Seite analysieren

 
mytarmailS:

Niemand hat etwas vergessen....

Wenn Google Correlate Sie fragt, mit welcher Methode Sie die Verbindung messen möchten, können Sie sich an den entsprechenden Stellen melden. Der Dienst ist 6 Jahre alt, und wenn sie es wollten, hätten sie es bereits getan.

Und noch etwas...

Google hat Milliarden von BPs in seiner Datenbank, es wird immer hundert oder so BPs geben, die zufällig nahe beieinander liegen, einfach weil die Datenbank riesig ist, und es spielt keine Rolle, wie sie die Nähe messen, einfache Korrelation oder etwas Kompliziertes und Kompliziertes.

Die Frage ist, wie man das Zufällige vom Nicht-Zufälligen unterscheiden kann.


Das heißt, man muss den ganzen Müll, den Google gesammelt hat, durch Tests aussieben - das meinte ich.
 
SanSanych Fomenko:
Also durchforsten Sie den Test mit all dem Müll, den Google gesammelt hat - das meine ich.

Ich bin mir nicht sicher, wie man das macht, aber ich bin mir auch nicht sicher, wie man es macht).

Sie können hundert Serien googeln, die perfekt mit dem Euro korrelieren, egal wie ausgeklügelt der Test ist, sie zeigen alle eine ausgezeichnete Korrelation, so dass er in dieser Situation nutzlos ist

 
mytarmailS:

Egal, welchen Test man anwendet, alle zeigen eine perfekte Verbindung.

Daran habe ich meine Zweifel. Eine hohe Korrelation von Trends bedeutet lediglich, dass sie im Allgemeinen in etwa gleich schnell steigen und fallen. Zunächst einmal wäre es besser, nicht nach Trends, sondern nach Korrelationen zu suchen. Man kann zum Beispiel ähnliche Trends in einer csv-Datei speichern, dann zeigt Google Lags an und berechnet die Korrelation neu, das ist viel objektiver.

Und die Korrelation garantiert keineswegs, dass die eine Variable die andere vorhersagen kann. Im Allgemeinen ist die Auswahl von Prädiktoren für die Vorhersage nach dem Prinzip der hohen Korrelation unglücklich. Ich habe noch nicht ausprobiert, was SanSanych vorgeschlagen hat, aber es scheint zuverlässiger zu sein.

 
mytarmailS:

Es ist möglich

1) Teilen Sie die Eura-Reihe in zwei Teile "1" und "2".

2) Geben Sie Zeile "1" in Google ein, und es werden alle eng verwandten Zeilen gefunden.

3) Merke dir die Namen aller nahen Reihen

4) Gib die Zeile "2" in Google ein und es werden alle Zeilen in der Nähe gefunden.

5) Merke dir die Namen aller nahen Reihen

6) vergleiche die Namen der Zeilen aus Punkt 3) und 5) und suchen Sie eine solche Reihe, die sowohl in 3) als auch in 5) vorkommt

So finden wir Reihen, die nicht zufällig mit dem Euro korrelieren; dies ist eine Art Kreuzvalidierung in ihrer primitivsten Form.

Aber ich weiß nicht, wie man diese Namen bekommt, wir sollten wahrscheinlich die Seite analysieren


Das ist ein sogenannter PSE-Test.

Prüft eigentlich die Heterogenität der Stichprobe im Rahmen eines Regressionsmodells.

 
Dr. Trader:

Das bezweifle ich. Eine hohe Korrelation der Trends bedeutet nur, dass sie im Allgemeinen in gleicher Weise zu- und abnehmen. Für den Anfang wäre es eine gute Idee, nicht nach der Korrelation von Trends, sondern von Steigerungen zu suchen. Sie können zum Beispiel ähnliche Trends in einer CSV-Datei speichern, dann selbst Lags finden und die Korrelation neu berechnen, das wird viel objektiver sein.

Ja, dem stimme ich zu, aber Google gibt uns nicht seine gesamte Datenbank, sondern nur das, was "nach Trend" korreliert, und das zu nehmen, was nach Trend korreliert, und das zu verwenden, um Inkremente zu machen und die Korrelation zu messen, ist wahrscheinlich auch nicht objektiv ... :) Wir müssen uns die gesamte Datenbank ansehen

Dimitri:


Es handelt sich um einen PSE-Test.

Prüft eigentlich die Heterogenität der Stichprobe im Rahmen eines Regressionsmodells.

Na ja... Dieses CHOU kann angewendet werden, aber wir müssen die Zeilen aus Google herausholen, oder zumindest ihre Namen
 

Ich habe diese Broschüre http://www.mirkin.ru/_docs/dissert065.pdf gelesenund möchte NeuroShell Day Trader Pro verwenden.

 
Getting Started With TensorFlow  |  TensorFlow
Getting Started With TensorFlow  |  TensorFlow
  • www.tensorflow.org
This guide gets you started programming in TensorFlow. Before using this guide, install TensorFlow. To get the most out of this guide, you should know the following: How to program in Python. At least a little bit about arrays. Ideally, something about machine learning. However, if you know little or nothing about machine learning, then this...
Grund der Beschwerde: