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

 
SanSanych Fomenko:

Formação, reconversão e sobretreinamento são coisas fundamentalmente diferentes.

Todo este treinamento em cada novo bar é mastigado e mastigado neste fórum e, em geral, dentro da TA.

Na luta contra o supertreinamento (superfitting) eu conheço dois métodos.

1. limpeza do conjunto de preditores a partir de preditores não relacionados com a variável alvo - limpeza a partir do ruído do conjunto de preditores de entrada. Os primeiros 100 posts deste tópico discutiram-no em detalhe.

2. Com a limpeza do conjunto de preditores a partir do ruído, começamos a ajustar o modelo com amostra de treino, depois com amostra de teste e validação, que são amostras aleatórias de um ficheiro. O erro em todos os três conjuntos deve ser aproximadamente o mesmo.

3. Depois pegue um arquivo separado do anterior e execute o modelo nele. Mais uma vez o erro deve ser mais ou menos o mesmo que os anteriores.

4. Se estas verificações forem realizadas regularmente, a pergunta "uma queda de 20% é um sinal para a reciclagem" não será de todo colocada, uma vez que os três primeiros passos resultaram numa queda como parâmetro do modelo e ir além diz que o modelo não está a funcionar e que tudo deve ser recomeçado.


Bem, isto é tudo um caso geral, sim. E em cada caso você precisa trabalhar mais com cada TS em particular, e então o entendimento virá quando ele estiver bem treinado, quando ele estiver requalificado, e quando ele tiver períodos. Por exemplo, a relação compra/venda deve ser aproximadamente a mesma, e a amostra de treino deve conter tendência para cima, para baixo e plana, caso contrário é um empate de sentido único. O principal neste caso é não se "sobretreinar" :)

Além disso, factor sazonal, factor de crise e outras muitas regularidades diferentes que precisam de ser tidas em conta

 
SanSanych Fomenko:

1. limpeza do conjunto de preditores a partir de preditores irrelevantes para a variável alvo - limpeza do ruído do conjunto de preditores de entrada. Nos primeiros 100 marcos desta linha, esta questão foi discutida em grande detalhe.

Que solução finalmente surgiu - como identificar os preditores não relacionados com os comandos de saída?
 
elibrarius:
Qual foi a solução final - como definir os preditores que não estão relacionados com os comandos de saída?
Como? - Tudo depende das especificidades. Demorei dois dias a resolver um problema simples. Agora a solução parece óbvia)).
 
Yuriy Asaulenko:
Como? - Tudo depende das especificidades. Demorei dois dias a resolver um problema simples. Agora a solução parece óbvia)).
Presumo que também existam princípios gerais e universais? É interessante saber também sobre o seu exemplo específico.
 
Elibrarius:
Presumo que também existam princípios gerais e universais? Bem, também é interessante saber sobre o seu exemplo particular.

Procura-o no meu blog.

Os princípios, sim, são universais. Mas não há soluções gerais. Excepto para algumas classes de tarefas.

 

Um resumo das cem páginas anteriores :)

A neurônica e quase todos os outros modelos populares estão muito longe da inteligência artificial. Eles podem simplesmente encontrar tais combinações de valores preditores que atingem a precisão de aprendizagem desejada, e em previsões futuras eles interpolam (ou extrapolam) os resultados passados para obter uma nova previsão.

Isso significa que se tomarmos, por exemplo, Ma, Rci e Stochastic para preditores e treinarmos a rede neural usando reversões em ziguezague como objetivo de treinamento - diremos à rede neural que "esses três preditores podem prever reversões". E a própria rede neural não saberá se estes preditores realmente se encaixam. Ele se lembrará desses dados com precisão aceitável e na negociação esperamos que as mesmas combinações de Ma, Rci e Stochastic sejam salvas antes da reversão. Mas eles não vão, e isso vai falhar.

Um modelo baseado em preditores inúteis irá falhar, não importa se é gbm, neurônio ou regressão. Você pode até mesmo gerar séries aleatórias e usá-las como preditores, a neurônica encontrará combinações recorrentes entre elas e se lembrará delas.
É tarefa de um mineiro de dados humanos selecionar os preditores e a finalidade do treinamento, usando outras ferramentas. E treinar o modelo (o neurónio) é um pequeno penúltimo passo.

Os preditores devem manter a correlação com o alvo nos dados de treinamento, tanto no passado como no futuro. É por isso que SanSanych fala sobre testar o modelo em diferentes arquivos, apenas para garantir que as dependências encontradas não desapareçam com novos dados.
Isto é, estudamos e coletamos cuidadosamente os preditores e o alvo, treinamos o modelo e o testamos. Depois testamos em dados completamente novos para o modelo. Se a precisão da previsão em ambos os casos não coincidiu, os preditores ou o alvo não são adequados. Devíamos procurar outros.


SanSanych Fomenko:

A NS pode prever séries não estacionárias? Em caso afirmativo, que tipos de não-estacionariedade?

Na minha opinião, a neurônica é completamente inadequada para trabalhar com preço para prever séries cronológicas não-estacionárias. O comportamento dos preços está em constante mudança, os padrões encontrados param de funcionar depois do horário de trabalho, tudo é caótico. E então alguém pega num neurónio, dá-lhe preços durante alguns meses e pede para encontrar as dependências que se repetem durante este tempo. Mas não há dependências repetidas e o que o neurônio pode encontrar e lembrar será apenas uma coincidência 100% aleatória.

Se vamos usar neurônica, devemos dar-lhe apenas preços processados (não ohlc puro), por exemplo, indicadores.

 

Obrigado pelo resumo, não me apeteceu ler 100 páginas...)

O processo de seleção manual dos preditores, por exemplo, por combinações de 3 pcs. demorará muito tempo. No MT5 existem 38 indicadores técnicos padrão. Combinações de 3 - número enorme. Além disso, precisamos selecionar períodos, tipos de preços e outros parâmetros de entrada. E se adicionarmos indicadores não-padronizados interessantes, o número de testes irá aumentar ainda mais.

Portanto, devemos procurar uma estimativa automática de indicadores. Encontrei dois métodos comuns nos artigos de Vladimir Perervenko:

1) Remoção de variáveis altamente correlacionadas - é implementado em R.

2) Seleção das variáveis mais importantes - também resolvidas em R.

Eu ainda estou escrevendo diretamente no MT5, pode haver soluções prontas para estas perguntas? Ou um método de transferência de soluções de R para MT5, pelo menos na versão simplificada....?

Se procurarmos a correlação dos indicadores, simplesmente procuramos a diferença entre cada par de indicadores -> resumir para cada barra -> dividir pelo número de barras. (ou de outra forma?)

Com os mais importantes - não completamente resolvidos...

Talvez haja outros métodos para limpar os preditores?

 
elibrarius:

Mas ainda estou a escrever directamente no MT5, talvez já existam soluções prontas para estes problemas? Ou um método de transferência de soluções de R para MT5, pelo menos em uma versão simplificada....?

Escrever tudo de uma só vez em MQL, mas confiar em R não é a melhor opção. É mais fácil desenvolver uma estratégia em R, então usando esta biblioteca https://www.mql5.com/ru/code/17468 para chamar o código R do Expert Advisor e testá-lo no testador.
Muito provavelmente muita coisa será apagada e alterada durante a criação e teste, alterações de pacotes, modelos, etc., é mais fácil de alterar e testar tudo em R propriamente dito.

Finalmente, quando você gosta e tudo funciona, você pode tentar portar o código para o mql à mão.
Muitos pacotes usados em R são na verdade escritos em C/C++ e você pode encontrar o código fonte para pacotes padrão aquihttps://cran.r-project.org/web/packages/available_packages_by_name.html,

 
Dr. Trader:

Um resumo das cem páginas anteriores :)

A neurônica e quase todos os outros modelos populares estão muito longe da inteligência artificial. Eles podem simplesmente encontrar tais combinações de valores preditores que atingem a precisão de aprendizagem desejada, e em previsões futuras eles interpolam (ou extrapolam) os resultados passados para obter uma nova previsão.

Isso significa que se tomarmos, por exemplo, Ma, Rci e Stochastic para preditores e treinarmos a rede neural usando reversões em ziguezague como objetivo de treinamento - diremos à rede neural que "esses três preditores podem prever reversões". E a própria rede neural não saberá se estes preditores realmente se encaixam. Ele se lembrará desses dados com precisão aceitável e na negociação esperamos que as mesmas combinações de Ma, Rci e Stochastic sejam salvas antes da reversão. Mas eles não vão, e isso vai falhar.

Um modelo treinado em preditores inúteis falhará, seja em gbm, neurônica ou regressão. Você pode até mesmo gerar séries aleatórias e usá-las como preditores, a neurônica encontrará entre elas combinações repetitivas e se lembrará delas.
É tarefa de um mineiro de dados humanos selecionar os preditores e a finalidade do treinamento, usando outras ferramentas. E treinar o modelo (o neurónio) é um pequeno penúltimo passo.

Os preditores devem manter a correlação com o alvo nos dados de treinamento, tanto no passado como no futuro. É por isso que SanSanych fala sobre testar o modelo em diferentes arquivos, apenas para garantir que as dependências encontradas não desapareçam com novos dados.
Isto é, estudamos e coletamos cuidadosamente os preditores e o alvo, treinamos o modelo e o testamos. Depois testamos em dados completamente novos para o modelo. Se a precisão da previsão em ambos os casos não coincidiu, os preditores ou o alvo não são adequados. Devíamos procurar outro.


Na minha opinião, a neurónica não é adequada para prever séries cronológicas não estacionárias. O comportamento dos preços está em constante mudança, os padrões encontrados param de funcionar depois do horário de trabalho, tudo é caótico. E depois alguém pega num neurónio, dá-lhe preços durante alguns meses e pede para encontrar as dependências que se repetem durante este tempo. Mas não há dependências repetidas e o que o neurônio pode encontrar e lembrar será apenas uma coincidência 100% aleatória.

Se usamos um neurônio, então podemos dar-lhe apenas preços processados (não puro ohlc), por exemplo, indicadores.

O problema não é a neurônica em si ou qualquer outra coisa aplicável aos mercados. O problema é o que é introduzido na ferramenta DM. E é pura loucura usar um preço nú como insumo.

O problema são os preditores, como a CC os chama. Ou seja, o problema é como representar uma série não estacionária como estacionária. Quem estiver mais próximo de resolver este problema é o melhor.

 
Dr. Trader:

Não é a melhor solução para escrever tudo em MQL, confiando no R ao mesmo tempo. É mais fácil desenvolver a estratégia em R e depois, usando esta biblioteca https://www.mql5.com/ru/code/17468, chamar o código R do Expert Advisor e testá-lo no Strategy Tester.
Muito provavelmente enquanto se cria e testa muitas coisas serão apagadas e alteradas, os pacotes serão substituídos, os modelos serão alterados, etc. É mais fácil alterar e testar tudo no próprio R.

Finalmente, quando você gosta e tudo funciona, você pode tentar portar o código para o mql à mão.
Muitos pacotes usados em R são na verdade escritos em C/C++ e você pode encontrar o código fonte para pacotes padrão aquihttps://cran.r-project.org/web/packages/available_packages_by_name.html,

É complicado... Levaria mais tempo do que compreender o algoritmo (como para a correlação K acima) e escrevê-lo. Penso que a função de tentar todas as entradas, calcular a correlação e peneirar as altamente correlacionadas levará um par de horas.

Espero que seja tão fácil de usar outras soluções para peneirar os preditores).

Então, há outras soluções para encontrar preditores desnecessários?