Aprendizaje automático en el trading: teoría, práctica, operaciones y más - página 3269
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Al principio intenté hacer la variante frontal: contar todas las líneas cada vez. Me dio la impresión de que hay algún error en Alglib, porque no pude encontrarlo en mi propia.
El resultado suele coincidir.
Pero en algunas situaciones, no.
Si siempre fuera así, sería culpa mía. Pero hay algo sospechoso aquí.
Print(Matriz1);
Print("------------------");
Print(Matriz2);
Matrix2 tiene los 5 primeros coincidentes y luego ceros.
Las matrices se volvieron similares, pero IsEqual sigue sin pasar. Algo más en alguna parte...Cambié Res.Col(Corr.Fila(0), i); por Res.Fila(Corr.Fila(0), i);
Cambiado Res.Col(Corr.Fila(0), i); a Res.Fila(Corr.Fila(0), i);
Parece que está mal.
Hecho
Print(Matriz1);
Print("------------------");
Print(Matriz2);
Matrix2 tiene los 5 primeros coincidentes, luego ceros.
Las matrices se volvieron similares, pero IsEqual sigue sin pasar. Algo más en alguna parte...Cambié Res.Col(Corr.Fila(0), i); por Res.Fila(Corr.Fila(0), i);
Encontrado el problema
Debería ser así
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);
}
P.S.
En general, su código es hermoso y conciso. Yo lo haría todo en loops))))
Y PearsonCorrM2 se puede acelerar por 2 veces si se cuenta por triángulo.es decir, ir desde el final. Cuenta la línea 100 con todos, luego la 99 con todos 0-99, 99 y 100 ya contados - puedes simplemente copiar. ...la línea 50 con todos hasta la 50 y así sucesivamente.
Leí en alguna parte que se puede leer rápidamente la correlación a través de una transformada rápida de Fourier... También como una opción para acelerar.
Yo lo he hecho. Tiene sentido cuando la longitud de la cadena es grande. Te lo enseñaré algún día.
Encontrado el problema
Debería ser así
Foro sobre negociación, sistemas automatizados de negociación y ensayo de estrategias de negociación
Aprendizaje automático en el trading: teoría, modelos, práctica y negociación de algoritmos
Maxim Dmitrievsky, 2023.10.01 10:55 AM
residuales_a = a_mat - a_mat. column_means residuales_b = b_mat - b_mat. column_means a_residual_sums = residuals_a. column_sums b_residual_sums = residuals_b. column_sums residual_products = dot_product( residuals_a. transpose, residuals_b)
correlaciones = productos_residuales / productos_suma
Esto parece ser un cálculo frontal de la matriz de correlaciones.
Cierto, ¡gracias! No entiendo por qué la opción incorrecta trabajó con inCols < 100.
Aparentemente
demasiado. Al azar - la correlación media allí es alrededor de 0, probablemente.