如何在matlab中循环多个期间的投资组合回报计算?

问题描述:

我有以下的数据/套(简化版使例子清晰):如何在matlab中循环多个期间的投资组合回报计算?

  • 3*10矩阵由多个在一定期间内确定股票(3股(我的投资组合)的行*通过10天(列)命名indexBest。回报的每个时期在我命名dailyret宇宙的每个安全
  • 10*10矩阵(我的股票的宇宙是10)。

我想创建一个循环,我能计算每个时期每个投资组合的总和回报为一个马理想情况下为trix 1*1010*1(返回*日期,反之亦然)。

我已经为投资组合完成了一个单一期间,请参阅下面的内容:但我希望能够自动执行此过程,而不是在每个期间为每个投资组合完成所有这些操作10*。请帮忙!

Portfolio_1_L= indexBest(:,1); %helps me get the portfolio constituents for period one (3 stocks basically). 
Returns_1_L= dailyret(Portfolio_1(:,1));%to calculate returns of the portfolio for period 1 I have referenced the extraction of returns to the portfolio constituents. 
Sum_ret_Port_1_L=sum(Returns_1_L); %sum return of the portfolio for period one 

我如何循环这个过程的所有其他9个时期?

使用for循环,并使用索引变量代替示例代码中的硬编码1。还索引输出以存储每天的结果。

for day = 1:10 
    Portfolio_1_L = indexBest(:,day); 
    Returns_1_L = dailyret(Portfolio_1_L); 
    Sum_ret_Port_1_L(day) = sum(Returns_1_L); 
end 
+0

当我为我Sum_ret_Port_最终soultion输入以下代码的第一个组合的收益率是正确的,那么第二个是一个奇怪的号码,三是对于第二个应该是什么等等......任何想法是正确的答案为什么? for day = 1:10 Portfolio_ = indexBest(:, :): Returns_ = dailyret(Portfolio_(:, :)); Sum_ret_Port_ = sum(Returns_); 结束 – 2013-02-11 15:57:22

+0

您没有在代码中的任何位置使用'day'变量。您应该使用它来索引输入和输出。 – shoelzer 2013-02-11 16:23:16

+0

你是指这个吗? insteda的一天我使用我在这里和M = 10。但我仍然没有得到正确的结果...请纠正我或澄清....对于我= 1:M Portfolio_ = indexBest(i); Returns_ = dailyret(Portfolio_(i)); Sum_ret_Port_ = sum(Returns_(i)); 结束 – 2013-02-11 16:52:40