Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

To resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016

Inverse of a covariance matrix (loop)

Asked by Kevin van Berkel on 23 Apr 2013

Hi all,

I am stuck to create a loop which yields inverse of covariance matrices.

Data description:

I have the returns of three risky assets: mkt, hml and mom, from nov 3, 1926 up to dec 31, 2012.

For each year (so starting from Nov 3, 1927)I want the inverse covariance matrix for the three risky assets.

The dates are described (thanks Andrei) by the following code:

d = [19261103; 20121231];  
ddte = datenum(num2str(d),'yyyymmdd');
ndte = (ddte(1):ddte(2))';
t = weekday(ndte);
ndte = ndte(t ~= 1 & t ~= 7);
yourdata = [date,mkt,hml,mom]; 
[yy,mm,dd] = datevec(yourdata(:,1));
ymd = [yy,mm,dd];
im = mm == 11 & dd >= 3;
ii = strfind([~im(1),im(:)'],[0 1]);

So I am stuck what do I have to add to retrieve the inverse covariance matrices per year.

Hopefully someone can help me out.

Thanks!

0 Comments

Kevin van Berkel

Products

No products are associated with this question.

1 Answer

Answer by Kevin van Berkel on 23 Apr 2013

I adjusted the code with cov in it, but it does not yield the desired results:

d = [19261103; 20121231];  
ddte = datenum(num2str(d),'yyyymmdd');
ndte = (ddte(1):ddte(2))';
t = weekday(ndte);
ndte = ndte(t ~= 1 & t ~= 7);
yourdata = [date,mkt,hml,mom]; 
[yy,mm,dd] = datevec(yourdata(:,1));
ymd = [yy,mm,dd];
im = mm == 11 & dd >= 3;
ii = strfind([~im(1),im(:)'],[0 1]);
sb = zeros(numel(ndte),1);
sb(ii) = 1;
sbc = cumsum(sb);
t = sbc > 0 & sbc ~= max(sbc);
sbb = sbc(t);
sb1 = find(sb(t));
wdta = yourdata(t,:);
[r, c] = ndgrid(sbb,1:size(wdta,2)-1);
out1 = accumarray([r(:) c(:)],reshape(wdta(:,2:4),[],1),[],@cov);
out = [ymd(ii(1:end-1),:),out1] ;

What do I do wrong?

0 Comments

Kevin van Berkel

Contact us