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

 
Aleksey Vyazmikin:

Sim, as configurações básicas são bem dadas lá, especialmente se você correr em Python imediatamente. Mas isso não é suficiente para mim.

É verdade, Anna Veronica é uma narradora melhor e dança mais.

 
Maxim Dmitrievsky:

O show é verdade, Anna Veronica é uma narradora melhor, e ela também dança.

Não sei, não lhe presto atenção, costumo observá-lo em modo rápido.

Em qualquer caso, há perguntas que requerem uma resposta dos criadores, e eu não sei como perguntar-lhes, em termos de onde perguntar-lhes.

 
Aleksey Vyazmikin:

Não sei, não lhe presto atenção, normalmente vejo-o no bom caminho.

Enfim, há perguntas que precisam de respostas dos criadores, e eu não sei como perguntar-lhes, em termos de onde perguntar-lhes.

no githab provavelmente

 
Maxim Dmitrievsky:

num githab, talvez.

Eles são todos tão falantes de inglês - não sei onde estou :)

 
Aleksey Vyazmikin:

Toda a gente lá é tão falante de inglês - Não sei onde estou :)

parece que precisamos de bombear R em vez de píton. Renat escreveu que em breve haverá uma ligação directa sem muletas.

ou seja, você será capaz de executar catbust em 1 linha a partir do mt5

 
Maxim Dmitrievsky:

parece que precisamos de bombear R em vez de píton, Renat escreveu que em breve haverá um pacote directo sem muletas.

ou seja, o catbust pode ser executado em 1 linha a partir do mt5

Em geral, não fui capaz de executar catbust sob R.... Talvez eu não seja muito habilidoso. Se vai ser empacotado, é bom, mas não vai deixar correr optimização e a velocidade de resposta está em questão...

 

Concluiu um estudo sobre o impacto da divisão da amostra em amostras de treinamento e validação (aquela para a qual o treinamento é interrompido e a seleção do modelo é feita).

A amostra utilizada foi de 2014 a 2018, cada 20% equivale a cerca de 1 ano. A metodologia é a seguinte, pegou a amostra total e começou a aumentar a amostra de validação em 10 por cento, reduzindo a amostra de treinamento em 10 por cento, resultando em 9 conjuntos de amostras. Para cada amostra foi criado um modelo com Semente de 1 a 200, ou seja, um total de 200 modelos por amostra, 1800 modelos no total.

Os testes de modelo foram realizados em uma amostra fixa - 2018, não envolvida em treinamento.

O instrumento é a cola do contrato de futuros Si.

Na tabela abaixo estão os indicadores para julgar os resultados dos modelos - a parte esquerda são indicadores financeiros, como estamos acostumados a ver no terminal, e a parte direita são indicadores sobre o saldo de erro (eu chamo assim - não sei como corrigi-lo, se alguém o usa), ou seja, se o alvo 1 foi determinado corretamente, então +1, se não corretamente, então -1, permite avaliar exatamente a qualidade da classificação sobre toda a amostra. Em verde claro, marquei o melhor desempenho em termos de média.

Abaixo estão os valores métricos dos modelos

Os resultados mostram claramente que o treinamento para 2014 (80%-90%) deu os resultados mais pobres, e a queda de 70% foi significativa, o que sugere não que o tamanho da amostra foi pequeno, mas que os padrões de 2014 quase nunca são atingidos, ou seja, o mercado mudou significativamente, o que significa que teoricamente este período pode ser totalmente retirado do treinamento.

Agora eu uso o seguinte critério para seleção de padrões na amostra do teste (exame)

if(t==2)if (FinRez>1000 && DD_Balans_Proc_DMM<30 && Proc_Max_Balans> 70 && Proc_Min_Balans<30 && Pribolnost_Balans> 10 && ProfitFaktor_Balans>1.2)Filter_03=1;

Aqui estão os dados sobre o número de modelos que satisfazem este critério

Segue-se uma tabela com a selecção de modelos tendo em conta os indicadores das três amostras, de acordo com os seguintes critérios

