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

 
Aleksey Vyazmikin:

Tenho 3 classes, ou seja, árvore tem sinal para comprar, vender e esperar, agora estou experimentando com catbust e simplifiquei os alvos para serem comprimidos em uma classe...

Eu não sei nada sobre classes de ctree e cnode, bem como sobre OOP em geral - não sou muito bom em programação, então você mal pode entender código de classe sem um programador...

É mais uma questão de como construí-los e porquê. Você pode ramificá-los através da genética no otimizador também, mas não vai parecer com o seu. Ao invés disso, será semelhante a uma árvore de algoritmos que é otimizada e eles se tornam mais complexos por si mesmos, como se em camadas... quando o ótimo for alcançado, peneiraremos algoritmos desnecessários no otimizador. É só uma maneira, não sei se funciona.

 
Maxim Dmitrievsky:

Sim, é mais uma questão de como construí-los e porquê. É possível ramificá-los através da genética no otimizador, mas não será como o seu. Ao contrário, será semelhante a uma árvore de algoritmos, que é otimizada, e eles se tornam mais complexos camada por camada por si só ou algo assim... quando o ótimo é alcançado, então elimina os desnecessários no otimizador. É apenas uma opção, mas não sei se vai funcionar.

É difícil discutir quando não se compreende a essência do código...

Eu fiz uma experiência de rotação de grupos de preditores - exatamente o que eu estava dizendo - alguns preditores são bons para dividir uma amostra e ir até a raiz, mas estragar o quadro inteiro.

Ao todo, tenho 9 grupos - os quebrei por lógica preditor, ainda mais generalizada do que apenas lógica. Obtidas 512 combinações de grupos, abaixo do gráfico mostra a dispersão dos resultados dependendo das combinações de grupos - para a seleção utilizada métrica "Precisão", definir que no outro dia - nenhuma alteração, as colunas alvo_100, árvore 4 níveis, iterou apenas 1000 feito.

A tabela mostra o resultado do conjunto com todos os preditores - 1710 unidades, bem como o máximo de 3511 e o mínimo de 607 resultados.


Em seguida fiz um cálculo com uma penalização, ou seja, multiplicei o grupo de bandeira de bloqueio para o resultado financeiro da combinação, se o valor for zero (o grupo foi usado), então fixamos um resultado positivo para o grupo, mas se o valor não for zero, então o grupo é bloqueado - multiplique o resultado por -1, então soma os valores para cada grupo. A idéia é que o grupo com mais penalidades quando bloqueado é o pior grupo do agregado, e lá eles podem, é claro, ser classificados para mais pesquisas.

Aqui está como se parece a acumulação de indicadores no gráfico

Claro que a forma das curvas depende do algoritmo de combinação, como todos têm o mesmo número de zeros e uns, o resultado final ainda é justo. E é como se segue - na tabela abaixo.



A tabela mostra que a desactivação dos grupos 1, 8 e 9 tem um bom efeito na melhoria do resultado financeiro.

Vamos ver a combinação do melhor resultado financeiro



E agora, a combinação do pior resultado



No conjunto, o método de estimativa funcionou - o melhor resultado tem o grupo 3,4,5,7 desbloqueado e o pior bloqueado, enquanto a situação é quase como no pior caso.

Conclusão - esta abordagem tem direito à vida e pode identificar de forma agressiva grupos de preditores negativamente influenciados.

Há duas maneiras de proceder: ou encontrar a razão de tais maus resultados dividindo os grupos negativos ou dividir os grupos positivos e tentar descobrir onde estão os preditores mágicos que dão bons resultados. Por outro lado, podes ir por dois caminhos...

As dez melhores e piores combinações:

E temos de ver o que acontece com o outro alvo...

E aqui está outro gráfico - mostra claramente. Quanto mais boas decisões (Proc_All - delta de boas/piores decisões em relação a todas as decisões (zeros e umas no total)), maior é o lucro, especialmente se for a entrada correta em uma negociação (Proc_1_V02) em relação a todas as entradas.


 
Aleksey Vyazmikin:

Então como você processa esses preditores na produção para obter sinais?

 
Maxim Dmitrievsky:

Então, como você processa esses preditores no processo de produção para obter sinais?

Ainda não tenho muito tempo para a produção (negociação real), mas estou planejando emparelhar modelos e construir andaimes a partir deles - a próxima etapa, mas ainda não consigo descobrir como automatizar este processo...

Os prognósticos na forma final são obtidos em Expert Advisor, por isso é fácil escolhê-los para serem usados.
 
Maxim Dmitrievsky:

ok. boa sorte ) se você preparar o mt e katbust, escreva um artigo :)

Ainda hoje eu estava a fazer um trabalho cerebral... Modificações no algo, montanhas ficando mais altas, montanhas ficando mais íngremes... vale a pena o trabalho de usar uma linguagem de baixo nível.

Os últimos 3 meses de triénio, o resto funcionou até ao início de 2018, 15 min.

Pergunto-me se devo fazer alguma monitorização e relaxar... embora ainda tenha muito trabalho para fazer. E eu cometi erros infantis, uma das matrizes foi virada de forma errada originalmente (como série), e eu estava treinando o tempo todo em fichas invertidas, preocupada que eu estava aprendendo mal.

Claro que a questão da implementação do modelo CatBoost na EA ainda está em aberto, por um lado é possível descarregar código em C++, o que não compreendo de todo, por outro quero obter dados da folha para corrigir o modelo, e para isso preciso de intérprete, o que não consigo escrever sozinho...

Sim, você tem sua própria abordagem - os modelos funcionam para distâncias relativamente curtas, mas por que não tentar condições reais na história, ou seja, treinar no passado por 3 meses e trocar 1 no futuro e depois costurar os resultados - você pode obter resultados interessantes, adequados para aplicação.

Cometi um erro engraçado - esqueci de marcar um alvo para não ser treinado na amostra de treinamento como "não usar" e fiquei feliz por alguns minutos enquanto avaliava os resultados :)

 
Aleksey Vyazmikin:

É difícil discutir se não entende o código...

Eu fiz uma experiência de rotação de grupos de preditores - exatamente o que eu disse - alguns preditores são bons para dividir a amostra e ir até a raiz, mas estragar o quadro inteiro.

Ao todo, tenho 9 grupos - os quebrei por lógica preditor, ainda mais generalizada do que apenas lógica. Obtidas 512 combinações de grupos, abaixo do gráfico mostra a dispersão do resultado financeiro dependendo das combinações de grupos - para a seleção utilizada métrica "Precisão", definir que no outro dia - nenhuma alteração, as colunas alvo_100, árvore 4 níveis, iterou apenas 1000 feito.

A tabela mostra o resultado do conjunto com todos os preditores - 1710 unidades, bem como o máximo de 3511 e o mínimo de 607 resultados.


Em seguida fiz um cálculo com uma penalização, ou seja, multiplicei o grupo de bandeira de bloqueio para o resultado financeiro da combinação, se o valor for zero (o grupo foi usado), então fixamos um resultado positivo para o grupo, mas se o valor não for zero, então o grupo é bloqueado - multiplique o resultado por -1, então soma os valores para cada grupo. A idéia é que o grupo com mais penalidades quando bloqueado é o pior grupo do agregado, e lá eles podem, é claro, ser classificados para mais pesquisas.

Aqui está como se parece a acumulação de indicadores no gráfico

Claro que a forma das curvas depende do algoritmo de combinação, como todos têm o mesmo número de zeros e uns, o resultado final ainda é justo. E é como se segue - na tabela abaixo.



A tabela mostra que a desactivação dos grupos 1, 8 e 9 tem um bom efeito na melhoria do resultado financeiro.

Vamos ver a combinação do melhor resultado financeiro



E agora, a combinação do pior resultado



Em geral, o método de estimativa funcionou - o melhor resultado tem o grupo 3,4,5,7 desbloqueado e o pior bloqueado, enquanto a situação é quase como no pior caso.

Conclusão - esta abordagem tem direito à vida e pode identificar de forma agressiva grupos de preditores negativamente influenciados.

