全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
1248 0
2011-10-10
%基金排名
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% a为基金每月收益率序列,y为排名年限2年或3年
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function [r,s,q,qq]=fund_rank(a,y)
if y==2
    row1=25;
    y1=6;y2=12;y3=24;
else
    row1=37;
    y1=12;y2=24;y3=36;
end
id=a(:,1);
a=a(:,2:row1);
[n]=size(a);
a(a==9999)=nan;
b=zeros(n(1)-1,n(2));%创建零矩阵
c=zeros(n(1)-1,n(2));
for i=2:n(1)
    for j=1:n(2)
        if ~isnan(a(i,j))
           b(i-1,j)=a(i,j)-a(1,j);        %超额收益率
           c(i-1,j)=min(a(i,j)-a(1,j),0); %超额收益率(下行风险)
        else
            b(i-1,j)=nan;
            c(i-1,j)=nan;
        end
    end
end
m=zeros(n(1)-1,3);
o=zeros(n(1)-1,3);
for i=1:n(1)-1
    if ~isnan(b(i,:))
    m(i,1)=mean(b(i,1:y1));
    m(i,2)=mean(b(i,1:y2));
    m(i,3)=mean(b(i,1:y3));
    o(i,1)=std(c(i,1:y1));
    o(i,2)=std(c(i,1:y2));
    o(i,3)=std(c(i,1:y3));
    else
        m(i,:)=nan;
        o(i,:)=nan;
    end
end
s=[id(2:end),m,o];
s=sortrows(s,2);
tem=find(isnan(s(:,2)));
q=s(1:tem(1)-1,:);
%q(:,2:end)=zscore(q(:,2:end));
for i=2:7
    max_q=max(q(:,i));
    min_q=min(q(:,i));
    q(:,i)=(q(:,i)-min_q)/(max_q-min_q);
end
qq=[q(:,1),q(:,2)-q(:,5),q(:,3)-q(:,6),q(:,4)-q(:,7)];
nn=size(qq);
r=zeros(nn(1),2);
for i=1:nn(1)
    r(i,1)=qq(i,1);
    r(i,2)=0.1*qq(i,2)+0.35*qq(i,3)+0.55*qq(i,4);
end
r=sortrows(r,-2);


小弟才学matlab不懂啊,贵求解释上述代码,最好每一行给一个注释,还有涉及到的读取数据文件的语句以及创建的数据文件名

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群