Как вычислить Rsquared из регрессии GLS в двухшаговой процедуре Fama Macbeth - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь вычислить RSquared из процедуры Fama Macbeth с использованием регрессии GLS, но по какой-то причине я получаю отрицательные значения, поэтому мне было интересно, в чем может быть проблема.

Процедура Fama Macbeth объясняет return_{it}, i = 1,..,N, t = 1,...,T с использованием ряда факторов_ {kt}, k = 1, ..., K (аналогично данным панели). У него два шага. 1. Выполните регрессии временных рядов доходов по факторам для получения факторных нагрузок beta_k 2. Запустите регрессии поперечного сечения доходов по оцененному beta_k, чтобы получить цену риска

Я корректирую beta_k с помощью процедуры GLS.

Мне было интересно, при расчете прогнозируемых значений для расчета нашего 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). Любое предложение будет высоко оценено!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...