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

KDB表按sym实现列滚动和:反向工程rcc列逻辑

反向工程QSQL代码计算信用消耗(RCC列)

我正在反向工程一段QSQL代码,目标是生成下表中的rcc列结果。已知该列是按sym分组后creditNettingValue的滚动和,但在处理sym为s3的第7至9行时,加减逻辑卡壳了——怎么都没法让自己的方案算出最后一行的14902245。

更新

我搞出了一个非常繁琐的解决方案,先明确需求:我要计算的是信用消耗,和其他sym汇总时忽略符号,但单个sym的信用正负变化时必须逐步调整(抱歉解释得不够清楚,看下面的代码应该能明白逻辑)。显然这不是最优解,求更简洁的实现方式。

示例数据表

t:flip (`time`date`sym`creditNettingValue`rcc)!(20:55:02.761 20:55:02.788 20:55:07.795 20:55:07.814 21:11:28.196 21:26:20.012 22:25:58.292 03:20:37.019 03:35:38.739 03:40:40.805 03:57:40.102 04:21:12.093 04:21:13.130 04:21:18.140 04:21:18.156 04:21:23.167 04:21:24.179 04:22:03.209 04:22:53.123 05:20:40.271;2024.10.01 2024.10.01 2024.10.01 2024.10.01 2024.10.01 2024.10.01 2024.10.01 2024.10.01 2024.10.01 2024.10.01 2024.10.01 2024.10.01 2024.10.01 2024.10.01 2024.10.01 2024.10.01 2024.10.01 2024.10.01 2024.10.01 2024.10.01;`s1`s1`s1`s1`s2`s2`s3`s4`s3`s3`s2`s4`s4`s4`s4`s4`s4`s4`s4`s3;-1000000j, -1000000j, -1000000j, -1000000j, 634279j, 634024j, 692808j, 1000000j, -690593j, -690423j, 631056j, 1000000j, 1000000j, 1000000j, 1000000j, 1000000j, 1000000j, 1000000j, 1000000j, 691094j;1000000j, 2000000j, 3000000j, 4000000j, 4634279j, 5268303j, 5961111j, 6961111j, 6270518j, 6956511j, 7587567j, 8587567j, 9587567j, 10587567j, 11587567j, 12587567j, 13587567j, 14587567j, 15587567j, 14902245j)

我当前的繁琐解决方案

// 按sym分组,计算creditNettingValue的累计绝对值分解
t:update creditNettingBreakdown:abs sums each '{x,'enlist y} scan creditNettingValue by sym from t
// 计算每个sym分组内的净值变化
t:update nettingBySym:last each last each {x-prev x} ''[creditNettingBreakdown] from t
// 我的逻辑删掉了每个creditNetting的第一个值,需要补回并计算总和
t:update rcc_calc:sums nettingBySym from t lj `time`sym xkey select time,sym,nettingBySym:abs creditNettingValue from t where rcc=(first;rcc) fby sym 
// 校验计算结果与原rcc是否一致
update d_rcc:deltas'[rcc;rcc_calc] from t

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 09:58:18