Há duas maneiras de proceder: ou encontrar a razão de tais maus resultados dividindo os grupos negativos ou dividir os grupos positivos e tentar descobrir onde estão os preditores mágicos que dão bons resultados. Por outro lado, podes ir por dois caminhos...

As dez melhores e piores combinações:

E temos de ver o que acontece com o outro alvo...

E aqui está outro gráfico - mostra claramente. quanto mais decisões certas (Proc_All - delta de decisões certas/ erradas em relação a todas as decisões (zeros e umas no total)), maior é o lucro, especialmente se forem entradas comerciais correctas (Proc_1_V02) em relação a todas as entradas.


É uma lata, fácil de ler, mas o significado é impossível de compreender - o jogo de palavras ou uma figura de linguagem está para além da minha compreensão... i mais a sugestão de Maksim para um artigo :)

Quanto a ligar EAs à consola Python, já ofereci o meu próprio motor que permite enviar e executar blocos de código Python em tempo real a partir do MQL, funciona mesmo no testador.

 
Ivan Negreshniy:

É apenas uma lata, é fácil de ler, mas é impossível perceber o significado - jogo de palavras ou uma figura de linguagem que me ultrapassa... Eu acrescento a sugestão de Maksim sobre o artigo:)

Quanto à ligação de EAs à consola Python, já sugeri o meu próprio motor, que permite enviar e executar blocos de código Python em tempo real a partir do MQL, mesmo no tester.

E você diz artigo - se eu não consigo expressar um pensamento simples, então que tipo de artigo é este...

A questão é que ao construir uma árvore é usado o princípio ganancioso, que impede as relações lógicas dos preditores, inicialmente divididos em dois grandes grupos (você entende como uma árvore de decisão é construída, certo?), de modo que o modelo pode ser melhor em menos preditores, tanto por esta razão, como por causa da verificação de mais combinações de preditores para o mesmo intervalo de tempo, mas isso em menor escala.

Faça uma pergunta específica se a minha verborreia não revelar o significado das palavras que estão à sua frente.

 
Aleksey Vyazmikin:

E você diz artigo - se não consigo expressar um simples pensamento, que tipo de artigo é...

A questão é que o princípio da ganância é utilizado na construção da árvore, o que impede o surgimento de ligações lógicas de preditores, inicialmente divididos em dois grandes grupos (você entende como uma árvore de decisão é construída, certo?), de modo que o modelo pode ser melhor em menos preditores, tanto por este motivo, como por causa da verificação de mais combinações de preditores no mesmo intervalo de tempo, mas isso em menor escala.

Faça uma pergunta específica se a minha verborreia não revelar o significado das palavras que estão à sua frente.

Uma expressão superficial do pensamento em um fórum e a publicação de um artigo são gêneros diferentes.

Neste tópico, o quanto já foi discutido, mas não há nenhum uso e nenhum resultado prático.

E não faz sentido discutir tais questões, especialmente as fundamentais como a estrutura em árvore.

É melhor escrever artigos e/ou código - para comparar a eficácia dos modelos de IM, bibliotecas usadas, testar e monitorar os Expert Advisors...

 
Ivan Negreshniy:

Fazer uma breve expressão de pensamentos em um fórum e publicar um artigo são gêneros diferentes.

Basta olhar para este ramo, o quanto já foi discutido, mas não há nenhum efeito e nenhum resultado prático.

E não faz sentido discutir tais questões, especialmente as fundamentais como a estrutura em árvore.

É melhor escrever artigos e/ou código - para comparar a eficácia dos modelos de IM, bibliotecas usadas, para testar e monitorar os Expert Advisors...

Há artigos sobre o MOE, onde tudo é cientificamente substanciado, mas aqui é mais provável ou os iniciantes podem fazer perguntas, ou discutir algumas ideias para tentar. Em geral, o artigo deve ser escrito quando você já está confiante nos resultados de suas ações, eu estou tão longe disso.

 

