2014-07-23 160 views
1

如果我有一个回报向量,是否有方法将它转换为Matlab中的累积回报向量?在Matlab中计算累积回报

在R中有一个非常有用的函数叫做chart.CumReturns来自PerformanceAnalytics包的funcion。在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新手,我不知道如何在这个向量上构造一个循环。

谢谢,

回答

3
r = r +1; 
rc = cumprod(r); 
rc= rc-1; 

希望这有助于..

+0

+ 1这是我会采取的方法 – rayryeng

+0

是的,这是更好的... + 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这台机器上,但我认为这是正确的