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

 
fxsaber #:
O NumPy parece ter um algoritmo diferente do ALglib.

A CPU de Maxim é duas vezes mais rápida que a minha. Não me lembro se ele forneceu os tempos para o Algliba, mas acho que não.

 
fxsaber #:

Compare com a versão antiga do Alglib. Não tenho dados de que ele tenha se tornado mais lento.

Você mesmo escreveu que a versão padrão é mais lenta que a versão atual do Alglib. Eu tenho a versão antiga na forma de código, mas não no terminal.
 
Forester #:

A CPU de Maxim é duas vezes mais rápida que a minha. Não me lembro se ele forneceu os tempos para o Algliba, mas acho que não.

Horários.

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 negociação de algoritmos

Aleksey Vyazmikin, 2023.09.26 05:37 AM

Para estatísticas, este é o meu resultado

2023.09.26 06:28:23.304 Test_Corr (USDJPY,H1)   EX5: 3981 AVX Release.
2023.09.26 06:28:23.304 Test_Corr (USDJPY,H1)   TerminalInfoString(TERMINAL_CPU_NAME) = AMD FX-8350 Eight-Core 
2023.09.26 06:28:23.304 Test_Corr (USDJPY,H1)   TerminalInfoInteger(TERMINAL_CPU_CORES) = 8 
2023.09.26 06:28:23.304 Test_Corr (USDJPY,H1)   TerminalInfoString(TERMINAL_CPU_ARCHITECTURE) = AVX 
2023.09.26 06:28:23.332 Test_Corr (USDJPY,H1)   inRows = 100 inCols = 15000 
2023.09.26 06:28:45.032 Test_Corr (USDJPY,H1)   matrix<double> Matrix1 = CorrMatrix(Matrix) - 21700095 mcs, 1717 MB
2023.09.26 06:29:48.495 Test_Corr (USDJPY,H1)   matrix<double> Matrix2 = Matrix.CorrCoef(false) - 63460976 mcs, 1717 MB
2023.09.26 06:29:50.225 Test_Corr (USDJPY,H1)   IsEqual(Matrix1, Matrix2) = true 
Claramente, o Python é muito mais rápido. E, portanto, será mais rápido em C, então acontece que o MQ não está nos dizendo algo, prometendo desempenho comparável....

Devo observar que o Python tem uma pequena paralelização ao executar o código - por meio segundo para cerca de dois núcleos, o restante é contado em um núcleo.

 
Forester #:
Você mesmo escreveu que o padrão é mais lento que o atual alglibov. Eu tenho o antigo na forma de código, mas não no terminal.

O próprio código-fonte do Alglib foi reescrito pelo MQ para suas matrizes. Não quero nem discutir o CorrCoef padrão, pois há problemas óbvios nele.

Ou seja, há duas fontes de Alglib.

  • A original em matrizes dinâmicas ANTES da transformação MQ.
  • MQ modificado para seus tipos de matriz/vetor. Foi isso que testei.
Os códigos-fonte de ambas as versões do Alglib devem estar disponíveis para que você possa compará-los entre si.
 
fxsaber #:

Horários.


Bem, sim... as pessoas dedicam anos aos algoritmos. Vi um artigo sobre classificação rápida em C++ - o código parece ser mais complicado e realiza ações desnecessárias, mas funciona mais rápido devido ao pré-cálculo do processador. Olhando para o futuro...
 
fxsaber #:

O próprio código-fonte do Alglib foi reescrito pelo MQ para suas matrizes. Não quero nem discutir o CorrCoef padrão, pois há problemas óbvios nele.

Ou seja, há duas fontes de Alglib.

  • A original em matrizes dinâmicas ANTES da transformação MQ.
  • MQ modificado para seus tipos de matriz/vetor. Foi isso que testei.
Os códigos-fonte de ambas as versões do Alglib devem estar disponíveis, para que você possa compará-los.
Sou preguiçoso. Não uso correlação. Apenas notei uma diferença na velocidade há um ano e a compartilhei quando o tópico surgiu.
 
fxsaber #:
O NumPy parece ter um algoritmo diferente do ALglib

Na AlgLib, a documentação original diz por que são diferentes, quais são e para que servem. Com as regressões (eu estava pesquisando principalmente na AlgLib), é bastante original.

Novamente, tudo se compara de forma estranha, pois não é possível. Construa gráficos de dependências speed=f(dimensionality,special_matrix_properties) para diferentes bibliotecas/realizações e dê uma olhada neles. Você está pegando casos extremos, tirados do teto.

E aí você não olha para o valor absoluto, mas para a sintomatologia e a presença de um "platô". A partir daí, você escolhe uma ferramenta para trabalhar com dados específicos.

 
Forester #:

A CPU de Maxim é duas vezes mais rápida que a minha. Não me lembro se ele forneceu os tempos para o Algliba, mas acho que não.

Eu tenho o MT através de virtualização lá, os testes não serão muito plausíveis.

Além disso, optei por computar algo em python e depois transferi-lo para qualquer plataforma. Por exemplo, para criptografia, você não precisa de terminais.

É um tiro no escuro em termos de velocidade
 
Maxim Kuznetsov #:

Novamente, é uma maneira estranha de comparar as coisas, de uma forma que você não pode.

Não faço comparações, forneço código que todos podem medir em seus próprios casos.

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, no qual você pode ter um milhão delas.

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

 
Ehhh... Se pelo menos 5% de todos os nossos esforços fossem direcionados a uma tarefa comum, conquistaríamos esse mercado em meses.

E assim, durante anos, décadas, cada um está fervendo em sua própria sopa e 90% do tempo útil é gasto neste fórum inútil.
Razão: