為什麼需要中性化
假設你用本益比這個因子來選股,本益比低的股票被視為便宜、值得買。但問題是:不同行業的本益比水準本來就不同。銀行股的本益比普遍偏低,科技股的本益比普遍偏高。如果你直接用本益比排序,你可能會選出一堆銀行股,不是因為銀行股真的被低估,而是因為銀行股本來就長這樣。
同樣地,市值也會干擾因子。小盤股的波動率通常比大盤股高,如果你用波動率因子選股,你可能會選出一堆小盤股,不是因為低波動有效,而是因為小盤股本來波動就大。
中性化處理的目的,就是要把這些干擾濾掉,讓因子值反映的只是這個股票在同樣市值、同樣行業的股票中,相對表現如何。
市值中性化:讓因子不再偏愛大盤或小盤
市值中性化的操作,說穿了就是一場回歸。你把因子值,比如本益比,當作Y,把市值的對數當作X,跑一條回歸線,因子值 = a + b × ln(市值) + 殘差。那個殘差,就是剔除市值影響後,股票在因子上的真實相對位置。如果某檔股票的實際因子值高於回歸線的預測,代表它在同規模股票裡頭表現突出;低於預測,就代表相對遜色。實務上,你甚至可以直接寫成調整後的因子等於原始因子減去 b 乘上 ln(市值),這個迴歸係數 b 每個月滾動更新一次,因為市值跟因子的關係不會永遠不變。
行業中性化:讓因子不再偏愛特定行業
行業中性化的做法類似,只是把市值的變數換成行業別。
因為行業是類別變數,不能直接做迴歸。常見的做法是:先將行業轉換為虛擬變數,例如金融業、科技業、傳產業……每種行業都變成一個0或1的變數,然後用因子值對這些行業虛擬變數做迴歸,再取殘差。
更簡單的實務做法是:在每個行業內部獨立計算因子的Z-score。也就是說,不是全市場一起標準化,而是先按行業分組,在每個行業組內各自標準化。這樣做出來的因子值,每個行業內部的分佈都是一樣的,行業之間的差異被消除了。
這種做法實務上更常見,因為它不需要跑回歸,計算簡單,而且效果直觀。缺點是它沒有考慮市值,所以實務上通常會先做市值中性化,再做行業中性化,或者反過來。
市值+行業的雙重中性化
實務上,因子通常需要同時做市值和行業中性化。常見的做法有兩種。
- 方法一:兩步驟回歸。先用因子值對市值做回歸,得到殘差,市值中性化,再用這個殘差對行業虛擬變數做回歸,得到最終的殘差。這種方法的優點是比較嚴謹,缺點是計算稍微複雜。
- 方法二:行業內市值中性化。在每個行業內,用因子值對市值做回歸,取殘差。這個做法等於在每個行業內部消除市值影響,同時也消除了行業差異。
實務操作中,更常見的方式是先按行業分組,然後在每個行業內對市值做中性化,最後再將所有股票的因子值標準化。這個流程相對簡單,且在多因子模型中已被廣泛採用。
中性化的頻率與實務細節
中性化的參數需要定期更新。實務上,每個月或每季重新計算一次中性化係數,因為市值和行業的影響會隨著時間變化。如果因子值本身是以季頻更新的,可以每季重新計算一次。
原文出處:voltima_quant (@voltima_quant) 於 Threads · 查看原文

