kdb-n天前获取列值
如果我有一张价格表kdb-n天前获取列值,kdb,Kdb,如果我有一张价格表 t:([]date:2018.01.01+til 30;px:100+sums 30?(-1;1)) date px 2018.01.01 101 2018.01.02 102 2018.01.03 103 2018.01.04 102 2018.01.05 103 2018.01.06 102 2018.01.07 103 ... 如何计算n天的回报率?我对这两种计算都感兴趣 (px[i]-px[i-n])/px[i-n]和(px[date]-px[
t:([]date:2018.01.01+til 30;px:100+sums 30?(-1;1))
date px
2018.01.01 101
2018.01.02 102
2018.01.03 103
2018.01.04 102
2018.01.05 103
2018.01.06 102
2018.01.07 103
...
如何计算n
天的回报率?我对这两种计算都感兴趣(px[i]-px[i-n])/px[i-n]
和(px[date]-px[date-n])/px[date-n]
,即,px
列按索引移位n
插槽,前一个价格是date-n
谢谢你的帮助好吧,第一个问题你基本上解决得很好。要获得回报,您可以使用此lambda:
{update return1:(px-px[i-x])%px[i-x] from t}[5]
对于日班,您可以使用如下aj:
select date,return2:(px-pr)%pr from aj[`date;t;select date,pr:px from update date:date+5 from t]
基本上你在这里要做的就是将日期按你想要的天数移动,然后提取价格。您可以使用aj
创建如下所示的表格:
q)aj[`date;t;select date,pr:px from update date:date+5 from t]
date px pr
----------------
2018.01.01 99 98
2018.01.02 98 97
2018.01.03 97 98
其中px是您现在的价格,pr是您5天后的价格
然后,回报率是按照正常的方式计算的
希望这有帮助 很酷,谢谢。我还发现了关于
xprev
:update prevPx:n xprev px from t t
您的解决方案中有一点输入错误,应该是+not-:aj[`date;t;select date,pr:px from update date:date+5 from t]
谢谢您指出这一点。事实上,它必须是加号。