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

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

Os quantis são probabilidades. Portanto, removemos/substituímos dados cuja probabilidade de cair no intervalo de menos de 1%/mais de 99% ou outras quantidades. Não podemos 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.

A questão é que muitas vezes é difícil determinar a distribuição no autômato.

Muitas vezes, ela será supostamente lognormal, mas isso se deve apenas aos outliers - não há lógica para que seja assim.

E se você pegar um quantil, isso significa cortar todo o intervalo, o que não será suficiente para remover os outliers.


Na segunda amostra, obtive um resultado muito estranho - estava aprendendo rapidamente sem nenhuma manipulação, mas depois de remover as linhas com outliers, o efeito do aprendizado tornou-se quase igual a zero.

Agora, ativei a taxa de aprendizagem lenta. Vou ativá-la durante a noite e ver se isso trará algum resultado.

Caso contrário, verifica-se que todo o processo de aprendizagem é baseado na memorização de outliers, pelo menos com os preditores públicos que usei no experimento.

 
Aleksey Vyazmikin #:

O ponto exato é que muitas vezes é difícil determinar a distribuição em uma máquina automática.

Com frequência, ela será supostamente lognormal, mas isso se deve apenas às emissões - não há lógica para que seja assim.

E se você usar um quantil, isso significa cortar todo o intervalo, o que será insuficiente para remover as exceções.


Na segunda amostra, obtive um resultado muito estranho - ele estava aprendendo rapidamente sem nenhuma manipulação, mas depois de remover as linhas com outliers, o efeito do aprendizado tornou-se quase igual a zero.

Agora, ativei a taxa de aprendizagem lenta. Vou ativá-la durante a noite e verei se isso trará algum resultado.

Caso contrário, verifica-se que todo o processo de aprendizagem é baseado na memorização de outliers, pelo menos com os preditores públicos que usei no experimento.

Executei o modelo até o EA no inverno (publiquei os resultados neste tópico) e obtive o resultado oposto: os erros de classificação, que eram inferiores a 20%, foram capturados por outliers. Como resultado, 80% das previsões corretas foram anuladas por esses erros.

Uma coisa está clara para mim: os outliers devem ser eliminados. E o resultado real do modelo é sem outliers.

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

Eu atualizei o modelo para o EA no inverno (publiquei os resultados neste tópico) e obtive o resultado oposto: os erros de classificação, que eram inferiores a 20%, foram detectados por outliers. Como resultado, 80% das previsões corretas foram anuladas por esses erros.

Uma coisa está clara para mim: os outliers devem ser eliminados. E o resultado real do modelo é sem outliers.

Nas bordas, há claramente uma mudança de probabilidade para alguma classe - e isso não é ruim em si, é ruim que essas observações não sejam suficientes para tirar conclusões estatisticamente significativas.

Portanto, é normal que um tenha mais zeros nos outliers e outro tenha mais uns - isso depende do conjunto de preditores.

Também acontece que, se um outlier for observado de dois lados, um lado estará mais próximo de zeros e o outro de uns.

 
Aleksey Vyazmikin #:

Onde posso ver o código final?

Publiquei tudo neste tópico.

 
Rorschach #:

Os códigos-fonte estão abertos, você pode dar uma olhada. Função para calcular a correlação, no lado direito há uma inscrição [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.

Obrigado. Eu me acalmei um pouco com a algoritmização, vou dar uma olhada quando o entusiasmo voltar.

 
fxsaber #:

Acho que já publiquei tudo neste tópico.

Eu li, é claro, mas, de acordo com a cronologia, Forester encontrou algum erro, você concordou com ele e, em seguida, alguma parte do código foi corrigida.

E, no final, não vi a versão completa do código final aqui. Não quero dizer que você é obrigado a publicar o código, apenas perguntei...

 
Aleksey Vyazmikin #:

Eu li, é claro, mas, de acordo com a cronologia, Forester encontrou algum erro, você concordou com ele e, em seguida, alguma parte do código foi corrigida.

E, no final, não vi a versão completa do código final aqui. Não quero dizer que você seja obrigado a publicar o código, apenas perguntei...

Rápido e linha por linha (corrigido).

Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação.

Aprendizado de máquina na negociação: teoria, modelos, prática e algo-trading

fxsaber, 2023.10.01 09:38

#include <Math\Alglib\statistics.mqh> // https://www.mql5.com/ru/code/11077

const matrix<double> CorrMatrix( const matrix<double> &Matrix )
{
  matrix<double> Res = {};
  
  const CMatrixDouble MatrixIn(Matrix);
  CMatrixDouble MatrixOut;  

  if (CBaseStat::PearsonCorrM(MatrixIn, MatrixIn.Rows(), MatrixIn.Cols(), MatrixOut)) // https://www.mql5.com/ru/code/11077
    Res = MatrixOut.ToMatrix();
  
  return(Res);
}

const matrix<double> CorrMatrix2( const matrix<double> &Matrix )
{
  matrix<double> Res = {};
  Res.Init(Matrix.Cols(), Matrix.Cols());
  
  const CMatrixDouble MatrixIn(Matrix);
  CMatrixDouble Vector(Matrix);
  CMatrixDouble Corr;

  for (int i = 0; i < (int)Matrix.Cols(); i++)
  {
    if (i)
      Vector.SwapCols(0, i);
    
    CBaseStat::PearsonCorrM2(Vector, MatrixIn, MatrixIn.Rows(), 1, MatrixIn.Cols(), Corr);
      
    Res.Col(Corr.Row(0), i);
  }
  
  return(Res);
}
 
fxsaber #:

Rápido e linha por linha (corrigido).

Obrigado!

 
Maxim Dmitrievsky #:

Deixei de lado por enquanto, pois os resultados não são melhores que os do MO, embora o MO também seja ruim em termos de suavidade de equilíbrio

5 minutos, metade do treinamento


não é nada mais do que uma analogia do graal de 4 rosas com uma parada curta.

 
Renat Akhtyamov #:

não é nada mais do que uma analogia de um graal de 4 rosas com uma parada curta.

a analogia de seu fundo de hedge com um saldo negativo.