本文演示使用matlab计算证券市场各支股票的相关系数。
代码如下:
load stocklist_ss.mat %参见文章“Matlab抓取网页数据”
%定义时间范围
StartDate='01/01/2010';
EndDate='07/23/2015';
%下载价格数据
ls=size(s,1);
Prices=cell(ls,1);
for i=1:ls
StockName=s{i,1};
Prices{i}=yahooprice(StockName,StartDate,EndDate);%参见文章“Matlab获取Yahoo Finance 免费数据”
end
Prices=Prices(~cellfun(@isempty,Prices));%出去空元素
%保存价格数据
root=[pwd, '\'];
filename1=[root,'stockprice_ss','.mat'];
save(filename1, 'Prices');
%计算相关系数
n=length(Prices);
corrdata=zeros(n,n);
for i=1:n
for j=i:n
[~,idxi,idxj] = intersect(Prices{i}.Date,Prices{j}.Date);
cc=corrcoef(Prices{i}.Num(idxi,4),Prices{j}.Num(idxj,4));
corrdata(i,j)=cc(1,2);
end
fprintf(1,'第%d行已完成\n',i);
end
%保存相关系数
filename2=[root,'stockcorr_ss','.mat'];
save(filename2, 'corrdata');