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

 
Alexander_K2:

Sim! Esqueci-me de dizer.

Os Estados são considerados um conjunto de dados que caracteriza uma partícula quase completamente. Ou seja, é um conjunto de dados, simplesmente coloque - volume de amostra, com suas características - curtose, assimetria, não-entropia, etc.

Ou seja, com confiança de R.Feynman é possível afirmar, que tendo definido corretamente o volume da amostra para o par concreto, tendo calculado sobre os valores médios históricos característicos destes coeficientes para esta amostra, é possível prever, que tendo atualmente um certo conjunto de parâmetros, em um certo intervalo de tempo, o sistema passará a um estado com seus parâmetros de estado estacionário.

Isto é o que eu espero deste fio. Se você precisar de ajuda para determinar o tamanho certo da amostra, escreva-me, eu tentarei ajudar.

Suponha que haja um processo autoregressivo, ou seja, a dependência dos estados presentes dos estados passados.

Como selecionar corretamente uma combinação de incrementos com diferentes atrasos para prever o sistema? Os atrasos devem ser constantes ou variar ao longo do tempo e, em caso afirmativo, como determinar isso (exceto para a enumeração banal)?

porque se existe tal combinação de incrementos que prevê robustamente o alvo, então você não deve ter nenhum problema em treinar NS nele.

 
Maxim Dmitrievsky:

então esta questão - digamos que há um processo de autoregressão, ou seja, a dependência dos estados presentes dos estados passados

como selecionar corretamente um conjunto de incrementos com diferentes desfasamentos para prever o sistema? Os desfasamentos devem ser constantes ou mudar com o tempo, e se eles devem mudar, como determinar isso (exceto uma enumeração trivial)?

Há aqui um ponto que obviamente causa dificuldades.

O conjunto de dados não é local em tempo.

Este é um ponto crucial!

Isto é, se trabalhamos com o tempo, devemos entender que num intervalo de tempo estritamente definido, lidamos com um conjunto de dados diferente. Esta é a pedra angular da pedra de tropeço. Tentando trabalhar com a mesma amostra de valores específicos, acabamos com uma janela "flutuante" de observações ao longo do tempo.

Eu contorno este problema de duas maneiras:

1. trabalhando exclusivamente com um conjunto particular de carrapatos (volume de amostra) - é o mesmo para um par em particular de uma vez por todas. Mas este conjunto é caracterizado por tempos diferentes de sua formação, e não se pode fazer previsões.

2. trabalhar exclusivamente com uma janela de tempo constante. Neste caso, pelo contrário, temos nele um volume flutuante de carrapatos. Como evitar esta dificuldade? A resposta é inserir "pseudo-estados", ou seja, para ordenar o preenchimento da quantidade de dados na janela de observação para o tamanho de amostra necessário. Faço-o forçando o trabalho em escala de tempo exponencial. Ou seja, leio os dados numa janela de tempo estritamente definida através do expoente e não é importante se foi realmente um tick chegado ou não. Neste caso, é possível fazer previsões . A única coisa é que eu duvido que intervalos exponenciais sejam a solução certa. Feynman trabalhava com intervalos uniformes.

Se você escolher 1 maneira - o problema de previsão não é, em princípio, resolúvel.

O Caminho 2 é solvível, mas não existem tais arquivos.

Nisto estou presa e até agora, estupidamente, escrevo os meus próprios arquivos. Eu não vejo outra maneira, infelizmente...

 
Alexander_K2:

2. trabalhar exclusivamente com uma janela de tempo permanente. Neste caso, pelo contrário, temos um tamanho de amostra flutuante. Como contornamos esta dificuldade? A resposta é introduzir os chamados "pseudo-estados", ou seja, elevar o número de dados na janela de observação para o tamanho de amostra necessário. Faço-o forçando o trabalho em escala de tempo exponencial. Ou seja, leio os dados numa janela de tempo estritamente definida através do expoente e não é importante se foi realmente um tick chegado ou não. Neste caso, é possível fazer previsões . A única coisa é que eu duvido que intervalos exponenciais sejam a solução certa. Feynman estava a trabalhar com intervalos uniformes.

Na verdade, os intervalos exponenciais são exatamente a solução certa para o problema da janela constante, tanto quanto eu entendo (deveria ser). Digamos que a amostra de treino é de 1000 barras(carrapatos), o que quer que seja. Claro que com uma janela deslizante os padrões mudam e o NS precisa de ser requalificado. Mas se a nossa amostra contém uma combinação de incrementos que o desfasamento aumenta exponencialmente... Pergunto-me quantos desfasamentos diferentes no total o sistema precisaria não só para sair da janela (digamos, desfasamento 1500), mas também para descrever todos os estados possíveis para a mesma janela, só que agora deslizando.

Talvez esteja a ser tonto :D mas não é difícil de tentar. Mas a questão é quando parar.

 
Maxim Dmitrievsky:

Na verdade é o intervalo exponencial como solução para o problema da janela constante, tanto quanto eu entendo, é a solução certa (deveria ser). Digamos que a amostra de treino é de 1000 barras (carrapatos), o que quer que seja. Claro que com uma janela deslizante os padrões mudam e o NS precisa de ser requalificado. Mas se a nossa amostra contém uma combinação de incrementos que o desfasamento aumenta exponencialmente... Pergunto-me quantos desfasamentos diferentes no total o sistema precisaria não só para sair da janela (digamos, desfasamento 1500), mas também para descrever todos os estados possíveis para a mesma janela, só que agora deslizando.

Talvez esteja a ser tonto :D mas não é difícil de tentar. Mas a questão é quando parar.

E você tem que parar quando o sistema passa de um estado instável para um estável.

Por exemplo, se num dado momento de tempo vemos o aumento da nãoentropia (uma tendência começou), então num determinado intervalo de tempo a nãoentropia voltará ao seu valor médio característico calculado a partir da história.

Como determinar este intervalo de tempo de transição? Bem, essa é a verdadeira previsão, nada de brincadeiras. É o que espero das redes neurais e li este tópico :)

 
Alexander_K2:

E é necessário parar quando o sistema se move de um estado instável para um estável.

Isto é, por exemplo, se num dado momento de tempo se tiver visto um aumento na não-entropia (uma tendência começou), então após um certo intervalo de tempo a não-entropia voltará ao seu valor médio característico calculado a partir da história.

Como determinar este intervalo de tempo de transição? Bem, essa é a verdadeira previsão, nada de brincadeiras. É o que eu espero das redes neurais e leio este tópico :)

Ah, o problema era bastante trivial - para treinar o modelo em incrementos exponenciais e construir um gráfico de spread entre os preços previstos e correntes, ver como os desvios da média (resíduos) são distribuídos

fará isso na próxima semana :) basta substituir a palavra inentropy pela palavra variance

 
Maxim Dmitrievsky:

ah, bem, a tarefa era bastante trivial - treinar o modelo em incrementos exponenciais, e traçar o spread entre os preços previstos e correntes, ver como os desvios em relação à média (resíduos) são distribuídos

Fá-lo-á na próxima semana :)

Estou ansioso por isso, Maxim. A sério - tenho a certeza que pode ser feito. Só não se esqueça de abrir o sinal - eu serei o primeiro a inscrever-me.

Apenas 2 coisas podem realmente funcionar no mercado - redes neuronais e teórico. Todo o resto é lixo, caramelos e bolsos vazios como resultado.

 
Alexander_K2:

Estou ansioso por isso, Maxim. A sério - tenho a certeza que pode ser feito. Só não se esqueça de abrir o sinal - eu serei o primeiro a inscrever-me.

Apenas 2 coisas podem realmente funcionar no mercado - redes neurais e um teórico. Tudo o resto é sucata, reparos e bolsos vazios como resultado.

Vou mostrar-lhe o bot como exemplo, pode afiná-lo mais tarde :D Vou fazê-lo como um indicador no início para maior clareza

 

