如何在 kdb 中动态计算相关性

How can I calculate correlation dynamically in kdb

我有一个 table 的 returns,我想计算每 n 行的相关性,但我不知道该怎么做。为了更说明问题,我的 table t 是

sym1 sym2 sym3 sym4
3 4 5 1
0 -1 6 4
-3 10 8 9
-4 19 -1 6

如何计算第 1-3 行的 sym1 和 sym2/sym3/sym4 之间的相关性,然后是第 2-4 行等?

目前我只能指定列然后计算,但我正在尝试找到一种方法来修复 sym1 并遍历 sym2-4。这是我当前的代码

(cor).'flip flip each {(til x)xprev\:y}[3;]each (sym1;sym2) from t

这是一个可能适合您的解决方案。

q)update s1s2:(cor).'flip{-3#'reverse{-1_x}\[x;y]}[-1+count i]each(sym1;sym2)from t
sym1 sym2 sym3 sym4 s1s2
------------------------------
3    4    5    1
0    -1   6    4    1
-3   10   8    9    -0.5447048
-4   19   -1   6    -0.9751578

这只是在列之间发现的一种相关性,即 sym1sym2。前两个结果可以丢弃,因为它们没有相关性所需的 3 个值。