Ontem escrevi sobre os diferentes indicadores financeiros ao usar diferentes grupos de preditores, dizendo que às vezes não é racional colocar tudo na mesma pilha. Nesse lançamento, usei um indicador, como lucro, para selecionar o significado dos grupos. Hoje, atento à pergunta de Maxim, decidi olhar para os resultados do modelo com uma amostra de teste (antes só tinha olhado para a amostra de teste), fiz as mesmas manipulações e fiquei desapontado - o significado dos grupos tinha mudado de cabeça para baixo - como é que, pensei eu... Quando comparei os resultados das duas amostras, ficou claro que o critério do lucro puro não era adequado - tive de procurar outras formas de resolver o problema.

Então eu tive uma ideia: e se eu não ficar ganancioso e considerar como um bom resultado a selecção dos modelos que dão maior lucro no agregado do que o lucro médio de todos os 512 modelos? Eu decidi procurar o melhor indicador que o fizesse. A metodologia é simples, usamos uma amostra de teste para determinar o valor médio do índice, depois verificamos a variante de cada modelo - se for maior que a média, será 1 e se for menor, será 0 (eu fiz isso em Excel e cálculos intermediários podem ser úteis para entender), depois fazemos o mesmo com a amostra de teste e comparamos os resultados das duas amostras, obtendo assim estatísticas que mostram se o índice pertence a um grupo (acima da média ou abaixo). Depois disso, também olhei quanto lucro cada indicador faz na amostra teste, dividindo a amostra teste de acordo se ela é maior que o valor médio ou menor que o valor médio, mantendo o lucro médio.

Temos um resultado interessante.



A tabela mostra que a selecção por lucro (FinRez) deu a pior percentagem de correspondência entre as duas amostras e, além disso, ao filtrar "abaixo da média" (a coluna com o número "0") este grupo incluiu modelos mais rentáveis na amostra de teste do que o grupo que apresentou resultados no teste acima da média. Se você pensar nisso, faz sentido, porque o treinamento é baseado em classificação, não em regressão, e se eu tiver um conjunto de ganhos na estratégia, então o stop loss é flutuante, o que irá distorcer os resultados mesmo com o mesmo número de sinais corretamente classificados. Se você olhar para os outros indicadores, seu poder de previsão é muito maior, ou seja, significa que a tendência em média se mantém para o modelo, seja na amostra de teste ou na amostra de exame. Até agora decidi parar no indicador Proc_1_V01 - é a percentagem de unidades corretamente classificadas do alvo de todas as unidades da amostra, este indicador mostra uma taxa muito alta de preservação da sua relação, digamos, no espaço bidimensional (acima / abaixo da média) - 87,3%, o que é muito bom na minha opinião, mais a divisão da amostra pelo seu método dá aproximadamente o mesmo lucro médio, e até ligeiramente acima da média - 1488. Então acontece que temos mais hipóteses de um bom resultado financeiro quando seleccionamos modelos por este indicador, ou estou a perder alguma coisa?

Até agora, decidi rever os grupos tendo em conta não FinRez(profit) mas Proc_1_V01, a metodologia permanece a mesma e o resultado é bastante atractivo


A significância dos grupos preservou sua consistência na amostra teste, bem como na amostra teste, com exceção do grupo 7, em contraste com a situação com a definição do grupo pelo indicador - o resultado financeiro, fornecido abaixo na tabela.



A conclusão que aqui chego é que a estabilidade dos valores absolutos mais importantes do lucro, que podem ser mais provavelmente aleatórios.

Eu também vou adicionar um gráfico onde você pode ver como o lucro é distribuído por amostras (reduzido a 100% em relação ao teste e exame, respectivamente) - no lado esquerdo são filtrados indicadores, e no lado direito são tomadas, isto se você aumentar o valor médio do indicador Proc_1_V01 pelo coeficiente 1,25.

E isto é para comparação - se fizermos a selecção por ganhos - a densidade aumentou, mas também temos uma cauda gorda de 20% a -15%, o que não é bom.

Em suma, precisamos pensar em um indicador que defina a tendência no seu melhor.

Mas ao combinar os dois indicadores e adicionar filtragem por porcentagem de lucro ao Proc_1_V01 - >20% - pois há muitas perdas a menos, e <80% porque os valores extremos são frequentemente acidentais, podemos obter uma imagem mais satisfatória.


Razão: