kdb 计算行之间的百分比变化

kdb calculate percent change between rows

我通过这种方式计算 24 小时内的百分比变化,您可以在下面看到。

有什么方法可以通过查询直接从 kdb 获取计算百分比吗? df 应该 return 百分比作为最终值。

df = q.sendSync('{[x;y]value select by x xbar DateTime.minute from trades where DateTime > .z.p-0D01, symbol=y }',30,np.string_(symbol))

start  = df.iloc[0].price
end = df.iloc[-1].price

return ((end-start)/start) * 100 ##### return -0.01152

kdb查询结果:

                 DateTime    side       symbol  amount     price   
0 2022-04-15 14:59:59.975  b'buy'  b'ETH-USDT'  0.0033     3035.75  
1 2022-04-15 15:29:58.889  b'buy'  b'ETH-USDT'   0.079     3035.2100
2 2022-04-15 15:32:09.050  b'buy'  b'ETH-USDT'  0.0165     3034.1599
first exec 100*(last[price]-price[0])%price[0] from trades where DateTime > .z.p-0D01, symbol=y

update PctDiff:-[price%first price;1] from trades

此查询创建了“从开始到现在的百分比变化”的附加列,当然您需要先按时间对 table 进行排序。

如果您在 table 中有多个交易品种并且想要为每个交易品种计算:

,此查询也可以提供帮助

update PctDiff:-[price%first price;1] by sym from trades