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

 
fxsaber #:

Eu o criei para minhas próprias tarefas e compartilhei o código de trabalho. Qualquer pessoa que precise dele poderá dar uma olhada.

Onde posso ver o código final?

 

Alguém já tentou trabalhar com "outliers"? E não estou falando de outliers como um erro, mas de eventos raros.

É engraçado, mas descobrimos que, em algumas cadeias de amostras, os outliers são registrados em mais de 50% dos preditores....

Esses valores atípicos entram nos modelos - muito prontamente, pelo que parece.

Portanto, parece que não é apenas para NS que isso é crítico....

 
fxsaber #:

Eu não faço comparações, eu forneço um código que cada um pode medir em seu próprio caso.

O comprimento da cadeia de 100 é o comprimento do padrão. Você provavelmente não precisa de mais do que isso.

15.000 amostras são limitadas pela memória devido ao tamanho quadrático da matriz de correlação. Quanto mais amostras, melhor. É por isso que escrevi um programa caseiro em que pode haver um milhão delas.

Não tenho desejo nem tempo para fazer uma comparação objetiva. Eu o criei para minhas próprias tarefas e compartilhei o código de trabalho. Quem precisar dele, o verá.

Variantes de aceleração - a matriz de saída deve ser armazenada em uchar. Como regra, alteramos as porcentagens em incrementos de 1% e observamos algo. uchar - apenas até +- 128. Você pode modificar seu autodesenho para uchar e também para alglib, o código está disponível. As matrizes totais podem ser 8 vezes maiores com a mesma memória.

 
Aleksey Vyazmikin #:

Alguém já tentou trabalhar com "outliers"? E não estou falando de outliers como um bug, mas sim de eventos raros.

É engraçado, mas descobrimos que em algumas cadeias da amostra o outlier é corrigido em mais de 50% dos preditores....

O fato de esses valores discrepantes serem incluídos nos modelos é bastante variável, como se vê.

Portanto, parece que não é apenas para NS que isso é crítico....

Cisnes brancos/pretos... fxsaber escreveu sobre eles em seu blog. Tive essas variantes entre muitas variantes: negociando por cerca de uma semana a cada dois anos. Em geral, o especialista fica sentado e espera pelo movimento. Mas esse é um desempenho ideal no testador. Na vida real, os deslizes (que são enormes durante o movimento) podem arruinar tudo.

 
Forester #:

Cisnes brancos/pretos..... fxsaber escreveu sobre eles em seu blog. Entre muitas variantes, tive a seguinte: negociação por cerca de uma semana a cada dois anos. Em geral, o especialista se senta e espera pelo movimento. Mas esse é um desempenho ideal no testador. Na vida real, os deslizes (que são enormes durante o movimento) podem arruinar tudo.

Tentei remover as linhas da amostra em que há muitos valores discrepantes.

E o treinamento mudou radicalmente.

Se antes, no teste, havia bons resultados, em média, no positivo, e no exame - quase todos no negativo - isso em 100 modelos, então a limpeza dos outliers alterou o resultado - os resultados no teste se deterioraram muito (lucro médio próximo de zero), e no exame, ao contrário - muitos modelos se tornaram positivos.

Ainda não estou pronto para dizer que isso é uma regularidade, tentarei verificar isso em outras amostras.

Além disso, a questão da melhor forma de determinar o outlier ainda está em aberto para mim. Agora, considero apenas até 2,5% para cada lado, desde que as classificações não ultrapassem esse limite.

 
Em geral, a sensação é de que há um ciclo de alguns anos após o treinamento, no qual os modelos começam a encontrar alguns padrões repentinamente em novos dados.
 
Aleksey Vyazmikin #:

Tentei remover as linhas da amostra em que há muitos valores discrepantes.

E o treinamento mudou radicalmente.

Se antes, no teste, havia bons resultados em média positivos e, no exame, quase todos negativos, isso a partir de 100 modelos, então a limpeza dos outliers mudou o resultado: os resultados no teste ficaram muito piores (lucro médio próximo de zero) e, no exame, pelo contrário, muitos modelos ficaram positivos.

Ainda não estou pronto para dizer que isso é uma regularidade, mas tentarei verificar em outras amostras.

Além disso, a questão da melhor forma de determinar o outlier ainda está em aberto para mim. Agora, considero apenas até 2,5% para cada lado, desde que as classificações não ultrapassem esse limite.

Se você pegar apenas 2,5% (ou outro), o número de outliers dependerá da distribuição, e isso não está certo.

É melhor pegar um quantil com 100 parcelas e não remover antes de 1% e depois de 99%, mas substituir por valores de 1% e 99%. Você não pode excluir nada.

 
fxsaber #:
O NumPy parece ter um algoritmo diferente do ALglib, já que seu desempenho é muito diferente. Mas está claro que em toda a enorme comunidade Python havia algum algoritmista muito forte que dedicou uma quantidade razoável de tempo para estudar essa questão.

O código-fonte está aberto, você pode dar uma olhada. A função para calcular a correlação, no lado direito, tem [source]; depois de clicar nela, você será levado ao código. Estamos interessados nas linhas 2885-2907. Na linha 2889, a covariância é usada; depois de clicar em cov, todas as menções de cov no código aparecerão à direita; depois de clicar na linha com def cov... saltará para a função de covariância, e assim por diante. Linguagem semelhante ao C do MQL, todas as linguagens semelhantes ao C são cerca de 90% similares, você pode entender C#, Java, Python e JavaScript sem muita dificuldade.

 
СанСаныч Фоменко #:

Se você pegar apenas 2,5% (ou outro), o número de excluídos dependerá da distribuição, e isso não está certo.

É melhor pegar um quantil com 100 parcelas e não excluir antes de 1% e depois de 99%, mas substituir por valores de 1% e 99%. Você não pode excluir nada.

Eu considero uma porcentagem dos dados, não uma porcentagem do intervalo. Portanto, se houver muitos dados (são densos), a parada será rápida na escala do intervalo.

Saltar da média e da variação demonstrou ser pouco eficaz.

Apenas explorei a questão da substituição por outros valores (mas fiz isso apenas para quantificação), gostei da opção de substituição por valores aleatórios do subconjunto restante, levando em conta a probabilidade.

 
Aleksey Vyazmikin #:

Eu uso uma porcentagem dos dados, não uma porcentagem do intervalo. Portanto, se houver muitos dados (são densos), a parada será rápida na escala do intervalo.

Saltar da média e da variação demonstrou ser pouco eficaz.

Apenas explorei a questão da substituição por outros valores (mas fiz isso apenas para quantificação), gostei da opção de substituição por valores aleatórios do subconjunto restante, levando em conta a probabilidade.

Os quantis são probabilidades. Portanto, removemos/substituímos dados cuja probabilidade de cair no intervalo é menor que 1%/maior que 99% ou outros valores. Não é possível cortar quantidades - temos distribuições distorcidas e com caudas.

Eles escrevem que o valor de substituição é melhor considerado como uma previsão dessa quantidade pelo MOE. Mas isso parece um pouco exagerado para mim.