MOVING CORRELATIONs AND PLOT in a TIME SERIES FORMAT

조회 수: 10 (최근 30일)
Marco
Marco 2011년 5월 27일
답변: Samantha Cruz 2020년 6월 19일
Hi there, I need to construct a function that is able to plot moving correlations among each pairs in a subplot format (e.g. in case of 3 assets I want 3*3 matrix and each plot contain the time series of moving correlation with a specified window)
To be cleared I provide you my code at the moment, I am struggling with the plot part, if you believe there's an efficient way to code the first part of the function let me know:
% Moving correlation
%
% INPUT:
% - dataMatrix(r*c)
% - windowSize N
% - display matrix graph (1=graph, 0= no graph)
%
% OUTPUT:
% - correlationTV(r-N*c)
%
% e.g. 3 series: 1 with 2 and 2 with 3 and then 1 with 3
% e.g. 4 series: 1 with 2 and 2 with 3 and 3 with 4 and then
%
dataMatrix=rand(100,4);
windowSize=30;
graph=0
% function correlationTV = movingCorrelation(dataMatrix, windowSize, graph)
%% Dimension
[r,c] = size(dataMatrix);
% %% Some arg checking % % if nargin==1 % default: no garch effect & no multi start solver & no graph % windowSize=size(dataMatrix,1); % graph=0; % else % nargin==2 % graph=0; % end % % if windowSize>r && windowSize<2 % error('windowSize must smaller than number of raws and at least equal to 2'); % end % % if graph~=0 && graph~=1 % error('Insert 0 or 1 for graph'); % end
%% Prealocation
correlationTV = cell(r,1);
for i=1:r correlationTV{i,1}=nan(c,c); end
%% Code
count=windowSize;
for t = windowSize+1:r correlationTV{count,1} = corrcoef(dataMatrix(t-windowSize:t, :)); count=count+1; end
if graph==1 for i=1:c for j=1:c for l=windowSize:r end subplot(c,c,
subplot(i,j);
for i=windowSize:r
subplot
Thanks Marco

답변 (1개)

Samantha Cruz
Samantha Cruz 2020년 6월 19일

카테고리

Help CenterFile Exchange에서 Line Plots에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by