wj 忽略连接中的 sym (ric) 列,导致所有股票的报价都包含在 window
wj ignores the sym (ric) column in the join causing quotes for all stocks to be included in the window
当我如下使用 window 连接 (wj) 时,它的行为与我预期的不同。
关键问题是 ric 似乎未在连接中使用,因此在下面的示例中,对于一只股票(比如 'COSC.SI),我得到了 'COMF.SI 和 'COSC.SI 在定义的 window 中。你能告诉我我做错了什么吗?我注意到我被迫以错误的顺序输入列以使代码无误地进入 运行 - 我使用 'r 列(ric 列)有什么问题吗?
我怎样才能让这个函数产生预期的行为(为定义的 window 中的每个唯一股票分组的价格)?
更广泛地说,以及我对 wj 的实施,是否有比我在此处使用的 wj 方法更好的方法来围绕每个价格在一段时间内 window 对价格进行分组?
感谢和问候,
西蒙
f:([]t:1998.02.01 1998.02.01 1998.02.02 1998.02.02 1998.02.03 1998.02.03 1998.02.04 1998.02.04 1998.02.05 1998.02.05;r:`COMF.SI`COSC.SI`COMF.SI`COSC.SI`COMF.SI`COSC.SI`COMF.SI`COSC.SI`COMF.SI`COSC.SI;price:0.7312963 0.835 0.8021131 0.7936364 0.7825 0.79 0.7583088 0.8 0.8322596 0.79)
/set the window
w:-3 0 +\:f[`t];
c:`r`t;
out: wj[w;c;f;(f;(::;`price))];
如果您在 `r`t
上加入,那么您的 table 必须在 `r`t
上排序才能获得正确的结果:
q)f:([]t:1998.02.01 1998.02.01 1998.02.02 1998.02.02 1998.02.03 1998.02.03 1998.02.04 1998.02.04 1998.02.05 1998.02.05;r:`COMF.SI`COSC.SI`COMF.SI`COSC.SI`COMF.SI`COSC.SI`COMF.SI`COSC.SI`COMF.SI`COSC.SI;price:0.7312963 0.835 0.8021131 0.7936364 0.7825 0.79 0.7583088 0.8 0.8322596 0.79)
q)f:`r`t xasc f;
q)w:-3 0 +\:f[`t];
q)c:`r`t;
q)show out:wj[w;c;f;(f;(::;`price))];
t r price
-------------------------------------------------------
1998.02.01 COMF.SI ,0.7312963
1998.02.02 COMF.SI 0.7312963 0.8021131
1998.02.03 COMF.SI 0.7312963 0.8021131 0.7825
1998.02.04 COMF.SI 0.7312963 0.8021131 0.7825 0.7583088
1998.02.05 COMF.SI 0.8021131 0.7825 0.7583088 0.8322596
1998.02.01 COSC.SI ,0.835
1998.02.02 COSC.SI 0.835 0.7936364
1998.02.03 COSC.SI 0.835 0.7936364 0.79
1998.02.04 COSC.SI 0.835 0.7936364 0.79 0.8
1998.02.05 COSC.SI 0.7936364 0.79 0.8 0.79
当我如下使用 window 连接 (wj) 时,它的行为与我预期的不同。 关键问题是 ric 似乎未在连接中使用,因此在下面的示例中,对于一只股票(比如 'COSC.SI),我得到了 'COMF.SI 和 'COSC.SI 在定义的 window 中。你能告诉我我做错了什么吗?我注意到我被迫以错误的顺序输入列以使代码无误地进入 运行 - 我使用 'r 列(ric 列)有什么问题吗?
我怎样才能让这个函数产生预期的行为(为定义的 window 中的每个唯一股票分组的价格)?
更广泛地说,以及我对 wj 的实施,是否有比我在此处使用的 wj 方法更好的方法来围绕每个价格在一段时间内 window 对价格进行分组?
感谢和问候,
西蒙
f:([]t:1998.02.01 1998.02.01 1998.02.02 1998.02.02 1998.02.03 1998.02.03 1998.02.04 1998.02.04 1998.02.05 1998.02.05;r:`COMF.SI`COSC.SI`COMF.SI`COSC.SI`COMF.SI`COSC.SI`COMF.SI`COSC.SI`COMF.SI`COSC.SI;price:0.7312963 0.835 0.8021131 0.7936364 0.7825 0.79 0.7583088 0.8 0.8322596 0.79)
/set the window
w:-3 0 +\:f[`t];
c:`r`t;
out: wj[w;c;f;(f;(::;`price))];
如果您在 `r`t
上加入,那么您的 table 必须在 `r`t
上排序才能获得正确的结果:
q)f:([]t:1998.02.01 1998.02.01 1998.02.02 1998.02.02 1998.02.03 1998.02.03 1998.02.04 1998.02.04 1998.02.05 1998.02.05;r:`COMF.SI`COSC.SI`COMF.SI`COSC.SI`COMF.SI`COSC.SI`COMF.SI`COSC.SI`COMF.SI`COSC.SI;price:0.7312963 0.835 0.8021131 0.7936364 0.7825 0.79 0.7583088 0.8 0.8322596 0.79)
q)f:`r`t xasc f;
q)w:-3 0 +\:f[`t];
q)c:`r`t;
q)show out:wj[w;c;f;(f;(::;`price))];
t r price
-------------------------------------------------------
1998.02.01 COMF.SI ,0.7312963
1998.02.02 COMF.SI 0.7312963 0.8021131
1998.02.03 COMF.SI 0.7312963 0.8021131 0.7825
1998.02.04 COMF.SI 0.7312963 0.8021131 0.7825 0.7583088
1998.02.05 COMF.SI 0.8021131 0.7825 0.7583088 0.8322596
1998.02.01 COSC.SI ,0.835
1998.02.02 COSC.SI 0.835 0.7936364
1998.02.03 COSC.SI 0.835 0.7936364 0.79
1998.02.04 COSC.SI 0.835 0.7936364 0.79 0.8
1998.02.05 COSC.SI 0.7936364 0.79 0.8 0.79