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

 
Vizard_:
Yur, faça uma versão normal do programa (ou atualizado) para pessoas)))

1.Deixe-o ler arquivos padrão deste tipo - cabeçalho (com e sem aspas), dados, delimitadores deixam-no comer zpt, point.zpt, tabulação. Exemplo -

"Date";"V1";"A77";"V23A";"Целевая"
01.01.2000;4.999995E-03;1.499891E-03;-2.000213E-03;-5.000234E-03;1

2.Deixar apenas 10 entradas serem utilizadas para o modelo, mas tornar possível carregar um monte delas, então
em uma aba separada, ou definir tampas (você seleciona as entradas), ou então.

3. sem normalização! (ou desactivada), porque se os dados estiverem inicialmente centrados a 0, após a conversão
x-x.min/....(ou o que você tiver) - voar para longe)))

4. jogue fora a aleatoriedade (ou alternável), deixe-a apenas dividir os dados em duas partes, conta em ordem e resultados % de previsões de sucesso para 1 (para 0 não)

5.fez a importância dos inputs - bom!

6.Deixe, além da fórmula que é saída, sair o total!, ou seja, agora

duplo x2 = 2,0 * (v5 + 1,0) / 2,0 - 1,0;
dupla decisão = -0,2632437547312642 -0,2634178652535958 * x2
+ 0.05267978803936412

nós temos que...

Nome alvo = -0,2632437547312642 -0,2634178652535958 * inserir construção x2= (2,0 * (v5 + 1,0) / 2,0 - 1,0)
+ 0.05267978803936412

nós temos -

Nome alvo = -0,2632437547312642 -0,2634178652535958 * (2,0 * (v5 + 1,0) / 2,0 - 1,0)
+ 0.05267978803936412

Vais ter um dispositivo um pouco utilizável para testes rápidos. Então você ainda pode inserir etc, simples (não ganancioso)
algoritmos, com uma escolha... Caso contrário, a ferramenta é inútil. Enquanto o ficheiro está a ser editado, isto e aquilo... É mais fácil usar outra coisa...
Onde está a versão 7?
Não... Eu gosto, é bastante robusto. Então 100 pontos, Yura.
 
СанСаныч Фоменко:

Mais ou menos, mas não há tempo e capacidade intelectual suficientes.

É preciso começar com uma variável-alvo e, em seguida, selecionar preditores para ela e, de alguma forma, verificá-los novamente com a matemática. De qualquer forma, é um processo doloroso e não consigo formalizá-lo.

É muito fácil de entender. Eu sei. Fiquei acordado a noite toda pensando nisso. Veja, criamos modelos baseados em predicados para o resultado IDEAL. Conseguimos 50-60% de generalização em casos raros. Fazer a correspondência entre as entradas e o resultado IDEAL não é fácil, se não impossível. Mas e se o RESULTADO NÃO for IDEAL? E se permitirmos erros que levem a 100% de generalização??? Assim, saberemos o que os dados de entrada são capazes de fazer e, se esse resultado NECESSÁRIO ganhar (mesmo com erros), ele terá o direito de viver no futuro. No início, achei que precisava de uma otimização dupla, do próprio modelo e da variável de saída. Mas então me dei conta. Por que esses atritos? Porque se o modelo for treinado com 60% de generalização, então, substituindo as fórmulas no indicador e obtendo sinais nas amostras de treinamento e teste, obteremos o resultado no qual o sistema funciona a 100%, ou seja, se obtivermos sinais nas amostras de treinamento e teste e alterarmos a variável de saída de acordo com esses sinais, obteremos os mesmos 100% de treinamento. Daí a conclusão. Tendo obtido vários modelos com 50-60% de generalização, escolhemos o modelo que ganhou (funcionou) nas seções de treinamento e teste. Ele diz que, em geral, os principais sinais que ganhou (aqueles que trouxeram lucro suficiente) e os sinais em que se fundiu não foram muito pouco lucrativos (compartilhe seu sorriso, e ele voltará para você mais de uma vez), a principal coisa que ganhamos no final do período. Então é assim.......
 
