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-TW/learn/factor-models-factor-loadings-finance-explained)、[穩健標準誤與 HAC](/zh-TW/learn/robust-standard-errors-heteroskedasticity-hac-finance-explained),以及[秩資訊係數](/zh-TW/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 的第二階段斜率估計什麼?
選擇答案即可查看解釋