如果我有一个返回向量,有没有办法在Matlab中将它转换为累积回报向量?
在R中有一个非常有用的函数,它来自PerformanceAnalytics包中的chart.CumReturns函数。 Matlab中有没有类似的功能?
否则,我想在Matlab中手动完成
例如,拥有返回的向量:
r = [r1 r2 .. rn]
我想获得累积回报的向量,以便:
rc = [rc1 rc2 ..rcn]
其中:
rc1 = r1
rc2 = (1+r1)*(1+r2)-1
rcn = (1+r1)*(1+r2)*...(1+rn)-1
由于我是Matlab的新手,因此我并不确切知道如何在此向量上构建循环。
谢谢,
答案 0 :(得分:3)
r = r +1;
rc = cumprod(r);
rc= rc-1;
希望这会有所帮助..
答案 1 :(得分:0)
我不知道是否有原生功能,但我知道我可以写一个。 :)
funciton cumVec = cumsum(InputVec)
for ii = 1:size(InputVec), 2)
tempVec = InputVec(1:ii)+1;
cumElement = prod(tempVec);
cumVec(ii) = cumElement - 1;
end
end
我现在无法验证这一点,因为我在这台机器上没有MATLAB,但我认为这是正确的