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

 
SanSanych Fomenko:

2. Veja o vídeo:

Desculpe, mas o disparate do costume de um estudante de doutoramento sem instrução...

Como se costuma dizer, o que eu compro, vendo por isso. Fizeram-me uma pergunta, dei um vídeo com uma resposta detalhada. O professor não está a ser esperto, ele está a falar da teoria da aprendizagem estatística.

Vê. Vapnik V.N. Teoria da Aprendizagem Estatística. NY: John Wiley, 1998.

SanSanych Fomenko:

1. Uma deterioração perceptível da generalizabilidade, se removermos pelo menos um preditor informativo da amostra.


Acredite em mim, infelizmente isto não prova nada. Além disso, se o conjunto de preditores for mau (muito ruído), este efeito será tanto mais forte quanto mais ruído houver. Isto é explicado de forma muito simples: quanto mais ruído, mais fácil é para o algoritmo encontrar um valor "conveniente".

Como se costuma dizer, para saborear e colorir...

SanSan Fomenko:

Em relação ao seu ficheiro.

1. Não construí 6 modelos de classificação nos seus dados: erro mais de 50%. Se quiser, posso publicar os resultados aqui.

Obrigado pela informação. Os resultados já são claros - uma completa falta deles.

SanSanych Fomenko:

2. A razão para este resultado é que você tem um conjunto muito pobre de preditores - ruído, ou seja, preditores não relevantes para a variável alvo. Os preditores 6, 7 e 8 têm algum poder de previsão, mas muito pouco. Eu não trabalho com tais preditores. Os outros são apenas barulho.

Bem, bem. Sem barulho nenhum tolo é capaz de classificar corretamente. O barulho está lá e em quantidade decente. Também há informações úteis. Aqui estão, por exemplo, os resultados da antiga libVMR 3.01:

/**
* A qualidade da modelagem fora da amostra:
*
* TruePositives: 245
* TrueNegative: 113
* FalsePositivos: 191
* FalseNegative: 73
* Total de padrões em amostras com estatísticas: 622
* Total de erros de entrada fora da amostra: 264
* Sensibilidade de generalização abiliy: 56,19266055045872%
* Especificidade da capacidade de generalização: 60,752688172043015%
* Capacidade de generalização: 16,94534872250173%
* Indicador por Reshetov: 0,1075044213677977

*/

Quer dizer, eu estou quase 17% acima na capacidade de generalização.

O desempenho do novo tipo é visivelmente melhor.

 
Alexey Burnakov:
Use a validação cruzada para pegar o número de componentes. Melhor valor na validação cruzada e, em seguida, verificar o conjunto de validação.

Não saiu bem de novo. Eu teria levado 20 componentes, pois min(trainwinrate. validate1winrate, validate2winrate) é o maior em comparação com outras quantidades de componentes. E eu teria ~55% de resultado na frente, ainda pior do que antes. Saiu um modelo estranho - o percentual de ganho é um pouco mais de 50% (não adequado para forex), a validação cruzada não funciona, a importância dos preditores não pode ser tirada. Só o posso imprimir e pendurá-lo na parede :)


 
Yury Reshetov:

* TruePositives: 245

* TrueNegative: 113
* FalsePositivos: 191
* FalseNegative: 73

Então você tem uma percentagem de 57,6% de vitórias no test.csv, certo? Vou tentar o meu método para peneirar os preditores e treinar o neurónio, amanhã vou relatar os resultados.
 
Dr. Trader:

Não saiu bem de novo. Eu teria levado 20 componentes, pois min(trainwinrate. validate1winrate, validate2winrate) é o maior em comparação com outras quantidades de componentes. E eu teria ~55% de resultado na frente, ainda pior do que antes. Saiu um modelo estranho - o percentual de ganho é um pouco mais de 50% (não adequado para forex), a validação cruzada não funciona, a importância dos preditores não pode ser tirada. Só o posso imprimir e pendurá-lo na parede :)


Se você não tiver dados suficientes, a validação cruzada pode dar maus resultados. A aprendizagem de máquinas envolve dezenas de milhares de observações. Se a validação cruzada for má, significa que o modelo como um todo é assim.
 

Estes são os resultados da minha grande experiência. Devido a um bug no vento, o código foi interrompido e eu não terminei de aprender em todos os personagens. Mas isto é suficiente para mim por agora. Bons resultados no eurusd.

Só mostrei os valores máximos que encontrei sem especificar nenhum parâmetro. Já há um bom resultado. As subtilezas da configuração do GBM ajudam.

 

Ao prever o eurusd com 512 minutos de antecedência, você pode ganhar 1,5 pips por troca, estou correto? E a propagação também é tida em conta? Também é importante conhecer o drawdown máximo para aquele tempo, não faz sentido trocar nem mesmo por 10 pips, se o drawdown para aquele tempo foi todo de duzentos. Para estimar o comércio, seria bom usar o Sharpe Ratio, mas não o vi em R, para começar podemos limitar-nos ao seguinte factor: (lucro final)/(máximo drawdown do capital próprio em todos os tempos).

