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

 
Mihail Marchukajtes:
Yuri, eu decidi usar o santo dos santos e fazer um graal, mas consegui uma inscrição que previa valores que não podem ser mais do que 10. Isto é uma restrição deliberada ou um limite do algoritmo ???? Porque mais de 10 é extremamente relevante so....

Após 10 pode haver um overflow do tipo int, e tem apenas 32 bits, ou seja, antes do overflow pode conter números que não excedam o valor 2^32=2147483648. É só um pouco mais do que dois biliões. É claro, você pode implementar contadores com maior capacidade de dígitos, mas a velocidade de cálculo será várias vezes mais lenta.

É por isso que o Dr.Trader não pôde executar a libVMR completa reescrita em R - demasiados cálculos e come muita memória.

 
Yury Reshetov:

Após 10 pode haver um overflow do tipo int, e tem apenas 32 bits, ou seja, cabe em números sem um overflow não superior a 2^32=2147483648. É só um pouco mais do que dois biliões. Claro, você pode escrever contadores com maior profundidade de bit, mas a velocidade de cálculo será várias vezes mais lenta.

HMM... É melhor não reduzir a velocidade... Nas versões anteriores era um verdadeiro aborrecimento. ok, 10 então 10, agora é melhor aumentar a qualidade dos insumos e acho que é possível trabalhar....
 
Yury Reshetov:

Após 10 pode haver um overflow do tipo int, e tem apenas 32 bits, ou seja, antes do overflow contém números que não excedem o valor 2^32=2147483648. É só um pouco mais do que dois biliões. Claro que você pode escrever contadores com maior capacidade de dígitos, mas a velocidade dos cálculos vai cair várias vezes.

É por isso que o Dr. Trader não pôde executar a libVMR completa reescrita em R - demasiados cálculos e demasiado consumo de memória.

Deixa-me contar-te uma história. Lembro-me de te ter perguntado sobre cálculos paralelos. Para poder contar mais informações sobre o coprocessador de matemática. Apenas um idiota apareceu, ele reescreveu a LibVMRx em C++ e a comparou de alguma forma. Ele tinha um computador muito poderoso e levou cerca de 40 minutos para processar 8 colunas, como ele disse. Ele nem sequer me enviou o programa ou qualquer outra coisa, só me atormentou com desculpas e tretas. Embora eu lhe tenha fornecido todos os dados e estivesse pronto para compartilhar o sistema e as considerações para a construção do modelo. Mas ele recusou-se a ajudar-me. Essas pessoas existem. Sopre para dentro e para fora ....
 
Mihail Marchukajtes:
Deixe-me contar-lhe uma história - eu lembro-me, perguntei-lhe sobre cálculos paralelos. Para poder contar mais informações sobre o coprocessador de matemática. Apenas um idiota apareceu, ele reescreveu a LibVMRx em C++ e a comparou de alguma forma. Ele tinha um computador muito poderoso e levou cerca de 40 minutos para processar 8 colunas, como ele disse. Ele nem sequer me enviou o programa ou qualquer outra coisa, só me atormentou com desculpas e tretas. Embora eu lhe tenha fornecido todos os dados e estivesse pronto para compartilhar o sistema e as considerações para a construção do modelo. Mas ele recusou-se a ajudar-me. Essas pessoas existem. Sopre para dentro e para fora ....

Eu comparei tudo na última versão 6.01. Nada mais funciona. Se fosse possível, eu teria feito mais um paralelo. Estava a fazê-lo por mim, ou seja, preciso que tudo seja calculado mais depressa.


Agora eu inventei um algoritmo para calcular os preditores fracos para que eles possam ser removidos. Levará muito tempo para calcular, mas valerá a pena, porque em vez de um preditor fraco, você pode substituí-lo por um mais forte. Ou livrar-se dos fracos preditores, aumentando tanto a velocidade de cálculo como a capacidade de generalização. Porque, para negociar, você precisa executar constantemente um recálculo dos modelos assim que o mercado começar a fazer batota. E é assim que o mercado é, assim que outros comerciantes são fundidos, eles mudam suas estratégias e você tem que se ajustar a eles novamente.

 
Yury Reshetov:

Eu comparei tudo na última versão 6.01. Nada mais funciona. Se fosse possível, eu teria feito mais um paralelo. Estava a fazê-lo por mim mesmo, ou seja, preciso de calcular tudo mais depressa.

Agora eu inventei um algoritmo, como calcular os preditores fracos, para que eles possam ser removidos. Levará muito tempo para calcular, mas valerá a pena, porque em vez de um preditor fraco, podemos substituir os mais fortes. Ou livrar-se dos fracos preditores, aumentando tanto a velocidade de cálculo como a capacidade de generalização. Porque, para negociar, você precisa executar constantemente um recálculo dos modelos assim que o mercado começar a fazer batota. É assim que o mercado é, assim que outros traders se fundem, eles mudam suas estratégias e você tem que se adaptar a eles novamente.

Tens razão em relação ao dinheiro. Estou ansioso pelas mudanças. Também acho que o mercado está mudando constantemente e que é preciso se ajustar a ele toda vez que algo acontece ou surgem notícias. E não procurar um graal em 5 anos, como algumas pessoas fazem aqui. Isto é utopia, mas eu já estou exausto de explicar...
 
