KDB-将值与返回x行的值进行比较(增量,但返回x行)

KDB-将值与返回x行的值进行比较(增量,但返回x行),kdb,Kdb,我有一张有仪器、时间、价格的桌子 Instrument Time Price Stock x 2019.05.17D10:01:00.000000000 1.2 Stock x 2019.05.17D10:02:00.000000000 1.4 Stock x 2019.05.17D10:03:00.000000000 1.3 Stock x 2019.05.17D10:04:00.00

我有一张有仪器、时间、价格的桌子

Instrument   Time                            Price
Stock x      2019.05.17D10:01:00.000000000   1.2
Stock x      2019.05.17D10:02:00.000000000   1.4
Stock x      2019.05.17D10:03:00.000000000   1.3
Stock x      2019.05.17D10:04:00.000000000   1.2
Stock x      2019.05.17D10:05:00.000000000   1.4
Stock x      2019.05.17D10:06:00.000000000   1.6
Stock x      2019.05.17D10:07:00.000000000   2.3
Stock x      2019.05.17D10:08:00.000000000   2.4
Stock x      2019.05.17D10:09:00.000000000   2.2
Stock x      2019.05.17D10:10:00.000000000   2.5
然后,我想比较运行窗口上的Delta价格发展,返回x分钟

如果我做了类似的事情

     newdata:({0,1_deltas x}(close))%(close) by Instrument from Table
我把比较放在前一排。(1.2/1.4//1.4/1.3//1.3/1.2)

A: 我想做三角洲-但返回几行。 表示x=5行1.2/1.6//1.4/2.3//等

B:
如果我在某一点上缺少分钟数据-Delta不会考虑分钟差异(价格开发也不会很容易进行比较)-因此我想知道,我如何制定解决方案,这不仅是与之前的x行进行比较,还特别关注时间差异,在事后诸葛亮进行比较时。

如果您想纯粹基于x行进行回顾,那么您可以使用


这也应该考虑到场景B,因为它将返回一个空值,该值可以从任何价格开发计算中丢弃。但是,如果您的数据没有被压缩到1分钟的时间段中,并且您想及时回顾,您需要创建某种窗口连接,这里可以找到一个很好的示例

对于B部分,您要寻找什么输出/行为?对于B部分,您希望用最新的正确价格填充数据,即如果09:01时的价格为12,而09:05时的下一个价格为13,您希望中间的所有价格都是12,对吗?
tab:([]sym:10#`MSFT;time:(2019.05.01D10:00:00.000000+/:00:01+til 10);price:(1.2;1.4;1.3;1.2;1.4;1.6;2.3;2.4;2.2;2.5))

//Can adjust the row lookback value
update diff:(lookback-price) from update lookback:{y xprev x}[;5] price by sym from tab