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

如何在kdb中针对指定规模循环单元格数据计算精准VWAP价格?

KDB+ 计算指定规模对应的精准VWAP价格

先来看你的示例表:

mkt:([] date:2018.05.05 2018.05.05 2018.05.05 2018.05.05; time:2018.05.05D01:30:00 2018.05.05D01:30:01 2018.05.05D01:30:01 2018.05.05D01:30:02; bid:((1.2110 1.21105);(1.2111 1.2109 1.2112);(1.2111 1.2109);(1.2110 1.21105)); bidSize:((3000000 1000000);(500000 1000000 1000000);(1000000 2000000);(1000000 1000000)); ask:((1.2111 1.21115);(1.2112 1.2110 1.2113);(1.2112 1.2110);(1.2111 1.21115)); askSize:((3000000 1000000);(500000 1000000 1000000);(1000000 2000000);(1000000 1000000)))

你提到之前用整行加权平均的方案精度不足,想要通过循环单元格内的数据,精准计算指定规模对应的VWAP。咱们可以这么实现:

步骤1:写单条记录的VWAP计算函数

先搞一个处理单条记录的辅助函数,它会逐层累加订单簿的规模,直到达到目标量,精准计算对应的加权均价:

calcVwap:{[targetSize; prices; sizes]
    // 计算每个层级的累计规模
    cumSizes: sums sizes;
    // 找到第一个累计规模超过/等于目标的层级
    idx: first where cumSizes >= targetSize;
    // 如果总规模不够目标,返回0(你可以根据需求改成其他逻辑,比如返回最后一层均价)
    if[idx=0; :0f];
    // 计算前面完整层级的总金额和总规模
    prevTotal: sum prices[0:idx-1] * sizes[0:idx-1];
    prevSize: sum sizes[0:idx-1];
    // 计算当前层级需要补的剩余规模对应的金额
    remaining: targetSize - prevSize;
    currentTotal: prices[idx] * remaining;
    // 总VWAP = 总金额 / 目标规模
    (prevTotal + currentTotal) % targetSize
}

步骤2:写处理整张表的主函数

把上面的辅助函数应用到整张表的每一行,同时计算累计规模方便后续过滤:

getTargetVwap:{[targetSize; table]
    select 
        date, time,
        // 给每一行的bid和ask分别计算目标规模的VWAP
        bidVwap: calcVwap[targetSize]'[bid; bidSize],
        askVwap: calcVwap[targetSize]'[ask; askSize],
        // 计算累计的bid/ask总规模,用于找到首次达标记录
        cumulBidSize: sums sum each bidSize,
        cumulAskSize: sums sum each askSize
    from table
}

步骤3:调用函数并验证

现在你可以传入目标规模(比如5000000)和你的表来计算:

// 计算目标规模5000000的VWAP
result: getTargetVwap[5000000; mkt]
// 查看结果
result

如果要找到累计bid规模首次达到5000000的那条记录,直接过滤就行:

1#select from result where cumulBidSize >= 5000000

这个方案的核心是逐层级累加计算,不会像整行wavg那样忽略“只取到某一层部分规模”的情况,精度会更准确。

内容的提问来源于stack exchange,提问作者matthew.j

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:19:38