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

 
mytarmailS #:
那么,整个相关性的最终目标是什么?

好吧,你已经发现了哪种实现方式更快,哪种结果相同,哪种不相同......你打算用这些知识做什么呢?

我可以计算出别人因技术限制而无法计算的结果

 
mytarmailS #:
测试、可视化和快速行动也是正常的。

最终优化也很正常,以获取交易参数

 
fxsaber #:

起初,我试着做正面变体--每次计算所有行。我觉得 Alglib 中存在一些错误,因为我在自己的 Alglib 中找不到。


结果往往是一致的。


但在某些情况下,却并非如此。


如果总是这样 那就是我的错了但这里面有猫腻

我制作了

Print(Matrix1);
Print("------------------");
Print(Matrix2);


Matrix2 有前 5 个匹配项,然后是零。
我将 Res.Col(Corr.Row(0),i);改为 Res.Row(Corr.Row(0),i);

矩阵变得相似了,但 IsEqual 仍然没有通过。是不是哪里出了问题?
 
Forester #:

将 Res.Col(Corr.Row(0),i);更改为 Res.Row(Corr.Row(0),i);

似乎是错误的。

 
Forester #:
制作

Print(Matrix1);
Print("------------------");
Print(Matrix2);


Matrix2 有前 5 个匹配项,然后是零。
我将 Res.Col(Corr.Row(0), i); 改为 Res.Row(Corr.Row(0), i);

矩阵变得相似了,但 IsEqual 仍然没有通过。可能是其他地方出了问题...

找到问题所在

应该是这样

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

 
如果按三角形计数,PearsonCorrM2 的速度可以提高 2 倍。......第 50 行,全部数到第 50 行,等等。因为 =1,所以不要自计数。

附:
总的来说,你的代码既漂亮又简洁。我会在 loops)))) 中完成所有工作
 
Forester #:
如果按三角形计数,PearsonCorrM2 的速度可以提高 2 倍。......第 50 行的所有数据到第 50 行,以此类推。
我在某处读到过,可以通过快速傅立叶变换快速计算相关性......这也是加快速度的一个选项。
 
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 
 
mytarmailS #:
我在某处读到过,你可以通过快速傅立叶变换快速读取相关性......这也是加快速度的一种选择。

我已经这么做了。当字符串长度较大时,这样做是有意义的。有机会我演示给你看。

 
Forester #:

发现问题

应该是这样的

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