如何在 KDB 中计算滚动 30 天 window?

How do I calculate a rolling 30 day window in KDB?

我有一个键控 table 的形式:

t                            | ar            av     mr            mv   
-----------------------------| ----------------------------------------
2016.01.04D09:51:00.000000000| -0.001061315  513    -0.01507338   576  
2016.01.04D11:37:00.000000000| -0.0004846135 618    -0.001100514  583  
2016.01.04D12:04:00.000000000| -0.0009708739 1619   -0.001653045  1000 

我想计算 30 天的滚动相关性 ar cor mr

我一直在尝试使用 wj 创建自连接,但我一无所获。是这样吗?

你可以这样做:

/-Function which creates the rolling windows (w:window size, s:list)
q)f:{[w;s] (w-1)_({ 1_x,y }\[w#0;s])}

/-e.g.
q)f[3;til 5]
0 1 2
1 2 3
2 3 4

/-Apply cor to each 30-day rolling window as below:
q)ar:exec ar from t;
q)mr:exec mr from t;

q)cor'[f[30;ar]; f[30; mr]]