You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在KDB+中按Symbol计算表的累计加权平均价格(含全部历史记录)

KDB+ 按Symbol计算累计加权平均价格

需求说明

针对表内每个sym(Symbol),计算包含该Symbol所有历史记录的累计加权平均价格,加权因子为size,价格为price。

输入表

q)t:([]sym:`a`a`a`b`b;size:(2;6;2;7;5);price:(2;10;3;4;9))
q)show t
sym size price
--------------
a   2    2
a   6    10
a   2    3
b   7    4
b   5    9

解决方案

利用KDB+的分组累计计算能力,通过sums函数分别统计累计总成交额和累计总成交量,再做除法得到加权平均:

q)update avgPrice: (sums size*price) % sums size by sym from t

运行结果

q)show update avgPrice: (sums size*price) % sums size by sym from t
sym size price avgPrice
-----------------------
a   2    2     2
a   6    10    8
a   2    3     7
b   7    4     4
b   5    9     6.083333

(注:若需保留三位小数,可使用round[;3]处理结果,如update avgPrice: round[(sums size*price) % sums size;3] by sym from t)

代码解释

  • sums size*price:按sym分组后,计算每组内size*price的累计和(累计总成交额)
  • sums size:按sym分组后,计算每组内size的累计和(累计总成交量)
  • %:KDB+的除法运算符,将累计成交额除以累计成交量,得到累计加权平均价格
  • by sym:确保每个Symbol的累计计算独立进行,不同Symbol的历史记录互不干扰

内容的提问来源于stack exchange,提问作者Steve

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 00:53:26