how to create a loop for rolling window returns?

Hi to all,
I do not know the MATLAB environment well, I wanted to ask if someone could tell me how to create a loop with the sample - out sample method. I would like to find the mean and the covariance of returns, as follows:
returns = rand(2013, 30);
I would like to find the mean from 1 to 500, from 21 to 521, etc.
I'll explain better: M1 = mean of RR 1->500; M2 = mean of RR 21->521; M3 = mean of RR 41->541; ...
With a step of 20 positions.I tried to follow these examples but I could not:
Thanks for your help.

 采纳的回答

Giorgio - rather than dynamically creating variables (never a good idea, see TUTORIAL: Why Variables Should Not Be Named Dynamically (eval)) consider using arrayfun to create a cell array of means. For example,
n = 2013;
m = 500;
returns = rand(n, 30);
returnsMeans = arrayfun(@(k)mean(returns(k:m+k-1,:)),1:20:(n-m+1),'UniformOutput',false);
The above should return the means for 76 blocks of size 500. You can probably do something similar using cov.

3 个评论

That's true! Thank you so much!
Sir, I wish to apply above code (returnsMeans = arrayfun(@(k)mean(returns(k:m+k-1,:)),1:20:(n-m+1),'UniformOutput',false); )to multiple column, then how can i modify the code? Please suggest

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Loops and Conditional Statements 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by