Por exemplo, suponha que temos um sinal 1. O trader ganhou 1000% durante o ano, mas o seu drawdown máximo foi de 50%. Ao mesmo tempo, o sinal 2 tem apenas 600% de lucro ao longo do ano, mas o drawdown máximo foi de 25%. Pode parecer que o trader 1 é melhor (em termos de lucro), mas na verdade não é, ele apenas arrisca o dobro. O primeiro comerciante tem 1000/50 = 20, o segundo tem 600/25 = 24. Portanto, é melhor se inscrever para o segundo sinal, e dobrar o risco se você quiser arriscar 50% do depósito.

Além disso, na sua experiência, é importante avaliar os riscos. Negociar em um pequeno intervalo pode ser muito mais lucrativo, porque o modelo pode reagir a tempo a picos de preços e ganhar com eles, em vez de esperar por um grande drawdown correndo o risco de pegar um stop loss.

 
Alexey Burnakov:

Colegas, se tiverem tempo, podem fazer-me perguntas sobre o artigo?https://habrahabr.ru/company/aligntechnology/blog/303750/

Porque Habr está em silêncio!

Hubr não é silencioso - Hubr está lendo.
Muitas cartas.
 
Dr. Trader:

Ao prever o eurusd com 512 minutos de antecedência, você pode ganhar 1,5 pips por troca, estou correto? E a propagação também é tida em conta? Também é importante conhecer o drawdown máximo para aquele tempo, não faz sentido trocar nem mesmo por 10 pips, se o drawdown para aquele tempo foi todo de duzentos. Para estimar a troca, seria bom usar o Sharpe Ratio mas não o vi em R, para começar podemos usar o seguinte fator: (lucro final)/(máximo drawdown do patrimônio ao longo de todo o tempo).

Por exemplo, suponha que temos um sinal 1. O trader ganhou 1000% durante o ano, mas o seu drawdown máximo foi de 50%. Ao mesmo tempo, o sinal 2 tem apenas 600% de lucro ao longo do ano, mas o drawdown máximo foi de 25%. Pode parecer que o trader 1 é melhor (em termos de lucro), mas na verdade não é, ele apenas arrisca o dobro. O primeiro comerciante tem 1000/50 = 20, o segundo tem 600/25 = 24. Portanto, é melhor se inscrever para o segundo sinal, e dobrar o risco se você quiser arriscar 50% do depósito.

Além disso, na sua experiência, é importante avaliar os riscos. Negociar num pequeno intervalo pode ser muito mais rentável, porque o modelo pode reagir a tempo aos picos de preços e ganhar com eles, em vez de esperar por um grande drawdown e arriscar-se a apanhar um stop loss.

Sim 1,5 pts com um spread de 1.

Todos os outros indicadores serão avaliados em conjunto: colocarei corujas no mt4 no modelo treinado.

Infelizmente, não posso calcular Sharp e etc. em R, porque tenho 49 amostras aleatórias, que não restauram a sequência de negócios.

Os resultados são dados para 13000 negócios para eurusd em particular .
 
Dr. Trader:
Então a sua percentagem de vitórias no test.csv é de 57,6%, certo? Vou tentar o meu método de peneirar os preditores e treinar o neurónio e relatar os resultados amanhã.

Não o ganho, mas o número de previsões corretas da direção futura dos preços. O classificador produz um de dois valores na amostra de teste: Positivo - é esperado um aumento de preço futuro, Negativo - é esperado um decréscimo de preço futuro. Se predizer uma amostra de teste corretamente, ela será atribuída True. Se estiver errado, é falso.

Sensibilidade da generalização abiliy: 56,19266055045872% - o crescimento futuro dos preços está correcto: 100% * TP / (TP + FP) = 100% * 245 / (245 + 191) = 100% * 245 / 436 = 56,192660550458715%

Especificidade da capacidade de generalização: 60,752688172043015% - previsão correta de queda de preço futuro: 100% * TN / (TN + FN) = 100% * 113 / (113 + 73) = 100% * 113 / 186 = 60,75268817204302%

 
Yury Reshetov:

Não o ganho, mas o número de previsões corretas da direção futura dos preços. O classificador na amostra de teste produz um de dois valores: Positivo - assume-se crescimento futuro dos preços, Negativo - assume-se declínio futuro dos preços. Se predizer corretamente uma amostra de teste, ela será atribuída True. Se estiver errado, é falso.

Sensibilidade da generalização abiliy: 56,19266055045872% - o crescimento futuro dos preços está correcto: 100% * TP / (TP + FP) = 100% * 245 / (245 + 191) = 100% * 245 / 436 = 56,192660550458715%

Especificidade da capacidade de generalização: 60,752688172043015% - previsão correta de queda de preço futuro: 100% * TN / (TN + FN) = 100% * 113 / (113 + 73) = 100% * 113 / 186 = 60,75268817204302%

Yuri, o primeiro julgamento dos teus dados:

método loss_function cv_folds bag_frac modelos_parames AUC_cv accuracy_train accuracy_validate
GBM bernoulli 4 0.4 0.015_|_7_|_70_|_600 0.429659 0.590361 0.50501
GBM bernoulli 4 0.6 0.02_|_5_|_110_|_600 0.485727 0.586345 0.51503

Dois conjuntos diferentes de valores de parâmetros para treinamento. É digno de nota que a AUC está abaixo do rodapé da validação cruzada.

No geral, uma precisão de 51,5% no teste é a melhor que se revelou.

Nem sei como consegues chegar aos 60%.