Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 3269
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Então, qual é o objetivo final de toda essa correlação?
Eu poderei calcular o que os outros não podem devido a limitações técnicas.
Também testes, visualização e ação rápida, provavelmente
A otimização final também é normal, para pegar parâmetros de negócios
No início, tentei fazer a variante frontal - contar todas as linhas a cada vez. Tive a impressão de que há algum erro no Alglib, pois não consegui encontrá-lo no meu próprio.
O resultado geralmente coincide.
Mas, em algumas situações, isso não acontece.
Se fosse sempre assim, a culpa seria minha. Mas há algo suspeito acontecendo aqui.
Print(Matrix1);
Print("------------------");
Print(Matrix2);
A Matrix2 tem as primeiras 5 correspondências e, em seguida, zeros.
As matrizes ficaram semelhantes, mas ainda assim IsEqual não passa. Alguma outra coisa em algum lugar...Alterei Res.Col(Corr.Row(0), i); para Res.Row(Corr.Row(0), i);
Alterado Res.Col(Corr.Row(0), i); para Res.Row(Corr.Row(0), i);
Parece estar errado.
Feito
Print(Matrix1);
Print("------------------");
Print(Matrix2);
A Matrix2 tem as primeiras 5 correspondências e, em seguida, zeros.
As matrizes ficaram semelhantes, mas ainda assim IsEqual não passa. Alguma outra coisa em algum lugar...Alterei Res.Col(Corr.Row(0), i); para Res.Row(Corr.Row(0), i);
Encontrei o problema
Deveria ser assim
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.
Em geral, seu código é bonito e conciso. Eu faria tudo em loops))))
E o PearsonCorrM2 pode ser acelerado em duas vezes se você contar por triângulo, ou seja, a partir do final. Conte 100 linhas com todos, depois 99 com todos os 0-99, 99 e 100º já contados - você pode simplesmente copiar. ...50ª linha com todos até a 50ª e assim por diante.
Li em algum lugar que você pode ler rapidamente a correlação por meio de uma transformada rápida de Fourier... Também como uma opção para acelerar.
Eu já fiz isso. Faz sentido quando o comprimento da cadeia é grande. Vou lhe mostrar um dia desses.
Encontrei o problema
Deveria ser assim