有两列数据,一列是日期,一列是收益率。我想基于每天,找出第21天的数,第42天,第36天......第252天的收益率。然后第二十一天的数作为第一个月收益率,42天收益率/21天收益率-1作为第二个月收益率,63/42-1做第三个月,以此类推,会得到12个月的收益率。这些数ln(x+1).然后每个月的值等于前面的累加(也就是算出来了12个值,然后这十二个值+1,再lin。得到12个新值。然后这些值,第一个作为第一个值,第1+2作为第二个值,第1+2+3作为第三个值。1+2+3+。。。+12作为第12个值)。最后,求出这12个里面最大值Max(Z(T)),最小值Min(Z(T))。最后LN(1+Max(Z(T)))-LN(1+Min(Z(T)))作为最终的结果,也就是当天的CMRA因子值。
这种除了循环有没有比较好的写法啊?
我能想到的,就是用日期循环,基于每个日期,然后选出252天,然后一步一步去标记去算。DolphinDB database有很多函数,想知道有没有更好的简便方法?