KDB / Q如何匹配和加入表中的fifo计算

时间:2017-07-12 03:29:56

标签: q

我有一张交易表

trades:flip `ts`buyer`seller`price`qty!(`t1`t2`t3`t4`t5;`a`b`a`x`x;`x`x`x`z`z;10 10 9 10 11;200 500 100 300 500)

ts  buyer   seller  price   qty
t1  a   x   10  200
t2  b   x   10  500
t3  a   x   9   100
t4  x   z   10  300
t5  x   z   11  500

我想以某种方式将z交易与a和b交易相匹配

flip `ts`buyer`seller`price`qty`price_z!(`t1`t2`t3`t4`t5;`a`b`a`x`x;`x`x`x`z`z;10 10 9 10 11;200 500 100 300 500;10 10.8 11 0 0)

ts  buyer   seller  price   qty price_z
t1  a   x   10  200 10.0  <-- allocating 200 shares from the first trade of 300 @ 10
t2  b   x   10  500 10.8  <-- allocating the remaining 100 shares of the first trade @ 10 and 400 from the second trade @ 11
t3  a   x   9   100 11.0  <-- allocating the remaining 100 shares @ 11
t4  x   z   10  300 0.0
t5  x   z   11  500 0.0

除了遍历行,保留交易信息和更新表之外,我无法看到任何方法,但是在qpython中执行此操作对于大型表来说会非常缓慢,所以我想知道神仙是否有一些Q魔法这使得这成为可能。这里一个棘手的部分是记住t2中的值的计算,即t4中300股中的200股已经被采用。

非常感谢任何有关如何处理此问题的建议

0 个答案:

没有答案