Seguimento do processo -https://www.mql5.com/ru/forum/86386/page643#comment_6472393

Dr. Trader:

Encontrei outro pacote interessante para peneirar os preditores. Chama-se FSelector. Ele oferece cerca de uma dúzia de métodos para peneirar os preditores, incluindo a entropia.


A função para peneirar os preditores aleatórios.forest.importance() mostrou resultados bastante bons em alguns testes. É inconveniente que, na sua opinião, todos os preditores sejam, pelo menos, um pouco importantes. mas se você calcular a importância média, por exemplo, e tomar apenas aqueles preditores que são importantes acima da média, você obtém resultados muito bons.

library(FSelector)

load("ALL_cod.RData")
trainTable <- Rat_DF1
PREDICTOR_COLUMNS_SEQ <- 1:27
TARGET_COLUMN_ID      <- 29

targetFormula <- as.simple.formula(colnames(trainTable)[PREDICTOR_COLUMNS_SEQ], colnames(trainTable)[TARGET_COLUMN_ID])

rfImportance <- random.forest.importance(targetFormula, trainTable)
colnames(trainTable)[PREDICTOR_COLUMNS_SEQ][rfImportance[[1]] > mean(rfImportance[[1]])]
 
Dr. Trader:

Levou apenas um eurusd m1 para cerca de Janeiro deste ano, e uma janela deslizante de 1 dia.

Logicamente, se a entropia aumentar, deve-se suspender a negociação, e continuar a negociar com baixa entropia. Mas aqui temos uma tendência de baixa entropia por alguma razão, embora seja mais fácil de negociar em apartamento, é incomum.

(corrigido este erro de digitação no código anexo, faça o download novamente se você já teve tempo de fazer o download do código antigo)

Não faz sentido realizar testes yf a citação inicial, porque a olho nu é claro que a série não é estacionária.

E interessantes (não para mim - eu sempre o uso) são os gráficos para log das séries cronológicas (p/p-1).

O que está aí dentro? E é claro que é necessária uma escala no eixo das ordenadas.

 
Dr. Trader:

Encontrei outro pacote interessante para peneirar os preditores. Chama-se FSelector. Ele oferece cerca de uma dúzia de métodos para peneirar os preditores, incluindo a entropia.


Há também um grande conjunto de ferramentas de alívio muito interessante no pacote CORElearn.

Nos meus longos exercícios sobre este assunto, não encontrei nada melhor do que as funções de seleção de preditores no carpete, especialmente a segurança.

Mas nada disso funcionará a menos que a pré-seleção do preditor seja feita com base no "tem que ser feito" para a variável alvo.

Deixe-me repetir novamente com um exemplo de duas aulas:

  • parte do preditor deve estar relacionada a uma classe e a outra parte a outra classe. A intersecção destas duas partes dos preditores é o que dá o erro de classificação, que não pode ser superado.



PS.

Discutiu os componentes principais e viu a falha que o algoritmo apresenta sem um professor.

Aqui está com o professor:

sgpls( x, y, K, eta, scale.x=TRUE,
        eps=1 e-5, denom.eps=1 e-20, zero.eps=1 e-5, maxstep=100,
        br=TRUE, ftype='iden' )
Arguments

x       Matrix of predictors.
y       Vector of class indices.
K       Number of hidden components.
eta     Thresholding parameter. eta should be between 0 and 1.
scale.x Scale predictors by dividing each predictor variable by its sample standard deviation?
eps     An effective zero for change in estimates. Default is 1 e-5.
denom.eps       An effective zero for denominators. Default is 1 e-20.
zero.eps        An effective zero for success probabilities. Default is 1 e-5.
maxstep Maximum number of Newton-Raphson iterations. Default is 100.
br      Apply Firth's bias reduction procedure?
ftype   Type of Firth's bias reduction procedure. Alternatives are "iden" (the approximated version) or "hat" (the original version). Default is "iden".

O pacote spls

Razão: