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

 
Andrey Dik #:

Sim, a questão é sempre garantir a robustez do modelo em novos dados. É por isso que eu disse que encontrar esse critério é um dos mais importantes e difíceis.

Quero dizer que as métricas de avaliação de resultados que estamos acostumados a usar na negociação e no aprendizado de máquina são apenas uma parte da avaliação da qualidade do modelo/tuning/aproximação resultante.

O importante é saber em que condições conseguimos isso. Quanta informação foi necessária para conseguir isso. Precisamos avaliar a estabilidade das observações ao longo do tempo. A contribuição de cada preditor.

O problema com modelos complexos com um grande número de preditores e regras de decisão (sejam eles árvores ou neurônios) é que eles criam padrões complexos que provavelmente não se repetirão em sua totalidade, daí o viés na probabilidade de atribuição a uma das classes. Anteriormente, publiquei uma imagem de "o que as árvores estão pensando" que mostrava que a maioria das folhas simplesmente não se ativa com novos dados.

Tudo isso se deve ao fato de estarmos lidando com uma "função" (na verdade, sua soma) que não pode ser totalmente explorada para aproximá-la. Isso significa que precisamos dar atenção especial apenas àqueles que são mais compreendidos/conhecidos. É melhor deixar o modelo "calado" diante de novos dados, já que ele não está familiarizado com a situação, do que operar em casos isolados do passado.

Portanto, surge a pergunta: como fazer com que o modelo fique em silêncio se não tiver certeza e como dar confiança se a probabilidade de eventos favoráveis for alta?

Precisamos de métodos de correção de modelos prontos. Eles podem ser implementados influenciando o modelo após o treinamento ou aplicando modelos de duas classes - uma do tipo bousting e outra do tipo vizinhos mais próximos.

 
Aleksey Vyazmikin #:

O que quero dizer é que as métricas de avaliação de resultados que estamos acostumados a usar no comércio e no aprendizado de máquina são apenas parte da avaliação da qualidade do modelo/tuning/aproximação resultante.

O importante é saber em que condições conseguimos isso. Quanta informação foi necessária para conseguir isso. Precisamos avaliar a estabilidade das observações ao longo do tempo. A contribuição de cada preditor.

O problema com modelos complexos com um grande número de preditores e regras de decisão (sejam eles árvores ou neurônios) é que eles criam padrões complexos que provavelmente não se repetirão em sua totalidade, daí o viés na probabilidade de atribuição a uma das classes. Anteriormente, publiquei uma imagem de "o que as árvores estão pensando" que mostrava que a maioria das folhas simplesmente não se ativa com novos dados.

Tudo isso se deve ao fato de estarmos lidando com uma "função" (na verdade, sua soma) que não pode ser totalmente explorada para aproximá-la. Isso significa que precisamos dar atenção especial apenas àqueles que são mais compreendidos/conhecidos. É melhor manter o modelo "silencioso" em relação aos novos dados, já que ele não está familiarizado com a situação, do que operar em casos isolados do passado.

Portanto, surge a pergunta: como fazer com que o modelo seja silencioso se ele não tiver certeza, e dar confiança se a probabilidade de eventos favoráveis for alta?

Precisamos de métodos de correção de modelos prontos. Isso pode ser implementado por meio do impacto no modelo após o treinamento ou pela aplicação de modelos de duas classes - uma do tipo bousting e outra do tipo K vizinhos mais próximos.

Criei modelos anteriores que simplesmente pararam de dar sinais de negociação com o tempo. E sim, isso é melhor do que mudar a probabilidade de respostas corretas para 50/50 em novos dados. A questão é que, ao treinar para obter as respostas da grade em uma faixa estreita de números, com o tempo as respostas começam a sair da faixa e os sinais desaparecem. Esse é um processo muito trabalhoso, não consegui automatizar o treinamento e as negociações posteriores.

Essa é uma das abordagens, provavelmente há outras; é necessário estudar esse tópico.

 
Andrey Dik #:

A essência - durante o treinamento, para conseguir acertar as respostas da grade em uma faixa estreita de números, com o tempo as respostas começam a sair da faixa e os sinais desaparecem. Esse é um processo muito trabalhoso, e não consegui automatizar completamente o treinamento e as negociações posteriores.

Implementei essa ideia com a ajuda do otimizador do MT5:

. Defini uma condição para meu pseudo-neurônio: "Abrir COMPRA se o resultado do conjunto der um número no intervalo Close[1] +/- 0,00050 pips."
Entrada - apenas um número - Close[2];

O otimizador começa a procurar arduamente por negociações lucrativas, mas, em vez disso, classifico os conjuntos pelo número de negociações.

Quando o otimizador termina, você escolhe o conjunto mais desgastante com o maior número de negociações - isso naturalmente significa que o Expert Advisor adivinhou o número máximo de preços futuros.

Em seguida, mudo para o modo de teste, em que a condição já foi alterada:"Abrir COMPRA se o resultado do conjunto der um número maior que Close[1] em N pontos"

Voilà: o forward é lucrativo em um ano.

Um problema: funcionou apenas com um candle de uma hora às 2h. Fechamento - na abertura da hora seguinte.

De alguma forma, encontrei esse padrão. Ele funcionou no EURUSD, USDCHF e EURGBP em outra hora da manhã.

 
Andrey Dik #:
respostas da grade em um intervalo estreito de números

Estamos falando de NS ou de outra grade?

Andrey Dik #:
Com o passar do tempo, as respostas começam a se mover para fora da faixa e os sinais desaparecem

Isso se deve à mudança nos totais dos preditores ou talvez apenas um deles tenha deixado de mostrar o resultado "desejado"?

Em geral, a questão de saber por que algo está quebrado pode ser muito importante para outras ideias.

 
Aleksey Vyazmikin #:

1. Estamos falando de NS ou de uma grade diferente?

2. É por causa da mudança nas pontuações totais dos preditores ou talvez apenas um deles tenha deixado de mostrar o resultado "desejado"?

Em geral, a questão de saber por que algo quebrou pode ser muito importante para outras ideias.

1. Sim, é claro.

2. Talvez eu não tenha colocado a questão da maneira correta. Não, foi apenas um efeito positivo - a negociação seria gradualmente reduzida a nada com novos dados. Assim que o número de negociações diminuísse abaixo de um determinado nível por unidade de tempo, você precisaria treinar novamente. Ou seja, não é uma diminuição na eficiência da negociação em OOS como um sinal para retreinar, mas uma diminuição no número de negociações.

Ou seja, em vez de falar bobagens sobre as perdas de negociação em OOS, o NS silencia sobre dados desconhecidos em resposta.

 
Aleksey Nikolayev #:
Seu link também fala sobre a vinculação de "perfil" à validação cruzada, para a qual pode ser mais fácil encontrar pacotes.

Não estou vendo a conexão aqui. De que palavras isso decorre?

 
Forester #:

O trabalho é experimental. Aqui está uma citação de http://www.ccas.ru/frc/papers/students/VoronKoloskov05mmro.pdf

É improvável que cada experimento tenha sido criado como um pacote.

Ah, e o experimento é artificial. O ruído foi adicionado ao conjunto de dados claramente separado por classes. E a separação clara é apenas para um recurso - o eixo Y. Se removermos o ruído (todos os dados de 0,2 a 0,8), descobriremos que deixamos exemplos apenas com a distância para outra classe não inferior a 0,6. Refiro-me à terceira variante mais complicada da imagem:


Vá para a vida real e adicione seus 5.000 preditores que serão ruído a essa única ficha de trabalho. No agrupamento, você calcula a distância total entre os pontos nesse espaço dimensional de 5001. 0,6 de trabalho nunca será encontrado nesse caos.

Acho que qualquer classificador fará isso melhor, a mesma árvore encontrará esse único recurso e dividirá por ele, primeiro por 0,5 e depois chegará a divisões de 0,2 e 0,8, seguidas de folhas com 100% de pureza.

Afirma-se que, com esse algoritmo, foi possível conquistar os primeiros lugares no kagle, mas não acho que houvesse tarefas simples....

Vamos tentar descobrir isso? Não entendo de fórmulas - para meu grande pesar.

 
mytarmailS #:
Um dos artigos de Vladimir Perervenko descreveu esse método, e havia um exemplo com código, é claro

Aprendi sobre esse algoritmo no vídeo, há algumas fórmulas no slade - é difícil chamá-lo de código.

Onde você viu um exemplo de código?

 
Andrey Dik #:

1. Sim, é claro.

2. Talvez eu não tenha dito isso dessa forma. Não, foi apenas um efeito positivo - a negociação seria gradualmente reduzida a nada com novos dados. Assim que o número de negociações diminuísse abaixo de um determinado nível por unidade de tempo, você precisaria treinar novamente. Ou seja, não se trata de uma diminuição na eficiência da negociação em OOS como um sinal para o retreinamento, mas de uma diminuição no número de negociações.

Ou seja, em vez de falar bobagens sobre as perdas de negociação em OOS, o NS silencia sobre dados desconhecidos em resposta.

Foi isso que percebi. Só estou perguntando se a causa disso foi identificada. Não sobre o que está quebrado, mas por que os sinais estão faltando.

 
Aleksey Vyazmikin #:

Aprendi sobre esse algoritmo no vídeo, há algumas fórmulas no slade - é difícil chamá-lo de código.

Onde você viu um exemplo de código?

Isso é trollagem?

Razão: