1 view (last 30 days)

How would you create a for-loop for this case, I want to make the S and C and R jump on 25 days

close all; clear all; clc;

data1 = xlsread('dataCompanyprices','Sheet1','W4:AP1250');

S = std(data1)*sqrt(252); %Standard deviation for assets

C = cov(data1)*252; %Annual Covariance

r = mean(data1)*252; %Annual asset return

e = ones(1,20); %Unit vector

Paresh yeole
on 28 Jan 2020

Referring from your previous question,

I think this is what you need :

for i=1:(no_of_datapoints/25)

S(i) = std(data1(1+(i-1)*25:i*25))*sqrt(252); %Standard deviation for assets

C(i) = cov(data1(1+(i-1)*25:i*25))*252; %Annual Covariance

r(i) = mean(data1(1+(i-1)*25:i*25))*252;

end

Paresh yeole
on 28 Jan 2020

My solution is for a 1-D array of data points. If you have multiple columns, then you need an extra for loop. If I understand correctly,

for j=1:no_of_columns

%rep

data = data1(:,j);

for i=1:(no_of_datapoints/25)

S(i,j) = std(data(1+(i-1)*25:i*25))*sqrt(252); %Standard deviation for assets

C(i,j) = cov(data(1+(i-1)*25:i*25))*252; %Annual Covariance

r(i,j) = mean(data(1+(i-1)*25:i*25))*252;

% here you will get a matrix of all the three values which correspond to set of 25 points

% for every column

end

end

Sign in to comment.

Sign in to answer this question.

Opportunities for recent engineering grads.

Apply Today
## 2 Comments

## Direct link to this comment

https://au.mathworks.com/matlabcentral/answers/502420-how-to-create-for-loop-for-this-case#comment_790917

⋮## Direct link to this comment

https://au.mathworks.com/matlabcentral/answers/502420-how-to-create-for-loop-for-this-case#comment_790917

## Direct link to this comment

https://au.mathworks.com/matlabcentral/answers/502420-how-to-create-for-loop-for-this-case#comment_790922

⋮## Direct link to this comment

https://au.mathworks.com/matlabcentral/answers/502420-how-to-create-for-loop-for-this-case#comment_790922

Sign in to comment.