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

 
Alexey Burnakov:

Há um címico no que estás a fazer.

No entanto, você também deve tentar adiar a amostragem. Isto é um clássico. Trem, Teste, Validação.

E tornar o procedimento ainda mais complicado. Para cada modelo que funciona bem em termos de treinamento e testes, vamos chamar este modelo X, faça a validação dos dados atrasados. Assim você tem uma idéia se está escolhendo ou não o modelo certo, usando apenas treinamento e testes. Faça muitos modelos com parâmetros diferentes, escolha os melhores (10, 100, 1000). Falha. Você vai entender se a sua "melhor" métrica se reflete em dados futuros ou não. Só depois disso é que vai para a batalha.

Se houver muitos valores da mesma variável aleatória, você pode contar intervalos de confiança e, em vez de "valores próximos", operar com "interseção/convergência de intervalos de confiança".
 
mytarmailS:

consegue ver o resultado das negociações de ontem?

E isto é por hoje. Não sem erros, claro, mas no final até....

 
Mihail Marchukajtes:

E isto é por hoje. Não sem erros, é claro, mas no final é bastante equilibrado....

Nada mal, o que são os círculos verdes e o que significam as setas?

 
SanSanych Fomenko:
Se houver muitos valores da mesma variável aleatória, você pode contar intervalos de confiança e, em vez de "valores próximos", operar "interseção/convergência de intervalos de confiança".

SanSan, deixa-me explicar outra vez. E acho que vai ser mais claro para todos.

A tabela abaixo é um registo da experiência. Cada experiência é escrita em uma tabela. Antes da coluna J, há as variáveis. Modelo, treinamento da função de perda, ferramenta, horizonte de previsão, parâmetros do modelo (GBM), parâmetros que não são otimizados no carpete, mas eu os otimizo em loop também: número de faltas válidas cruzadas, número de preditores selecionados para treinamento, randomização para árvore, corte de parte das previsões como entrando na zona cinza de incerteza.

Depois vêm as minhas métricas de qualidade: em treinamento (conjunto de 10 anos), em testes válidos cruzados falham, e em amostras atrasadas. Marquei as colunas mais interessantes a vermelho.

A seguir. Posso mostrar-lhe os melhores modelos que fizeram uma grande vantagem em amostras diferidas. Mas - é um ajuste difícil!

Com dados consistentes e um método de treinamento adequado, eu só espero obter uma relação entre a métrica nas amostras diferidas e a métrica na validação cruzada (teste). Vamos ver o que eu tenho:

Objetivamente - a qualidade dos modelos selecionados na amostra diferida (que emula um período de negociação real) é quase completamente independente da métrica de qualidade no teste (faltas no teste de validação cruzada).

Conclusão, amigos: se eu escolher o melhor modelo de acordo com o seguinte heurístico "o modelo deve ser melhor no teste", eu tenho zero de certeza sobre como o modelo irá se comportar no futuro.

Esta definição estende-se a tal cenário: eu escolho um modelo de acordo com o heurístico "o melhor modelo mostrará boa qualidade numa amostra atrasada"; tal escolha, amigos, também levará à incerteza. Tudo é probabilístico, claro, você pode ter sorte, mas não pode trapacear as estatísticas.

Isso e só isso é o benefício de uma amostragem tardia. Verificação do desempenho do modelo, verificando a heurística de seleção do melhor modelo.

PS: Estou a pensar em como melhorar o resultado. De uma boa maneira, você precisa de uma nuvem oblíqua elíptica. A partir dele você pode tirar comitês da margem direita, etc. e, em média, vai funcionar.

 

Belo kit de ferramentas que você desenvolveu para avaliar a heurística, sólido. Você provou que a maneira como você desenvolveu para treinar o modelo (comitê) não é adequada para forex, mas o que segue?

É necessário encontrar uma maneira de construir um modelo para que haja uma correlação entre os resultados nos próprios dados de treinamento, os resultados no teste e os resultados na amostra pendente.

Tenho uma situação semelhante, por exemplo, estou tentando diferentes formas de pré-processar dados, diferentes pacotes de treinamento/previsão, diferentes funções para avaliar a qualidade da previsão. É tudo importante, e há infinitas combinações de tudo isso. Eu tento me ater à regra da navalha de Occam - quanto menos preditores você precisar e quanto menos parâmetros um modelo tiver, melhor.

 

Também a minha opinião subjectiva é que os seus preditores não podem ser usados para prever os seus valores-alvo. Pelo menos trabalhando com o seu arquivo dat_train_final_experimental1.csv - Eu não posso obter um resultado positivo para a minha função de fitness ao ajustar os parâmetros gbm. Isto é, qualquer que seja o modelo, com quaisquer parâmetros que eu construa - não estou satisfeito com os resultados da validação cruzada. Não posso prová-lo, apenas a minha opinião pessoal, aconselho a tomar mais preditores e tentar diminuir o seu número ao construir um modelo.

Por exemplo, na minha tabela de treinamento há 150 preditores para cada barra, 100 barras no total, o total de 15000 preditores. Então eu uso a genética para procurar por preditores e parâmetros de modelos em busca do melhor resultado da função de aptidão. Desta forma selecciono os preditores, que estão relacionados com os valores alvo e sobre os quais o modelo pode fazer previsões. No final da selecção, só me restam 10-20 preditores. O resultado da função de fitness é necessariamente ligeiramente reduzido para cada preditor usado. Ontem escrevi o código R aproximado da função de fitness aqui no fórum, é mais claro lá.

 
mytarmailS:

Nada mal, o que são os círculos verdes e o que significam as setas?

Os pontos verdes mostram que o sinal será, cada série de pontos verdes termina com um ponto azul ou vermelho, o que significa o sinal Sequents para comprar ou vender de forma correspondente. Bem, as setas são o trabalho do classificador Reshetov, que diz sinal verdadeiro ou falso....

A propósito, a Sequenta é atacha, use-a em seu benefício....

Arquivos anexados:
 
Dr.Trader:

Também é minha opinião subjectiva que os seus preditores não podem ser usados para prever os seus valores-alvo.

Parece que fui capaz de articular isto melhor.

Os resultados de previsão nas próprias amostras de treinamento correlacionam mal, em média, com os resultados nas amostras de teste.

Existe um pacote ForeCA, e tem uma função Omega que estima a "previsibilidade" do sinal. Se estimar 100% - o sinal satisfaz alguns requisitos e é fácil de prever. Uma pontuação de 0% significa que o sinal é apenas ruído e impossível de prever.

Eu ainda tenho sua tabela dat_test_features_experimental.RData, onde a última coluna é o aumento de preço. Por exemplo, a estimativa para eurusd = 0,83% (não 83%, exactamente 0,83%, menos de um). De acordo com ForeCA é impossível prever esta série temporal. Não que eu confie muito neste pacote, mas o seu autor obviamente entende alguma coisa, eu o ouviria.

Omega(dat_test_features[dat_test_features[,109] == "eurusd", 110])

Não me lembro do prazo com que estás a trabalhar, mas se for M1 - há uma boa razão para tentar mais, H1 por exemplo.

 
Dr. Trader,

Eu ouço-te. Eu estou a trabalhar com um horizonte de algumas horas.

Nos minutos a regressão funciona bem, mas falta o MO do ofício. Na hora a diferença absoluta de preço é de cerca de 8 pips. Que se lixe.... Está a ver? Você precisa de uma precisão de 65_70% de adivinhação. E às 9 horas 53-53% é suficiente para dominar a propagação.
 
Dr. Trader:

...

Existe um pacote ForeCA, e tem uma função Omega que avalia a "previsibilidade" do sinal. Se estimar 100% - o sinal satisfaz alguns requisitos e é fácil de prever. Uma pontuação de 0% significa que o sinal é apenas ruído e impossível de prever.

...

O que significa "previsibilidade" neste pacote? Pensei que significava a capacidade de extrapolar (essa é a palavra) valores anteriores (anteriores). Se tomarmos incrementos, então a ferramenta mais ampla aplicável, muito bem trabalhada com muitas nuances: ARIMA, se este modelo não passar, então todo tipo de ARCH. E o pacote ForeCA deve ser comparado com estes modelos.

Em geral, parece-me que a ideia original está perdida. Para mim, a ideia original era que precisávamos de métodos que NÃO dependessem do modelo para determinar a capacidade de cada um dos preditores usados para prever a variável alvo. Certifique-se de fazer isso no(s) preditor(es)/variável alvo nexo. E, quando tivermos feito o rastreio do ruído, utilizamos os modelos ou os seus comités ..... Mas só depois do barulho ter sido eliminado. E o facto de não haver ruído é determinado pela invariância aproximada do desempenho do modelo nas amostras. Não o valor absoluto do erro de previsão mas o facto da igualdade aproximada dos indicadores de desempenho, o que (igualdade) pode ser interpretado como a prova da ausência de sobretreinamento do modelo. A ausência de supertreinamento é tudo para nós. Se o modelo é treinado em excesso num determinado conjunto de preditores, então tudo o resto é um jogo de números. Apenas os modelos que não são requalificados são de interesse.