平均回報的 t 統計量,使用 Newey-West 標準誤差
我已經看到,在幾篇旨在評估某種投資策略的績效的論文中,他們使用 t 統計量來檢驗結果的顯著性。然而,這對我來說似乎有點奇怪,因為 t 統計假設你有一些理論平均值,而觀察到的平均值偏離了,這在文章中沒有說明。我所指的特定文章是Gatev 等人的*“配對交易:相對價值套利規則的表現”。*還有其他幾個使用類似的測試。
所以我的第一個問題是這些 t 統計量告訴他們什麼(或者我不明白什麼)?
此外,我想知道如何在 Matlab 中計算以這種方式使用的 Newey-West 標準誤差。據我了解,沒有內置功能可以做到這一點。經過一些Google搜尋,我可以找到一個程式碼,雖然它似乎有幾個缺陷(如果我理解關於它的對話)所以我猜它是不可用的。
似乎之前已經提出了幾個類似的問題但沒有成功(https://stats.stackexchange.com/questions/43898/newey-west-t-statistics),希望這次我幸運一點!
注意:我不確定我是否可以像這樣交叉發布,我最初在 stats.stackexchange 上提出了這個問題,但沒有成功。但由於它涉及到某種程度的量化交易,我想我不妨試著在這裡問一下。
在這種情況下,t 統計量用於確定收益是否在統計上不同於零(理論平均值)。一個小的 t 統計量意味著不能拒絕原假設(沒有顯著的超額收益)。Newey-West 標準誤差用於校正誤差項隨時間的相關性。
我編寫了一個 Matlab 函式來計算 Newey-West 標準誤差,並可以選擇由 Newey-West (1994) 外掛程序確定滯後長度。
為了使用程式碼,您需要計算回歸殘差矩陣。
function nwse = NeweyWest(e,X,L) % PURPOSE: computes Newey-West adjusted heteroscedastic-serial % consistent standard errors %--------------------------------------------------- % where: e = T x n vector of model residuals % X = T x k matrix of independant variables % L = lag length to use % % se = Newey-West standard errors %--------------------------------------------------- indexxx = sum(isnan(X),2)==0; X = X(indexxx,:); e = e(indexxx,:); [N,k] = size(X); k = k+1; X = [ones(N,1),X]; if nargin < 3 % Newey-West (1994) plug-in procedure L = floor(4*((N/100)^(2/9))); end Q = 0; for l = 0:L w_l = 1-l/(L+1); for t = l+1:N if (l==0) % This calculates the S_0 portion Q = Q + e(t) ^2 * X(t, :)' * X(t,:); else % This calculates the off-diagonal terms Q = Q + w_l * e(t) * e(t-l)* ... (X(t, :)' * X(t-l,:) + X(t-l, :)' * X(t,:)); end end end Q = (1/(N-k)) .*Q; nwse = sqrt(diag(N.*((X'*X)\Q/(X'*X)))); end
我認為這段程式碼可以解決您的問題。在您的情況下, h0 為零,而 lag 可以設置為等於 6(或 5)
函式 y=NWtest(ret,lag,h0)
T=size(ret,1); vv=var(ret); for l=1:1:lag cc=cov(ret(1:end-l),ret(l+1:end)); vv=vv+2*(1-l/lag)*cc(1,2); end y=(mean(ret)-h0)/sqrt(vv)*sqrt(T);
結尾