Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 295

 

A questão da correlação das variáveis tem sido discutida muitas vezes.

Claro que a correlação é a mais duvidosa, muito rapidamente a correlação com os anéis de Saturno, as borras de café... começa a ser vista.

De alguma forma, isto foi esquecido:

Oteste decausalidade da Granger é um procedimento para testar a causalidade ("Granger causalidade") entreséries temporais. A idéia do teste é que os valores (mudanças) das séries cronológicas{\i1}, que causam mudanças nas séries cronológicas{\i}, devem preceder as mudanças nesta série cronológica e, além disso, devem contribuir significativamente para seus valores previstos. Se cada variável contribuir significativamente para a predição da outra, pode haver alguma outra variável que afete ambas.

O testeGrangertesta consistentemente duas hipóteses nulas: "x não é a causa de y de acordo com a Granger" e "y não é a causa de x de acordo com a Granger". Para testar estas hipóteses, duas regressões são construídas: em cada regressão, a variável dependente é uma das variáveis testadas para causalidade, e os regressores são os desfasamentos de ambas as variáveis (na verdade, éuma auto-regressiva vetorial).

E aqui está o código para este caso a partir daqui.

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

Claro que a correlação é a mais duvidosa, muito rapidamente começa a surgir a correlação com os anéis de Saturno, as borras de café...

De alguma forma, isto foi esquecido:

Ninguém se esqueceu de nada....

É aí que o google correlacionar vai perguntar, como você quer medir a correlação? Googling não vai perguntar sobre isso agora, e não vai. O serviço tem 6 anos, e se eles quisessem fazê-lo, eles já o teriam feito ...

E outra coisa...

O Google tem bilhões de BPs em sua base de dados, sempre haverá uma centena de BPs que estão perto por acaso, só porque a base de dados é enorme e não importa como eles medem a proximidade, simples correlação ou algo complicado e complicado.

A questão é como separar o aleatório do não aleatório.

 
mytarmailS:

A questão é como peneirar o aleatório do não aleatório

Nós poderíamos

1) dividir a série eura em duas partes "1" e "2".

2) insira a linha "1" no Google e ele encontrará todas as linhas próximas

3) memorizar os nomes de todas as filas próximas.

4) atire a linha "2" para o Google e encontrará todas as linhas próximas a ela

5) memorizar os nomes de todas as filas próximas

6) compare os nomes das linhas dos pontos 3) e 5) e procure uma linha que esteja presente tanto no ponto 3) como no ponto 5)

Assim, encontramos séries que não se correlacionam acidentalmente com o euro - esta é uma espécie de validação cruzada na sua forma mais primitiva.

Mas como conseguir estes nomes que não sei, provavelmente precisas de analisar a página.

 
mytarmailS:

Ninguém se esqueceu de nada....

Quando o google correlate lhe perguntará qual método você quer medir a conexão? Googling não vai perguntar sobre isso agora, e não vai. O serviço tem 6 anos, e se eles quisessem fazê-lo, já o teriam feito.

E outra coisa...

O Google tem bilhões de BPs em sua base de dados, sempre haverá uma centena de BPs que estão perto por acaso, só porque a base de dados é enorme e não importa como eles medem a proximidade, simples correlação ou algo complicado e complicado.

A questão é como separar o aleatório do não aleatório.


Então peneirar por teste de todo o lixo que o google recolheu - era isso que eu queria dizer.
 
SanSanych Fomenko:
Por isso, vasculhem o teste de todo o lixo que o Google recolheu, - é isso que quero dizer.

Não sei bem como fazer isto, mas não sei bem como o fazer).

Você pode pesquisar cem séries no Google que se correlacionam perfeitamente com o euro, por mais sofisticado que seja o teste, todas elas mostram uma excelente correlação, por isso é inútil nesta situação.

 
mytarmailS:

Não importa quão inteligente seja o teste que você aplica, todos eles mostram uma conexão perfeita.

Eu tenho as minhas dúvidas sobre isso. Uma alta correlação de tendências só significa que geralmente sobem e descem aproximadamente ao mesmo ritmo. Primeiro de tudo seria melhor procurar a correlação de não tendências mas sim aumentos, por exemplo, pode-se salvar tendências similares no csv, depois o google mostrará os atrasos e recalculará a correlação, será muito mais objetivo.

E a correlação não garante de forma alguma que uma variável possa prever a outra. Em geral, a seleção de preditores para previsão com base no princípio de alta correlação é lamentável. Ainda não tentei o que SanSanych sugeriu, mas parece mais confiável.

 
mytarmailS:

É possível

1) dividir a linha da eura em duas partes "1" e "2".

2) insira a linha "1" no Google e ele encontrará todas as linhas intimamente relacionadas.

3) memorizar os nomes de todas as filas próximas

4) atire a linha "2" para o Google e encontrará todas as linhas próximas a ela

5) memorizar os nomes de todas as filas próximas

6) comparar nomes de linhas a partir do ponto 3) e 5) e procurar uma série que esteja presente tanto no 3) como no 5)

Assim, encontramos séries que não se correlacionam acidentalmente com o euro; esta é uma espécie de avaliação cruzada na sua forma mais primitiva.

Mas não sei como obter estes nomes, provavelmente devíamos analisar a página.


Chama-se um teste PSE.

Na verdade, verifica a heterogeneidade da amostra no contexto de um modelo de regressão.

 
Dr. Trader:

Duvido disso. A alta correlação de tendências significa apenas que em geral elas aumentam e diminuem da mesma forma. Para começar, seria uma boa idéia procurar a correlação não de tendências, mas de aumentos, por exemplo, você pode salvar tendências similares no csv, então encontre desfasamentos e recalcule a correlação, será muito mais objetivo.

Sim, concordo, mas o google não nos dá toda a sua base de dados, mas apenas o que se correlaciona "por tendência", tomando o que se correlaciona por tendência e usando isso para fazer incrementos e medir corr... :) Precisamos de olhar para toda a base de dados

Dimitri:


Chama-se um teste PSE.

Verifica realmente a heterogeneidade da amostra no contexto de um modelo de regressão.

Bem... Esta CHOU pode ser aplicada, mas precisamos tirar as linhas do Google, ou pelo menos os seus nomes
 

Eu li este folheto http://www.mirkin.ru/_docs/dissert065.pdfe quero usar o 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...