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.

 採用された回答

Geoff Hayes
Geoff Hayes 2018 年 6 月 15 日

0 投票

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 件のコメント

Giorgio Proietti
Giorgio Proietti 2018 年 6 月 15 日
That's true! Thank you so much!
BISWA BHUYAN
BISWA BHUYAN 2019 年 10 月 28 日
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 ExchangeLoops and Conditional Statements についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by