Aprendizaje automático en el trading: teoría, práctica, operaciones y más - página 3270

 
Forester #:

Probablemente demasiado. Al azar - hay una correlación media de alrededor de 0, probablemente.

Allí no se mide el error medio, sino la diferencia máxima entre los elementos correspondientes.

Foro sobre trading, sistemas de trading automatizados y prueba de estrategias de trading

Aprendizaje automático en el trading: teoría, modelos, práctica y algo-trading

fxsaber, 2023.10.01 09:38 pm

bool IsEqual( matrix<double> &Matrix1, const matrix<double> &Matrix2, const double Sens = 1 e-10 )
{
  Matrix1 -= Matrix2;  
  
  const bool Res = (MathMax(MathAbs(Matrix1.Max()), MathAbs(Matrix1.Min())) < Sens);
  
  Matrix1 += Matrix2;
  
  return(Res);
}


Por eso no está claro cómo el código erróneo

  for (int i = 0; i < (int)Matrix.Rows(); i++)

obtiene una coincidencia.

inRows = 5 inCols = 50 
matrix<double> Matrix1 = CorrMatrix(Matrix) - 242 mcs, 0 MB
matrix<double> Matrix4 = CorrMatrix2(Matrix) - 117 mcs, 0 MB
IsEqual(Matrix1, Matrix4) = true 
 
Forester #:
Y PearsonCorrM2 se puede acelerar por 2 veces si se cuenta por triángulo.es decir, ir desde el final. Cuenta 100 línea con todos, luego 99 con todos 0-99, 99 y 100 ya contados - puedes simplemente copiar. ...50 línea con todos hasta 50, etc. Bueno, no contar con sí mismo porque =1.
Me temo que no tiene sentido.
inRows = 100 inCols = 15000 
matrix<double> Matrix1 = CorrMatrix(Matrix) - 14196778 mcs, 1717 MB
matrix<double> Matrix4 = CorrMatrix2(Matrix) - 538256223 mcs, 1717 MB
IsEqual(Matrix1, Matrix4) = true 
El freno terrible todavía se ralentizará. Aquí, inequívocamente, no se puede prescindir de herramientas hechas a sí mismo.
 
fxsaber #:

Por eso no está claro cómo, con el código equivocado.

obtiene una coincidencia.

Lo he averiguado, si intercambias los cálculos de las matrices, obtienes un desajuste.

inRows = 5 inCols = 50 
matrix<double> Matrix4 = CorrMatrix2(Matrix) - 113 mcs, 0 MB
matrix<double> Matrix1 = CorrMatrix(Matrix) - 214 mcs, 0 MB
IsEqual(Matrix1, Matrix4) = false 

Es decir, basura de la memoria durante el cálculo de la primera matriz se metió en la nueva matriz y por algún milagro coincidió con el resultado deseado.

 
fxsaber #:

Creo que es un cálculo frontal de la matriz de correlación.

Sí, si hacemos μl sin ciclos en nuevas matrices, ¿no será más rápido?
 
fxsaber #:
196

500 segundos frente a 14 - por eso recuerdo que era

PearsonCorrM

el más rápido, debido al algoritmo.

Maxim Dmitrievsky #:
Bueno, sí, si lo haces en nuevas matrices µl, ¿no será más rápido?

Creo que las 9 funciones usadas en PearsonCorrM y PearsonCorrM2 se pueden reescribir a matrices y compararlas. En principio, reescribir las declaraciones y referencias a matrices llevaría una hora de trabajo. Al mismo tiempo averiguaremos si las matrices son mejores que las matrices din.

Títulos
IsFiniteMatrix(
IsFiniteVector(
AblasInternalSplitLength(
AblasSplitLength(
RMatrixGemmK(
RMatrixGemm(
RMatrixSyrk2(
RMatrixSyrk(
RankX(

 
Forester #:

Creo que las 9 funciones utilizadas en PearsonCorrM y PearsonCorrM2 pueden reescribirse a matrices y compararse. En principio, llevará una hora de trabajo reescribir los anuncios de matrices y las referencias. Al mismo tiempo averiguaremos si las matrices son mejores que las matrices din.

Todo está ya hecho: MQ los ha reescrito para sus matrices.

Forester #:

500 seg vs 14 - por eso me acordé de eso.

el más rápido, debido al algoritmo.

No me había dado cuenta del algoritmo. NumPy no se queda muy atrás sólo por el hecho de que no realiza cálculos repetidos.

NumPy parece tener un algoritmo diferente de ALglib, ya que el rendimiento es muy diferente. Pero está claro que en toda la enorme comunidad Python hubo algún algoritmista muy fuerte que dedicó una cantidad decente de tiempo a estudiar este tema.
 
fxsaber #:

Ya está hecho: los MQ los han reescrito para adaptarlos a sus matrices.

Y se ha vuelto más lento).

 
Forester #:

Y se hizo más lento ??))))

Compara con la versión antigua de Alglib. No tengo datos de que se haya vuelto más lento.

 
fxsaber #:
NumPy parece tener un algoritmo diferente de ALglib.

La CPU de Maxim es el doble de rápida que la mía. No recuerdo si dio tiempos para Algliba, creo que no.

 
fxsaber #:

Compáralo con la versión antigua de Alglib. No tengo datos de que se haya vuelto más lento.

Tú mismo has escrito que la estándar es más lenta que la actual de Alglib. Tengo la antigua en forma de código, pero no en el terminal.
Razón de la queja: