如何在matlab中循环多个时期的投资组合回报计算?
我有以下数据/集(简化版以明确示例):如何在matlab中循环多个时期的投资组合回报计算?,matlab,loops,finance,portfolio,Matlab,Loops,Finance,Portfolio,我有以下数据/集(简化版以明确示例): 3*10给定时期内由数字标识的股票矩阵(3只股票(我的投资组合)按行*按10天(按列)命名为indexBest 10*10dailyret(我的股票范围是10)中每个证券的每个期间的回报矩阵 我想创建一个循环,在这个循环中,我能够将每个时期的每个投资组合的总回报计算成一个矩阵,理想情况下是1*10或10*1(回报*日期,反之亦然) 我已经为一个投资组合做了一段时间,请看下面:但我希望能够自动化这个过程,而不是为每个时期的每个投资组合做所有这些10*。请
给定时期内由数字标识的股票矩阵(3只股票(我的投资组合)按行*按10天(按列)命名为indexBest3*10
dailyret(我的股票范围是10)中每个证券的每个期间的回报矩阵10*10
1*10
或10*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
当我在Sum_ret_Port_uu中为我的最终解决方案输入下面的代码时,第一个投资组合的回报是正确的,第二个投资组合的回报是一个奇怪的数字,第三个是第二个投资组合应该是什么的正确答案,等等。你知道为什么吗?对于day=1:10投资组合,投资组合=指数测试(:,:);回报率=dailyret(投资组合_(:,:);Sum_ret_Port_uu=Sum(Returns_uu);end您没有在代码中的任何地方使用
day
变量。您应该使用它来索引输入和输出。您的意思是luike吗?我在这里使用i和M=10来代替day。但我仍然没有得到正确的结果…请纠正我或澄清…因为i=1:M公文包=indexBest(i);Returns_u=dailyret(Portfolio_u(i));Sum_ret_Port_u=Sum(Returns_u(i));endThank,但当我这样做时,我得到了以下答复:???尝试访问Portfolio_1_L(:,2);索引超出范围,因为大小(Portfolio_1_L)=[3,1]再次感谢,但问题仍然存在:第一个投资组合的回报率是正确的,第二个是一个奇怪的数字,第三个是第二个投资组合应该是什么的正确答案,等等