kdb - 获取 n 天前的列值
kdb - get column values n days ago
如果我有table个价格
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
天的 returns?我对计算都感兴趣
(px[i] - px[i-n])/px[i-n]
和 (px[date] - px[date-n])/px[date-n]
,即第 px
列按索引移动 n
个位置,而前一个价格是 date-n
[=17 的价格=]
感谢帮助
好吧,你对第一个几乎是正确的。要获得 returns,您可以使用此 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
创建您的 table,它看起来像这样:
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 天后的价格。
然后 return 将按正常方式计算。
希望对您有所帮助!
如果我有table个价格
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
天的 returns?我对计算都感兴趣
(px[i] - px[i-n])/px[i-n]
和 (px[date] - px[date-n])/px[date-n]
,即第 px
列按索引移动 n
个位置,而前一个价格是 date-n
[=17 的价格=]
感谢帮助
好吧,你对第一个几乎是正确的。要获得 returns,您可以使用此 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
创建您的 table,它看起来像这样:
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 天后的价格。
然后 return 将按正常方式计算。
希望对您有所帮助!