if(t==0)if (FinRez>10000 && DD_Balans_Proc_DMM<30 && Proc_Max_Balans> 70 && Proc_Min_Balans<30 && Pribolnost_Balans> 10 && ProfitFaktor_Balans>1.2)Filter_01=1;
if(t==1)if (FinRez>3000 && DD_Balans_Proc_DMM<30 && Proc_Max_Balans> 70 && Proc_Min_Balans<30 && Pribolnost_Balans> 10 && ProfitFaktor_Balans>1.2)Filter_02=1;
if(t==2)if (FinRez>1000 && DD_Balans_Proc_DMM<30 && Proc_Max_Balans> 70 && Proc_Min_Balans<30 && Pribolnost_Balans> 10 && ProfitFaktor_Balans>1.2)Filter_03=1;


Aqui devemos ter em conta que o critério de lucro é fixo e o tempo para atingir esse lucro é diferente para conjuntos diferentes (provavelmente, devemos reduzir os números para fazer a comparação correcta).

E que conclusão se pode tirar? Parece que o volume ótimo é 60%-70% da amostra de validação, ou seja, o treinamento deve ocorrer em uma amostra menor do que a validação do modelo. Mas é impossível não enfatizar a desagregação em 30%, aí também o resultado de todos os indicadores não é ruim, e falhas muito próximas de 40% e 50%. Eu não sei o que influencia mais o tamanho da amostra ou o conteúdo e como estabelecer isto...

E qual é a sua opinião sobre os resultados desta experiência, talvez eu esteja a interpretar mal os resultados? Alguma ideia para uma mudança na metodologia ou qualquer outra sugestão para resolver esta questão da proporção de amostras de formação e selecção?

Adicionado:

Em relação às médias de 80%-90%, há muitos zeros (não há sinais de entrada dos modelos) e por causa disso há distorção, isso pode ser visto no indicador StDV_K_Korrekt_Balans

histograma para StDV_K_Korrekt_Balans 90%


histograma para StDV_K_Korrekt_Balans 70%


Histograma para StDV_K_K_Korrekt_Balans 30%

E é assim que os gráficos são (os gifs são clicáveis para não piscar irritantemente)

30%


40%


50%


60%

 

Devo também notar que o treino é sempre feito com dados mais antigos que os dados sobre os quais o controlo do treino é feito - talvez devêssemos trocá-los e ver o que acontece...

O pequeno Recall médio chama a atenção - talvez precisemos de treinar mais modelos, em vez de parar de treinar quando não há melhoria depois de 100 árvores, ou quando não há tantos padrões estáveis como gostaríamos.

Precisamos ver o quanto os modelos se sobrepõem, se o Recall for baixo, há uma chance de que existam modelos com pouca correlação, mas igualmente lucrativos, então eles são ideais para combinar em um só pool.

 
Aleksey Vyazmikin:
E também vou notar que o treino continua sempre com dados mais antigos do que aqueles em que o controlo do treino continua - talvez eles devam ser trocados e ver o que acontece...

Tudo acima é legal e muito informativo, mas "controle de treinamento", o que isso significa???

Ou seja, por exemplo, você treina o sistema com uma amostra de dados a partir de 2014 e depois dá uma amostra a partir de 2015 e quer ver a probabilidade de padrões? Se assim for, então não precisas de trocar nada, está tudo correcto. Só que não vejo aqui nenhum problema se o controlo produzir resultados diferentes dos esperados, será sempre assim.

 

Se a aplicação prática do MO no seu caso for a seguinte, na minha opinião.

Como simplesmente não é realista obter 100% de probabilidade do verdadeiro resultado, então vá por um método simples, por exemplo a razão entre resultados verdadeiros e falsos, se está na região de 50/50, então novamente devemos entender que lucros você obtém com estes resultados, se 50% do lucro é uma média de 100 pontos e os restantes 50% de perdas uma média de 50 pontos, então eu acho que o seu sistema já é adequado para uso prático.