Vizard_:
4. remova a aleatoriedade (ou desative-a), deixe que ele apenas divida os dados em duas partes, conte em ordem e produza a porcentagem de previsões bem-sucedidas para 1 (não há necessidade de 0).

Se estiver tentando usar o jPrediction para forex, esse é provavelmente o principal item a ser adicionado. Há muitos modelos que podem dividir os dados aleatoriamente em duas partes, treinar na primeira parte e mostrar bons resultados na segunda parte também. Mas a maioria desses modelos será ineficaz em novos dados. Não há dependências constantes no Forex, bons resultados em uma amostra de teste aleatória não garantem bons resultados em novos dados. A única maneira de ter certeza de que um modelo é adequado para o mercado de câmbio é fazer um teste valk forward:

O modelo deve mostrar boa capacidade de previsão nos dados marcados em vermelho. Agora, na jPrediction, esse teste precisa ser feito manualmente, reinserindo os dados para cada caso de teste, o que não é bom para um trabalho sério.
E concordo que é melhor mostrar a estimativa somente para os dados de teste do que o total para treinamento + teste.
Todas as estimativas que a jPrediction fornece agora são inadequadas para forex e apenas enganosas.

A propósito, aqui está como fazer o valk forward no pacote caret para R:

http://topepo.github.io/caret/splitting.html (seção Divisão de dados para séries temporais)

library(caret)
caretObj <- train(x = trainData[,1:(ncol(trainData)-1)],
                  y = trainData[,ncol(trainData)],
                  trControl = trainControl(method = "timeslice", initialWindow=1000, horizon=300, fixedWindow=TRUE),
                  verbose = TRUE)

O modelo será treinado nos primeiros 1.000 exemplos e, em seguida, testado nos exemplos 1001-1300. Em seguida, ele será deslocado para 300, treinado em 301-1300, testado em 1301-1600 e assim por diante, até que os exemplos de treinamento se esgotem.

 
Vizard_:
Yur, faça uma versão normal do programa (ou atualizado) para pessoas))))

1.Deixe-o ler os arquivos padrão deste tipo - cabeçalho (com ou sem vírgulas invertidas), dados, delimitadores, deixe-o acelerar zpt, point.zpt, tabulação. Exemplo -


2.Pode usar apenas 10 entradas para o modelo, mas torna possível carregar uma grande quantidade delas, então
Em uma aba separada, você pode colocar marcadores (você seleciona as entradas) ou algo mais.

3. sem normalização! (ou desactivada), porque se os dados estiverem inicialmente centrados a 0, após a conversão
x-x.min/....(ou o que você tiver) - voar para longe)))

4. jogue fora a aleatoriedade (ou alternável), deixe-a apenas dividir os dados em duas partes, conta em ordem e resultados % de previsões de sucesso para 1 (para 0 não)

5.fez a importância dos inputs - bom!

6.Deixe, além da fórmula que é emitida, deixe-a emitir o pleno!, isto é, agora


7. Onde está a versão 7?
  1. A questão é que a vírgula no Excel é usada para separar a parte inteira de um número da parte fracionária. Se eu adicionar mais delimitadores, aqueles que editarem seleções em diferentes aplicações não serão capazes de editá-las sem dançar mais em jPrediction. Isto é, no momento tudo é mais ou menos compatível com as folhas de cálculo. No momento o analisador só é implementado para arquivos CSV e é feito sob medida para planilhas. Mas o jPrediction é construído em OOP e é possível estender a interface para outros formatos.
  2. O segundo ponto é que o jPrediction não tem e nunca terá configurações adicionais. O trabalho do usuário no jPrediction é pegar uma amostra pronta e pressionar F8 para obter um modelo ou mensagem "Garbage in, Garbage out" em um período de tempo razoável. Se você gosta de se preocupar com a aprendizagem de algoritmos, programas de ajuste, projetar arquitetura de rede, mas não pesquisar atividade em termos de selecionar bons dados para a tarefa, deixe-os usar outros pacotes ML. Existem muitos desses pacotes agora, e você pode passar o resto de sua vida cavando neles. O ponto principal da aprendizagem da máquina é que a generalização do modelo depende apenas da qualidade dos dados da amostra, não dos algoritmos e suas configurações. Então, você deve procurar por problemas na amostra, não tentar ajustar algo no jPrediction.
  3. Ver item 2. 2.
  4. Ver parágrafo. 2
  5. -
  6. A saída ali não é uma fórmula, mas um código para portar o modelo para outras aplicações. No momento o código para portar para aplicações Java está implementado. Mais tarde está previsto portar o código do modelo para MQL. Este código deve ser tão conciso quanto possível, e não deve ser muito extenso. Portanto, todas as coisas desnecessárias foram removidas, e tudo o que se repete com freqüência é colocado separadamente.
  7. O site do projeto está em jprediction.com e há também um item de menu "Download" para baixar as versões mais recentes.