HMM... Olha, agora eu treinei o modelo e ambos os modelos têm os mesmos valores de generalização, ou seja, ambos os modelos têm o mesmo segmento de mercado serrado. Acho que esta é a chave para escolher o modelo apropriado. Eu continuo treinando, procurando por insumos, etc.
 
A propósito, eu liberto um núcleo no processo de optimização, caso contrário torna-se impossível trabalhar no computador....
 
Mihail Marchukajtes:
É isso mesmo. Estou ansioso pelas mudanças.

É possível passar manualmente pelos preditores um a um, mas é longo e doloroso, embora seja também a direcção certa. Você precisa de muito tempo, mas deve ser automático e em tempo razoável e não tão excruciante.

Mihail Marchukajtes:


Estamos do mesmo lado da cerca, eu também acredito que o mercado está em constante mudança e precisa ser ajustado cada vez que algo acontece ou notícias são divulgadas. Não procure por um graal em 5 anos, como algumas pessoas fazem. Isto é utopia, mas eu já estou exausto de explicar...

É possível encontrar graos fracos de jogo longo. Eu tinha alguns deles. Mas o meu lucro está à beira da falta, o meu lucro é de um centavo, mesmo que eu tenha um bom depósito.

Teoricamente é possível encontrar um graal forte de longa duração, mas a probabilidade é provavelmente zero ponto zero?

Da maneira mais segura:

  1. Selecionando corretamente os preditores mais fortes
  2. Modelos de curto alcance com ajustes sistemáticos à medida que o mercado muda. Mas é melhor fazer tudo isto de forma totalmente automática, ou pelo menos manter a intervenção manual a um mínimo.
 
Mihail Marchukajtes:
HM... Olha, agora que eu treinei o modelo, ambos os modelos têm os mesmos valores de nível de generalização, ou seja, o segmento de mercado é serrado da mesma forma pelos dois modelos. Acho que esta é a chave para escolher o modelo apropriado. Eu continuo treinando, procurando por insumos, etc.

Vê no ficheiro java. Se há linhas "Variable got under reduction", elas indicam preditores fracos. Tais preditores são excluídos do código modelo - eles não são calculados em nenhum lugar no código de classificador binário.

É verdade, se todos os preditores forem aproximadamente os mesmos, tais linhas não aparecem.

Aqui está um exemplo (destacado em negrito). O sexto preditor v5 (contado de zero) - a sétima coluna em CSV pode ser substituída por outra mais forte:

double getBinaryClassificator1(double v0, double v1, double v2, double v3, double v4, double v5) {
   double x0 = 2.0 * (v0 + 1.0) / 2.0 - 1.0;
   double x1 = 2.0 * (v1 + 1.0) / 2.0 - 1.0;
   double x2 = 2.0 * (v2 + 1.0) / 2.0 - 1.0;
   double x3 = 2.0 * (v3 + 1.0) / 2.0 - 1.0;
   double x4 = 2.0 * (v4 + 1.0) / 2.0 - 1.0;
//Variable v5 got under reduction
   double decision = -0.23641879194630872 -0.10890380313199105 * x2
 -0.14546040268456376 * x0 * x2
 + 0.07270693512304251 * x1 * x2
 -0.07182997762863534 * x3
 -0.07383982102908278 * x0 * x1 * x2 * x3
 -0.4362541387024608 * x4
   ;
   return decision;

}
 
Yury Reshetov:

Vê no ficheiro java. Se há linhas "Variable got under reduction", elas indicam preditores fracos. Tais preditores são excluídos do código modelo - eles não são calculados em nenhum lugar no código de classificador binário.

É verdade, se todos os preditores forem aproximadamente os mesmos, tais linhas não aparecem.

Aqui está um exemplo (destacado em negrito). O sexto preditor v5 (contado de zero) - a sétima coluna do CSV pode ser substituída por outra mais forte:

double getBinaryClassificator1(double v0, double v1, double v2, double v3, double v4, double v5) {
duplo x0 = 2,0 * (v0 + 1,0) / 2,0 - 1,0;
duplo x1 = 2,0 * (v1 + 1,0) / 2,0 - 1,0;
duplo x2 = 2,0 * (v2 + 1,0) / 2,0 - 1,0;
duplo x3 = 2,0 * (v3 + 1,0) / 2,0 - 1,0;
duplo x4 = 2,0 * (v4 + 1,0) / 2,0 - 1,0;
//Variável v5 ficou em redução
dupla decisão = -0,23641879194630872 -0,10890380313199105 * x2
-0,14546040268458456376 * x0 * x2
+ 0,07270693512304251 * x1 * x2
-0.07182997762863534 * x3
-0,07383982102908278 * x0 * x1 * x2 * x3
-0.4362541387024608 * x4
;
decisão de retorno;

}

Eu sei, já estou a usar a tua biblioteca há um ano. Tais coisas são claras para mim..... Eu não tenho tais cordelinhos, todos os predicados estão envolvidos.....