在没有for循环的情况下在matlab中计算滚动beta

时间:2014-08-28 07:14:27

标签: matlab

我正在使用ecmmvnrmle(数据缺失的多元正态回归)计算matlab中大量资产的滚动测试版,但这需要花费很多时间。有没有办法在不使用循环的情况下做到这一点?

1 个答案:

答案 0 :(得分:0)

以下是我正在使用的代码

 for i=1:numcol-2 % col have various assets
temp_component = regress_dataset(:,i); %calculating returns
if strcmp(type, 'Equity')
   temp_component = price2ret(temp_component);
elseif strcmp(type , 'Corp')
   temp_component = diff(temp_component);
end 

  for j=1:numrows - roll - 1 %calculating rolling betas
    temp_index = indexset_ret(j:j+roll-1,:);   %index return for last 22 days (roll=22)
    temp_index(:,1) = 1;
    temp_asset = temp_component(j:j+roll-1,:);
    msr(j,:) = [size(temp_index),size(temp_asset) j];
    if sum(isnan(temp_asset))> 0
    ts_beta(j,k) = NaN;
    else
    [Param,Covar] = ecmmvnrmle(temp_asset,temp_index); %calculating beta
    ts_beta(j,k) = Param(2); %storing beta
    end
  end
 k=k+1;    
 end