Fama–MacBeth 迴歸:兩步估計風險溢價
從時間序列 beta 估計到逐期橫截面風險價格,了解 Fama–MacBeth 兩步法,並分清標準誤、Shanken 調整和 HAC 推論。
本指南內容它估計的是曝險價格,不是一個時間序列 beta
簡短摘要
Fama–MacBeth 方法先用每項測試資產的時間序列估計因子曝險,再於每個日期的橫截面上以這些估計曝險解釋資產回報,並將逐期風險價格斜率按時間取平均。斜率序列通常用來計算不確定性。不過,第二步的標準誤不會自動涵蓋 beta 估計誤差、序列相關或定價模型設定錯誤;顯著的平均風險價格亦不是交易利潤估計。
它估計的是曝險價格,不是一個時間序列 beta
因子 beta 和因子風險價格回答不同問題。beta 描述某項資產的回報在第一步時間序列迴歸中如何隨因子變動。風險價格係數通常寫作 \(\lambda\),描述在第二步橫截面中,估計 beta 不同的資產其回報有何差異。Fama–MacBeth 方法先估計每個日期的風險價格,再按時間匯總這些估計。
當研究問題是:在一組指定股票或投資組合中,某個假設風險因子的曝險是否與平均回報相關,這種設計便有用。它是統計上的資產定價程序,不是因果識別設計;它本身也沒有指定一個只用當時可得資訊便能實際交易的投資組合。
Fama 和 MacBeth 的原始研究,對紐約證券交易所股票重複進行橫截面風險與回報迴歸。其後的研究,包括 Fama 和 French 的實證檢驗,令逐月估計橫截面斜率、再估計和檢驗平均風險價格成為常見做法。理解此方法的關鍵,是分開看兩次迴歸,並檢查每一步各自使用的樣本和假設。
第一步:估計每項測試資產的因子曝險
對每項資產或測試投資組合 \(i\),估計如下的時間序列迴歸:
\[ r^{e}_{i,t} = \alpha_i + \boldsymbol{\beta}_i^\top \mathbf{f}_t + \varepsilon_{i,t}, \]
其中 \(r^{e}_{i,t}\) 是資產的超額回報,\(\mathbf{f}_t\) 是日期 \(t\) 的因子回報向量,\(\boldsymbol{\beta}_i\) 是因子曝險向量。擬合得到的 \(\hat{\boldsymbol{\beta}}_i\) 之後會成為第二步的解釋變數。只含市場因子的例子會有一個 beta;多因子模型則會為每項因子估計一個負荷量。
第一步需要因子在時間序列上有足夠變動,才能估計斜率。長估計窗口會提供更多觀測,但可能混合不同市場狀態;短窗口較能反映近期曝險,卻可能令 beta 估計更不穩。研究者應說明回報頻率、樣本日期、因子構造、缺失資料規則、截距處理方式和估計窗口。
這不代表所有 beta 都必須用全樣本估計。在樣本結束後進行資產定價檢驗時,全樣本 beta 可以概括研究樣本的曝險。但在歷史交易模擬中,用未來觀測估計 beta 會洩漏資訊。此時應按每個模擬決策時點重新估計 beta,只使用此前已可取得的資料。
第二步:按每個日期的橫截面為曝險定價
在每個日期 \(t\),以第一步的 beta 對當日測試資產回報進行橫截面迴歸:
\[ r^{e}_{i,t} = \lambda_{0,t} + \hat{\boldsymbol{\beta}}_i^\top \boldsymbol{\lambda}_t + \eta_{i,t}. \]
\(\boldsymbol{\lambda}_t\) 是該日期的風險價格向量。若只有一個因子,橫截面斜率 \(\lambda_t\) 表示在該日期的資產橫截面中,估計 beta 每相差一個單位所對應的回報差異。\(\lambda_{0,t}\) 是獨立的橫截面截距。它應否自由估計、受限制,或解讀為零 beta 回報,視乎所檢驗的模型,以及使用原始回報還是超額回報。
第二個迴歸是在一個日期比較不同資產,並非再做一次時間序列迴歸。擬合效果會受測試資產數量和組成、估計 beta 的橫截面分散程度,以及 beta 之間的相關性影響。若資產間的 beta 幾乎沒有差異,橫截面便缺乏資訊去區分風險價格。加入大量曝險相近的資產,不能憑空創造不存在的曝險差異。
重複這項迴歸會得到風險價格序列 \(\hat{\boldsymbol{\lambda}}_1,\ldots,\hat{\boldsymbol{\lambda}}_T\)。因子 \(k\) 的 Fama–MacBeth 估計量,是下列時間平均:
\[ \bar{\lambda}_k = \frac{1}{T}\sum_{t=1}^{T}\hat{\lambda}_{k,t}. \]
平均值的單位和頻率,與第二步橫截面迴歸所用回報的單位和頻率相同。如果橫截面採用權重、部分日期沒有觀測,或資產範圍隨時間改變,這些選擇會改變平均值所代表的對象,應一併報告。

用計算例子分開單月斜率與時間平均
假設三個測試投資組合的第一步市場 beta 估計值分別為 \(0.5\)、\(1.0\) 和 \(1.5\)。在一個假設月份,三者的超額回報分別是 \(0.3\%\)、\(0.8\%\) 和 \(1.3\%\)。這三個點恰好落在以下直線上:
\[ r^{e}_{i,t} = -0.2\% + 1.0\%\times\hat{\beta}_{i}. \]
該月估計斜率為 beta 每增加一個單位,回報增加 1.0 個百分點;截距為 \(-0.2\%\)。這個完全擬合的例子刻意很簡單,只用來示範計算;它不能證明市場 beta 已被定價,三個點也不足以構成有用的實證檢驗。
再假設六個不同月份估計的第二步斜率,依次為每 beta 單位 \(0.8\%\)、\(-0.4\%\)、\(1.0\%\)、\(-0.2\%\)、\(0.6\%\) 和 \(0.0\%\)。其算術平均為:
\[ (0.8 - 0.4 + 1.0 - 0.2 + 0.6 + 0.0)/6 = 0.3\%\text{每月}. \]
第一個月的斜率不是最終的 Fama–MacBeth 估計量;估計量是六個日期斜率的平均。負值月份也會留在計算中。只選正值月份會改變估計目標,並增加另一重篩選。這些虛構數字只示範算術,不代表市場結果,也不表示因子能預測回報。
常規標準誤以時間作為推論維度
最簡單的計算,是求出 \(T\) 個月度斜率估計的樣本標準差 \(s_\lambda\),再除以 \(\sqrt{T}\):
\[ \operatorname{SE}(\bar{\lambda}) = \frac{s_\lambda}{\sqrt{T}}. \]
將平均斜率估計值除以標準誤,便得到相應的 t 統計量。這項計算以時間上重複觀測到的斜率,估計平均風險價格的不確定性。資產數 \(N\) 會影響每月橫截面估計斜率的能力,但不能取代時間平均標準誤中的 \(T\)。
以上述六個假設斜率為例,其樣本標準差約為每月 0.576 個百分點。除以 \(\sqrt{6}\),常規標準誤約為 0.235 個百分點;\(0.3/0.235\) 約為 1.28。六個觀測遠不足以作出可靠的顯著性判斷。這個計算只說明:平均值為正,和平均值估計得很精確,是兩回事。
常規標準誤亦依賴斜率時間序列的條件。若估計值有序列相關,假設各期觀測獨立的標準誤可能會錯誤衡量不確定性。樣本較短或資產組成改變時,漸近 t 統計量尤其容易不穩。報告 \(\lambda_t\) 序列的長度和頻率,不要只列出橫截面資產數量。
Fama–MacBeth 和 pooled OLS 的點估計未必不同
有時有人會將「Fama–MacBeth」和「pooled 面板迴歸」對比,好像兩者一定會產生不同斜率。其實有一個重要的特殊情況:若每個日期都包含相同資產、beta 解釋變數在日期間固定,而且每月橫截面都使用相同的普通最小二乘設計,逐日期 OLS 係數的平均值會等於 pooled OLS 的共同斜率係數。兩者概括的是同一組平衡橫截面迴歸。
若資產集合或權重隨日期改變、beta 隨時間變化、面板不平衡、控制變數不同,或 pooled 模型施加額外限制,這種相等關係便可能不成立。在這些情況中,各方法可能以不同方式加權日期或觀測值,回答不同的樣本問題。不要只憑方法名稱選擇;應列出確切的設計矩陣、加權方式和目標係數。
即使點估計相同,不確定性的計算亦可能不同。Fama–MacBeth 推論使用橫截面斜率隨時間的變化。pooled 迴歸則需要配合面板誤差結構的協方差估計量。按日期或資產群集、雙向協方差估計,或時間序列 HAC 估計都依賴不同假設;單是把模型稱為 pooled 或 Fama–MacBeth,並不會令任何一種標準誤自動正確。
估計 beta 和 HAC 處理不同的不確定性
第二步將 \(\hat{\boldsymbol{\beta}}_i\) 當成已知值,但它其實來自第一步估計迴歸。生成解釋變數的估計誤差,可能影響風險價格估計及其不確定性。Shanken 的分析針對特定資產定價設定推導 beta 定價推論的調整;它不是能修復每一種兩步設計的通用乘數。後續研究在不同條件下,分析大樣本性質和其他估計量。應說明使用哪種修正或推論方法,以及令它適用的假設。
\(\hat{\lambda}_{k,t}\) 的序列相關是另一個問題。例如重疊的多月回報會令相鄰日期的第二步斜率共用部分回報觀測。Newey–West 等異方差及自我相關一致(HAC)協方差估計,會在選定的滯後窗口內考慮序列相依,從而調整時間平均的方差估計。它不會把第一步 beta 估計誤差補回第二步、不會修正因子設定錯誤,也不能消除前視偏差。反過來,Shanken 調整也不能代替檢查 lambda 序列的相依性。
Jagannathan 和 Wang,以及 Shanken 和 Zhou,分別在特定模型和抽樣條件下分析 beta 定價程序的性質。因此應描述實際使用的兩步設計,而不是籠統地說普通 Fama–MacBeth 標準誤必定過小或必定有效。報告 beta 是只估計一次還是定期更新、如何處理 lambda 序列的相依、是否使用生成 beta 修正,以及這些選擇為何符合研究問題。
顯著的平均風險價格不是交易利潤估計
若平均 \(\lambda\) 為正且在統計上可區分於零,這表示在指定的測試資產範圍、因子定義、beta 估計和推論程序下,樣本中估計曝險較大的資產平均有較高回報。這並不表示投資者能在扣除成本後賺取該回報差,也不證明因子是回報的因果來源,或定價模型是正確的。
若改變因子組合、樣本期間、投資組合構造、beta 窗口、測試資產或加權方式,結果都可能改變。若在多個因子、樣本切分和模型規格中搜尋,還會產生多重檢定問題。只檢驗一項估計風險價格,也不能概括每項資產的聯合定價誤差。應說明結果是條件相關、基於模型的定價檢定,還是樣本外預測;不要混用這些標籤。
對實際或模擬策略,曝險和投資組合權重必須只用當時可得的資訊建立。策略也需要可執行的入市價格、換手率、交易成本、融資、容量和再平衡規則。因子 beta 是曝險估計;平均 \(\lambda\) 不是某個會自動賺取該 beta 溢價的投資組合回報。相關概念可參閱[因子載荷與因子模型](/zh-HK/learn/factor-models-factor-loadings-finance-explained)、[穩健標準誤與 HAC](/zh-HK/learn/robust-standard-errors-heteroskedasticity-hac-finance-explained),以及[秩相關資訊係數](/zh-HK/learn/information-coefficient-rank-ic-quant-trading-explained)。
記錄設計,讓其他研究者可以重現
可解讀的結果應識別測試資產、因子回報、如有使用的無風險回報序列、回報單位、日期頻率和樣本期間。亦應記錄 beta 如何估計、第一步窗口是否與第二步檢驗期間重疊、每個日期納入哪些資產、如何處理缺失回報和成分變動、橫截面是否加權,以及截距是否納入或受限制。
推論部分應報告日期斜率數量 \(T\)、其時間序列平均和離散程度、標準誤估計方法、任何 HAC 頻寬、beta 估計修正,以及有限樣本處理選擇。除 t 統計量外,也要展示 beta 分散程度和橫截面擬合;資產數量很多,也不能彌補曝險幾乎相同的問題。可比較合理的估計窗口、因子定義和測試資產構造,但不要只挑選剛好給出最小 p 值的版本。
原始方法和應用研究提供例子,卻不能保證每個現代資料集都符合其假設。Fama 和 MacBeth 的 1973 年論文、Fama 和 French 的 1992 年橫截面檢驗、Shanken 的 beta 定價分析、Jagannathan 和 Wang 的漸近分析、Shanken 和 Zhou 的 beta 定價估計量比較,以及 Newey 和 West 的 HAC 協方差方法,分別討論設計中的不同部分。報告系數時,也應交代相應的假設。
常見問題
Q1Fama–MacBeth 迴歸是因果檢定嗎?
不是。它在選定的定價模型和測試資產設計下,估計資產曝險與回報的關聯。作因果解讀需要另外說明識別依據。
Q2增加資產數量一定會令風險價格估計更精確嗎?
不會。更多資產可能改善某日期的橫截面估計,但精確度亦取決於 beta 的分散程度、beta 估計是否準確,以及有多少個日期納入平均。
Q3甚麼時候應考慮使用 HAC 標準誤?
如果日期特定的風險價格序列可能有異方差或序列相關,例如回報期互相重疊時,可以考慮使用 HAC。應列明滯後窗口,並記住 HAC 不會修正第一步 beta 估計誤差。
資料來源與延伸閱讀
回報問題
我們會準備一封包含本文連結的電郵。寄出後,Mark 才會收到你的回報
快速檢查
讀完指南後,用 3 道題檢查一下
問題 01
在標準兩步程序中,日期 t 的第二步斜率估計甚麼?
選擇答案即可查看解釋