L'apprendimento automatico nel trading: teoria, modelli, pratica e algo-trading - pagina 295

 

La questione della correlazione delle variabili è stata discussa molte volte.

Naturalmente, la correlazione è la più dubbia, molto rapidamente si comincia a vedere la correlazione con gli anelli di Saturno, i fondi di caffè...

In qualche modo questo è stato dimenticato:

Iltest dicausalità di Granger è una procedura per testare la causalità ("Granger causality") traserie temporali. L'idea del test è che i valori (cambiamenti) della serie temporale{displaystyle x_{t}}, che causano cambiamenti nella serie temporale{displaystyle y_{t}}, devono precedere i cambiamenti in questa serie temporale e inoltre devono contribuire significativamente ai suoi valori previsti. Se ogni variabile contribuisce significativamente alla previsione dell'altra, ci può essere qualche altra variabile che influenza entrambe.

Il test diGrangertesta coerentemente due ipotesi nulle:"x non è la causa di y secondo Granger" e "y non è la causa di x secondo Granger". Per testare queste ipotesi, vengono costruite due regressioni: in ogni regressione, la variabile dipendente è una delle variabili testate per la causalità, e i regressori sono i ritardi di entrambe le variabili (di fatto, è un'autoregressione vettoriale).

Ed ecco il codice per questo caso da qui

# 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:

Naturalmente, la correlazione è la più dubbia, molto rapidamente la correlazione con gli anelli di Saturno, i fondi di caffè... comincia ad emergere.

In qualche modo questo è stato dimenticato:

Nessuno ha dimenticato niente....

Questo è il momento in cui google correlate chiederà: come vuoi misurare la correlazione? Google non lo chiederà ora, e non lo farà. Il servizio ha 6 anni, e se avessero voluto farlo, l'avrebbero già fatto...

E un'altra cosa...

Google ha miliardi di BP nel suo database, ci saranno sempre un centinaio di BP che sono vicini per caso, solo perché il database è enorme e non importa come misurano la vicinanza, semplice correlazione o qualcosa di complicato e complicato.

La questione è come separare il casuale dal non casuale.

 
mytarmailS:

La questione è come setacciare il casuale dal non casuale

Potremmo

1) dividere la serie eura in due parti "1" e "2"

2) inserire la riga "1" in Google e troverà tutte le righe vicine.

3) memorizzare i nomi di tutte le file vicine.

4) butta la fila "2" in google way e troverà tutte le file vicine ad essa

5) memorizzare i nomi di tutte le file vicine

6) confrontare i nomi delle righe dei punti 3) e 5) e cercare una riga che sia presente sia in 3) che in 5)

Così troviamo serie che non si correlano accidentalmente con gli euro - questa è una sorta di convalida incrociata nella sua forma più primitiva.

Ma come ottenere questi nomi non lo so, probabilmente bisogna analizzare la pagina

 
mytarmailS:

Nessuno ha dimenticato niente....

Quando google correlate vi chiederà quale metodo volete misurare la connessione? Google non lo chiederà ora, e non lo farà. Il servizio ha 6 anni, e se avessero voluto farlo, lo avrebbero già fatto.

E un'altra cosa...

Google ha miliardi di BP nel suo database, ci saranno sempre un centinaio di BP che sono vicini per caso, solo perché il database è enorme e non importa come misurano la vicinanza, semplice correlazione o qualcosa di complicato e complicato.

La questione è come separare il casuale dal non casuale


Quindi setacciare per test da tutta la spazzatura che google ha raccolto - questo è ciò che intendevo.
 
SanSanych Fomenko:
Quindi setacciate la prova di tutta la spazzatura che google ha raccolto - questo è quello che intendo.

Non sono sicuro di come farlo, ma non sono sicuro di come farlo).

Mi sembra che il combustibile fossile sia l'unico modo per liberarsene... Se cercate su Google vi mostrerà un centinaio di serie che si correlano perfettamente con l'euro, non importa quanto sia sofisticato il test, tutti mostrano la perfetta correlazione...

 
mytarmailS:

Non importa quanto intelligente sia il test che si applica, tutti mostrano una connessione perfetta.

Ho i miei dubbi al riguardo. Un'alta correlazione delle tendenze significa solo che generalmente salgono e scendono più o meno allo stesso ritmo. Prima di tutto sarebbe meglio cercare la correlazione non di tendenze ma di aumenti, per esempio si possono salvare tendenze simili in csv, poi google mostrerà i ritardi e ricalcolerà la correlazione, sarà molto più obiettivo.

E la correlazione non garantisce affatto che una variabile possa predire l'altra. In generale, la selezione dei predittori per la predizione basata sul principio di alta correlazione è infelice. Non ho provato quello che ha suggerito SanSanych, ma sembra più affidabile.

 
mytarmailS:

È possibile

1) dividere la fila eura in due parti "1" e "2"

2) inserire la riga "1" in Google e troverà tutte le righe strettamente correlate.

3) memorizzare i nomi di tutte le file vicine

4) butta la fila "2" in google way e troverà tutte le file vicine ad essa

5) memorizzare i nomi di tutte le file vicine

6) confrontare i nomi delle righe del punto 3) e 5) e cercare una tale serie che sia presente sia in 3) che in 5)

Così, troviamo serie che non sono accidentalmente correlate con l'euro; questa è una sorta di valutazione incrociata nella sua forma più primitiva.

Ma non so come ottenere questi nomi, probabilmente dovremmo analizzare la pagina


Si chiama test PSE.

In realtà controlla l'eterogeneità del campione nel contesto di un modello di regressione.

 
Dr.Trader:

Ne dubito. Un'alta correlazione delle tendenze significa solo che in generale aumentano e diminuiscono allo stesso modo. Per cominciare sarebbe una buona idea cercare la correlazione non di tendenze, ma di aumenti, per esempio puoi salvare tendenze simili in csv, poi trovare i ritardi da solo e ricalcolare la correlazione, sarà molto più oggettivo.

Sì, sono d'accordo, ma google non ci dà tutto il suo database, ma solo ciò che correla "per tendenza", prendere ciò che correla per tendenza e usare quello per fare incrementi e misurare la corr. non è anche oggettivo, probabilmente ... :) Dobbiamo guardare l'intero database

Dimitri:


Si chiama test PSE.

Controlla effettivamente l'eterogeneità del campione nel contesto di un modello di regressione.

Bene... Questo CHOU può essere applicato, ma abbiamo bisogno di ottenere le righe da Google, o almeno i loro nomi
 

Ho letto questo opuscolo http://www.mirkin.ru/_docs/dissert065.pdfe voglio usare NeuroShell Day Trader Pro

 
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...