Se alguém não gosta muito de algo no jPrediction, o projeto é aberto com Código Aberto sob a licença GNU GPL e fazer garfos a partir dele, mudando e modificando algo lá, não só não é proibido, como até certo ponto é bem-vindo.

 
Dr. Trader:

Se tentar usar o jPrediction para forex, isto é provavelmente a coisa principal a acrescentar. Existem muitos modelos que podem dividir os dados aleatoriamente em duas partes, depois treinar na primeira, e mostrar bons resultados também na segunda parte. Mas a maioria destes modelos será ineficaz em novos dados. Não há dependências constantes no Forex, bons resultados em uma amostra de teste aleatória não garantem bons resultados em novos dados. A única maneira de ter certeza de que um modelo é adequado para forex é fazer um teste de roll forward:

O modelo deve mostrar boa capacidade de previsão nos dados marcados em vermelho. Agora no jPrediction tal teste tem de ser feito manualmente, reentrando os dados para cada caso de teste, não é bom para um trabalho sério.
E eu concordo que é melhor mostrar uma pontuação apenas para dados de teste do que um total para treinamento+teste.
Todas as notas que a jPrediction dá agora são inadequadas para forex, e apenas enganosas.

A propósito, aqui está como o roll forward é feito no pacote de caretes para o R:

http://topepo.github.io/caret/splitting.html(seção Divisão de Dados para Séries Temporais)

O modelo será treinado nas primeiras 1000 amostras, depois testado nas amostras 1001-1300. Depois mude para 300, treine para 301-1300, teste para 1301-1600, etc. até que os exemplos de treinamento se esgotem.

Super informação. Obrigado!
 
Dr. Trader:

Todas as estimativas que a jPrediction agora está dando são inadequadas para forex, e apenas enganosas.

São alegações infundadas, ou seja, o que é comumente chamado de besteira. Para demonstrar a eficácia do Walk Forward, por favor forneça resultados comparativos de modelos derivados em jPrediction e modelos derivados após o Walk Forward, de tal forma que possam ser cruzados para verificar a "abundância". Se tais resultados confirmarem suas palavras, então faria sentido substituir o algoritmo de teste atualmente implementado no jPrediction por Walk Forward.

Tenho encontrado repetidamente que ideias aparentemente "óbvias", após implementação e testes por experiência, acabam por ser "vazias". Apenas uma pequena parte das ideias é eficaz e muitas vezes só depois de uma edição adicional com um "ficheiro". Isto porque faltam os detalhes das ideias. E o diabo está nesses mesmos detalhes.

Linus Torvald (criador do kernel do Linux) nunca se cansa de repetir: "Mais cedo ou mais tarde a teoria encontra a prática. E a prática é sempre o critério da verdade. Sempre!".

Um problema adicional com o Walk Forward é que temos muitos modelos em cada etapa. Qual destes modelos deve ser mantido como modelo de trabalho e por que critérios deve ser selecionado?

 
Yury Reshetov:

Estas são alegações não substanciadas, ou seja, o que é comumente conhecido como besteira. Para demonstrar a eficácia do Walk Forward, por favor forneça estudos comparativos dos modelos jPrediction e post-Walk Forward, para que possam ser cruzados para verificar a "perspicácia". Se tais resultados confirmarem suas palavras, então faria sentido substituir o algoritmo de teste atualmente implementado no jPrediction por Walk Forward.

Tenho encontrado repetidamente que ideias aparentemente "óbvias", uma vez implementadas e testadas pela experiência, acabam por se revelar "vazias". Apenas uma proporção muito pequena de ideias é eficaz, e muitas vezes só depois de mais revisões "arquivadas". Isto porque faltam os detalhes das ideias. E o diabo está nesses mesmos detalhes.

Linus Torvald (criador do kernel do Linux) nunca se cansa de repetir: "A teoria encontra a prática mais cedo ou mais tarde". E a prática prova sempre ser o critério da verdade. Sempre!".

Um problema adicional com o Walk Forward é que temos muitos modelos em cada etapa. Qual destes modelos deve ser mantido como modelo de trabalho e por que critério deve ser selecionado?

Não há necessidade de brigar. Estamos trabalhando em um tema de pesquisa muito complexo. Há muitas suposições. E estes pressupostos levam ao excesso de aprendizagem e de amostragem.

Duas regras simples: engana o mercado, não te enganes a ti próprio.

O Walk Forward é, claro, um bom método. Mas os principais parâmetros ali são a profundidade de aprendizagem e a duração do teste. Ao mesmo tempo (!!!) se estes parâmetros forem ajustados de tal forma que o resultado na posição avançada se torne melhor, vamos sobretreinar o Walk Forward! Ou seja, num grande pedaço, fazemos repetidamente Walk Forward Optimization. Em outro trecho não superlativo, tentamos os melhores parâmetros do Walk Forward no "treino" e corremos outro lobo completo para a frente, mas faça-o uma vez. Se o resultado for bom, então o modelo está captando as dependências. Se o resultado for ruim, então nós simplesmente reciclamos o Walk Forward em um modelo não tão bom.

Há o mesmo problema com testes únicos em uma amostra atrasada. Estou a trabalhar nisso agora: a libertar os meus resultados do sobretreinamento. Os resultados da validação cruzada devem estar correlacionados com a amostra diferida para os testes finais. Dito isto, a selecção do melhor modelo por validação cruzada dará os melhores resultados aproximados fora da amostra. Caso contrário - se não houver correlação ou correlação negativa - temos um modelo inadequado para forex que precisa ser mudado.

 
Yury Reshetov:

Estas são alegações não fundamentadas, ou seja, o que em linguagem comum é chamado de besteira. Para comprovar a eficácia do Walk Forward, apresente os resultados dos estudos comparativos dos modelos jPrediction e post-Walk Forward de uma forma que possa ser cruzada para verificar a "viscosidade". Se tais resultados confirmarem suas palavras, então faria sentido substituir o algoritmo de teste atualmente implementado no jPrediction por Walk Forward.

Tenho encontrado repetidamente que ideias aparentemente "óbvias", uma vez implementadas e testadas pela experiência, acabam por se revelar "vazias". Apenas uma proporção muito pequena de ideias é eficaz, e muitas vezes só depois de mais revisões "arquivadas". Isto porque faltam os detalhes das ideias. E o diabo está nestes mesmos detalhes.

Linus Torvald (criador do kernel do Linux) nunca se cansa de repetir: "A teoria encontra a prática mais cedo ou mais tarde". E a prática prova sempre ser o critério da verdade. Sempre!".

Um problema adicional com o Walk Forward é que temos muitos modelos em cada etapa. Qual destes modelos deve ser mantido como modelo de trabalho e por que critério deve ser selecionado?

Com todo meu respeito a você, Reshetov, cabe aos autores de bicicletas provar seu lugar sob o sol, incluindo sua terminologia como "generalizabilidade". A conveniência da posiçãodo Dr. Trader está precisamente no fato de que todas as provas necessárias tanto da teoria como da verificação prática por milhões de usuários das idéias que ele expressa foram feitas diante dele, muitas vezes há muitos anos. Ele, por outro lado, simplesmente dá exemplos concretos de uso. E a correção do posto em discussão é evidente tanto intuitiva quanto teoricamente.
 
Alexey Burnakov:

Não vale a pena discutir sobre isso.

Eu concordo. Mas isto requer a minimização do número de acusações não substanciadas no fio. A melhor opção é dar os resultados de estudos comparativos com a possibilidade de dupla verificação.

Alexey Burnakov:

Estamos trabalhando em uma pesquisa muito complexa.

Alguns estão a trabalhar e outros estão a mexer os polegares sem provas (não apontemos o dedo).

Alexey Burnakov:

Não vale a pena lutar.

Eu concordo.

AlexeyBurnakov:

Há aqui muitas suposições. E estes pressupostos levam ao sobre-aprendizado e à desvalorização da amostra.

Não podes pôr suposições no pão e pô-las no teu bolso. Assim, tudo deve ser verificado empiricamente, em vez de fazer suposições não comprovadas, de modo a não pisar o ancinho do sobretreinamento e da queda fora da amostra.


AlexeyBurnakov:

O Walk Forward é, claro, um bom método. Mas os principais parâmetros ali são a profundidade de aprendizagem e a duração do teste. Ao mesmo tempo (!!!!) se abordarmos estes parâmetros de tal forma que o resultado na pista dianteira se torne melhor, iremos sobretreinar o Walk Forward! Ou seja, num grande pedaço, fazemos repetidamente Walk Forward Optimization. Em outro trecho não sobreposto, tentamos os melhores parâmetros do Walk Forward em "treinamento" e o executamos mais uma vez. Se o resultado for bom, então o modelo pega as dependências. Se o resultado for ruim, então nós simplesmente reciclamos o Walk Forward em um modelo não tão bom.

Há o mesmo problema com testes únicos em uma amostra atrasada. Estou a trabalhar nisso agora: a libertar os meus resultados do sobretreinamento. Os resultados da validação cruzada devem estar correlacionados com a amostra diferida para o teste final. Dito isto, a selecção do melhor modelo por validação cruzada dará os melhores resultados aproximados fora da amostra. Caso contrário - se não houver correlação ou negativo - temos um modelo inadequado para forex que precisa ser mudado.

O resultado final é que todos os métodos têm vantagens e desvantagens. Os pressupostos exageram os méritos e desconsideram os inconvenientes.

Um ponto ainda maior é que nenhum método lhe permite seleccionar modelos de acordo com o critério da melhor qualidade, e todos os métodos seleccionam de acordo com o princípio da rejeição - filtrando apenas os conscientemente inadequados. Nenhum método no ML pode calcular a potencial adequação do que resta após a rejeição.

Especialmente em ambientes não estacionários. É possível selecionar os modelos aparentemente mais adequados em termos de generalizabilidade, mas amanhã algum chefe do Banco Central em uma reunião peida alguma coisa e todos os modelos vão por água abaixo.

 
Yury Reshetov:


A questão é que todos os métodos têm vantagens e desvantagens. Os pressupostos exageram os méritos e desconsideram os deméritos.

Um ponto ainda maior é que nenhum método seleciona modelos de acordo com o melhor critério de qualidade, e todos os métodos selecionam de acordo com o princípio da rejeição - filtrando apenas o que se sabe ser inapropriado. Nenhum método no ML pode calcular o valor potencial do que resta após a rejeição.

Ainda mais em ambientes não estacionários. Parece possível selecionar os modelos mais adequados em termos de generalidade, mas amanhã algum chefe do Banco Central fará um peido e todos os modelos irão pelo cano abaixo.

Assim é. Só a título experimental. Você pode entender se uma seleção de modelo (em treinamento + testes) foi melhor ou não aplicando este modelo fora da amostra. Você pode fazer isso para diferentes modelos. Quando a seleção de um bom modelo na amostra dá um bom resultado fora da amostra - significa que o modelo é adequado para o problema escolhido.