2013-02-11 28 views
1

我有以下的數據/套(簡化版使例子清晰):如何在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個時期?

回答

3

使用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