交易中的机器学习:理论、模型、实践和算法交易 - 页 3270

 

关于交易、自动交易系统和交易策略测试的论坛

交易中的机器学习:理论、模型、实践与算法交易

Maxim Dmitrievsky, 2023.10.01 10:55 AM

residuals_a= a_mat- a_mat. column_means residuals_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)

sum_products= sqrt( dot_product( a_residual_sums, b_residual_sums))

相关性= residual_products/ sum_products

这似乎是对相关矩阵的正面计算。

 
fxsaber #:
好的,谢谢!我不明白为什么在 inCols < 100 的情况下,错误的选项会起作用。

很明显

Sens = 1 e-10
太多了。随机 - 平均相关性可能为 0。
 
Forester #:

可能太多了。随机 -平均相关性 可能 0。

这里测量的不是平均误差,而是相应元素之间的最大差异。

交易、自动交易系统和交易策略测试论坛

交易中的机器学习:理论、模型、实践和算法交易

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);
}


这就是为什么不清楚错误的代码是如何

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

获得匹配。

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 #:
如果按三角形计数,PearsonCorrM2 的速度 可以提高 2 倍。......第 50 行,全部数到第 50 行,等等。嗯,不要用本身计数,因为 =1。
恐怕没有意义。
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 
可怕的刹车还是会慢下来。在这里,毫无疑问,没有自制的工具是不行的。
 
fxsaber #:

这就是为什么不清楚如何使用错误代码的原因。

获得匹配。

我想明白了,如果交换矩阵计算,就会出现不匹配。

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 

也就是说,在计算第一个矩阵时,内存中的垃圾进入了新矩阵,并奇迹般地与预期结果相吻合。

 
fxsaber #:

我认为这是对相关矩阵的正面计算。

是的,如果我们不在新矩阵上循环计算 μl,速度不是会更快吗?
 
fxsaber #:
196

500 秒对 14 秒--这就是我记得它最快的原因。

PearsonCorrM

是最快的,这与算法有关。

Maxim Dmitrievsky#:
嗯,是的,如果你在新的µl矩阵上进行计算,速度不是会更快吗?

我认为 PearsonCorrM 和 PearsonCorrM2 中使用的所有 9 个函数都可以改写成矩阵并进行比较。原则上,重写矩阵声明和引用需要一个小时的时间。同时,我们还将发现矩阵是否比数组更好。

标题
IsFiniteMatrix(
IsFiniteVector(
AblasInternalSplitLength(
AblasSplitLength(
RMatrixGemmK(
RMatrixGemm(
RMatrixSyrk2(
RMatrixSyrk(
RankX(

 
Forester #:

我认为 PearsonCorrM 和 PearsonCorrM2 中使用的全部 9 个函数都可以改写成矩阵并进行比较。原则上,重写矩阵公告和引用需要一个小时的时间。与此同时,我们将发现矩阵是否比数组更好。

一切都已经完成:MQ 已经将它们重写为矩阵。

Forester#:

500 秒 vs 14 - 这就是为什么我记得这个。

因为算法的原因,它是最快的。

我没意识到算法的存在。NumPy 并不落后,只是因为它不进行重复计算。

NumPy 似乎采用了与 ALglib 不同的算法,因为两者的性能大相径庭。但很明显,在整个庞大的 Python 社区中,有一些非常强大的算法专家投入了大量的时间来研究这个问题。
 
fxsaber #:

已经完成了:MQs 已经改写了它们,以适应它们的矩阵。

速度会变慢吗?)

 
Forester #:

))))

与旧版本的 Alglib 相比。我没有数据表明它变慢了。