微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

矩阵接近单一或严重缩放的投资组合排序

如何解决矩阵接近单一或严重缩放的投资组合排序

我正在尝试对 3 个规模的投资组合进行排序,并使用 LHS 上的超额投资组合回报和 RHS 上的 FF3 因子执行两阶段 Fama Macbeth 回归。

问题是我从 2 阶段回归中收到一条错误消息,指出“矩阵接近奇异值或严重缩放。结果可能不准确”。如果我只使用一些随机数或我的实际数据,我就会收到这个错误,所以我怀疑我的投资组合排序方式有误。

我在代码的最后一行发现错误。具体来说,在“XSReg”中。 这是“XSReg”的链接http://www.julianthimme.de/code

也许有人可以看到我在投资组合排序上搞砸的地方?

下面的代码只使用了一些随机数据

clear all 
clc
%% Setting up data
RET=[1 1 1 1; 2 2 2 2; 2 2 2 2; 3 3 3 3;3.5 3.3 3.4 3.6];
MEQ=[100 150 200 300;100 150 200 300;100 150 200 300;100 150 200 300;10 150 250 100];
SMB=[10; 4; 4; 5;6];
HML=[2; 3; 4; -1;-2];
market_ret=[10; 4; 4; 5;6];
rf=[0.10; 0.4; 0.4; 0.5;0.6];
T=length(RET);
nAss=size(RET,2);


%%Calculating breakpoints
nPort=3; %Nr of portfolios
Breakpoint=NaN(T,nPort-1);
for i=1:T; %setting the breakpoints
    Breakpoint(i,:)=  quantile(MEQ(i,:),nPort-1);
end


%%Assigning returns & market equity to matrixes based on breakpoints
h_meq=NaN(T,nAss);
m_meq=NaN(T,nAss);
l_meq=NaN(T,nAss);
h_ret=NaN(T,nAss);
m_ret=NaN(T,nAss);
l_ret=NaN(T,nAss);
for i=1:T;
    for k=1:nAss;
    if MEQ(i,k)>=Breakpoint(i,2);
       h_meq(i,k)=MEQ(i,k);
       h_ret(i,k)=RET(i,k);
    end
    if MEQ(i,k)<Breakpoint(i,2) & MEQ(i,k)>Breakpoint(i,1);
       m_meq(i,k);
       m_ret(i,k)<=Breakpoint(i,1);
      l_meq(i,k);
      l_ret(i,k);
    end
end
end

%%Calculating the weighted return
for i=1:T
    for k=1:nAss;
        w_ret_h(i,k)=h_ret(i,k)*(h_meq(i,k)/nansum(h_meq(i,k)));
        w_ret_m(i,k)=m_ret(i,k)*(m_meq(i,k)/nansum(m_meq(i,k)));
        w_ret_l(i,k)=l_ret(i,k)*(l_meq(i,k)/nansum(l_meq(i,k)));
    end
end


%%summing up to get portfolio returns
VWport=NaN(T,nPort);
for i=1:T
    VWport(i,1)=nansum(w_ret_l(i,:));
    VWport(i,2)=nansum(w_ret_m(i,3)=nansum(w_ret_h(i,:));
end
ExcessVWport=VWport-rf;

%%2stage Fama Macbeth regression
factors=[excessmkt SMB HML]; 
returns=ExcessVWport;
[lambda,tlambda,R2adj,RMSE,alpha,talpha,beta,tbeta,GRS,pval,vcv]=XSReg(returns,factors,1,[],2,'HACC_B');

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。