Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在matlab中循环多个时期的投资组合回报计算?_Matlab_Loops_Finance_Portfolio - Fatal编程技术网

如何在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
    给定时期内由数字标识的股票矩阵(3只股票(我的投资组合)按行*按10天(按列)命名为indexBest
  • 10*10
    dailyret(我的股票范围是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]再次感谢,但问题仍然存在:第一个投资组合的回报率是正确的,第二个是一个奇怪的数字,第三个是第二个投资组合应该是什么的正确答案,等等