You need to enable JavaScript to run this app. 如何在KDB中计算30天滚动窗口?求解键表ar与mr的滚动相关系数
优惠活动
大模型
产品
解决方案
定价
更多

如何在KDB中计算30天滚动窗口?求解键表ar与mr的滚动相关系数

思路判断

用wj(窗口连接)做自连接实现滚动相关系数计算是完全正确的思路,你未实现成功大概率是窗口参数、表排序或聚合函数配置有误。

操作步骤

1. 前置校验

首先确保你的原始表已按时间列t升序排序,这是窗口连接计算的基础:

// 假设你的原始表名为factor_tbl
sorted_tbl = sort(factor_tbl, t)

2. 定义30天滚动窗口

如果是自然日窗口,直接用内置的时间偏移量定义即可:
rolling_window = -30d : 0d

上述窗口表示统计当前行时间往前30天(包含当前行)的所有数据,如果不需要包含当前行,可调整为-30d : -1ms

3. 窗口连接计算滚动相关系数

调用wj函数做自连接聚合,用cor函数计算两列相关系数:

// 示例中加了样本量判断,要求窗口内至少有20条有效数据才输出相关系数,避免样本过少导致的结果失真
result = wj(rolling_window, <iif(count(ar)>=20, cor(ar, mr), NULL) as ar_cor_mr>, sorted_tbl, sorted_tbl, `t)

常见异常排查

  • 若返回全空值:检查窗口方向是否写反,不要写成0d:-30d
  • 若结果不符合预期:检查原始表是否按t严格升序,是否存在重复时间行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 12:15:02