如果我有一张价格表
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
感谢您的帮助
答案 0 :(得分:2)
好吧,第一个您完全正确。要获得回报,您可以使用以下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天后的价格。
然后,以正常方式计算收益。
希望这会有所帮助!