如何在两步Fama Macbeth过程中通过GLS回归计算Rsquared

时间:2019-10-16 10:29:54

标签: matlab regression factors

我正在尝试使用GLS回归从Fama Macbeth过程计算RSquared,但是由于某种原因,我得到了负值,所以我想知道问题出在哪里。

Fama Macbeth过程使用许多因子_ {kt},k = 1,...,K(类似于面板数据)来解释return_ {it},i = 1,..,Nt = 1,...,T。 它有两个步骤。 1.对因子收益进行时间序列回归以获得因子负荷beta_k 2.对估计的beta_k进行收益的横截面回归以获得风险价格

我正在使用GLS程序调整beta_k。

我想知道在计算预测值以计算R2时,我们是否要获取每个时间段的残差或平均投资组合收益,即残差y_{i,t}−\hat{y}_{i,t}i×t的残差数)或仅y_i−\hat{y}_i(残渣数i)。

这就是我尝试的:对于一系列因素和回报:

[Tf,K]    = size(factors);
[T,N]     = size(returns);

% Time series regressions
X         = [ones(T,1) factors];
alphaBeta = X\returns;
alpha     = alphaBeta(1,:)';
beta      = alphaBeta(2:end,:)';
beta = [ones(N,1),beta];

% Cross-sectional regression
EReturns  = mean(returns)';
lambda    = beta\EReturns;
miReturns = beta*lambda;

%GLS estimation
u2 = cov(returns);
Sigma_u =  u2/T;
lambda_GLS    = inv((beta'*inv(Sigma_u)*beta))*beta'*inv(Sigma_u)*EReturns;
miReturns_GLS = beta*lambda_GLS;

%R Square calculation
u = EReturns-miReturns_GLS;
RSS_GLS       = norm(u-mean(u))^2; % Regression sum of squares.
TSS_GLS       = norm(EReturns-mean(EReturns))^2;
R2_GLS = 1-RSS_GLS/TSS_GLS;
R2_adj_GLS = 1-((N-1)/(N-K))*RSS_GLS/TSS_GLS;

问题是我得到的RSquare(R2_GLS)值为负。 任何建议将不胜感激!

0 个答案:

没有答案