跳至主要內容
台股研究 約 6 分鐘閱讀

Rank IC 是什麼?和 Pearson IC 差在哪,
為什麼換算法台股因子排名就翻盤

Rank IC(Spearman 等級相關)和 Pearson IC 衡量的是不同東西。用 finlab 實測台股 2010–2026 月度橫截面:動能因子 Pearson IC +0.018 但 Rank IC −0.006、價值因子 Pearson 僅 +0.005 但 Rank IC 高達 +0.050,換個算法,因子強弱排名直接翻盤。本文解釋差異、用去極端值實驗找出原因,並附 Python 計算 Rank IC 的程式碼。

同一批台股因子,Pearson IC 說動能最強、Rank IC 說價值最強;選錯指標,整個因子排名都會反過來。

台股因子的 Pearson IC 與 Rank IC 對照長條圖,兩種算法給出相反的因子排名

Rank IC(資訊係數的等級相關版本)衡量的是「因子排序」與「未來報酬排序」的一致程度,用 Spearman 等級相關計算;Pearson IC 則衡量兩者數值的線性相關。 兩者常被混為一談,但在台股實測上,它們可能給出完全相反的結論。用 finlab 抓 2010–2026 的全市場上市櫃資料、以月度橫截面同時計算兩種 IC,下表就是結果:動能因子的 Pearson IC 是正的、Rank IC 卻是負的;價值因子剛好相反。換一個算法,哪個因子「比較強」的排名就翻盤了。

關鍵數字:同一批因子、兩種算法、相反排名

因子 Pearson IC Rank IC(Spearman) Rank IC 月度為正比例
動能(60 日) +0.018 −0.006 50.3%
短期反轉(20 日) −0.006 +0.018 48.7%
本益比(反向) +0.005 +0.050 74.5%
股價淨值比(反向) +0.003 +0.045 65.3%

資料來源:finlab 套件,全市場上市櫃、2010-01 至 2026-06、20 日前瞻、月度橫截面計算。如果你只看 Pearson IC,會得到「動能最強、價值很弱」的結論;如果你看 Rank IC,結論完全相反:價值因子的 Rank IC 高達 0.05、且有四分之三的月份為正,而動能的 Rank IC 幾乎是零甚至為負。同一份資料,兩個故事。

Rank IC 與 Pearson IC 差在哪?

兩者都是 Information Coefficient(IC),差別在「比較的是數值還是排序」:

  • Pearson IC:把每檔股票的因子值與未來報酬直接算線性相關。它對極端值很敏感:少數因子值或報酬特別大的股票,會主導整個相關係數。
  • Rank IC:先把因子值與未來報酬各自換成「排名」,再算相關(等於 Spearman 等級相關,由 Spearman (1904) 提出)。它只在乎「排序對不對」,不在乎差距多大,因此對極端值穩健。

finlab 內建的 factor_analysis.ic 計算的是 Pearson 版本。當一個因子的分布很偏(例如本益比有少數極端值),Pearson 與 Rank 兩種 IC 就可能差很多。

台股實證:換個算法,因子排名就翻盤

去除極端值後 Pearson IC 向 Rank IC 靠攏的長條圖,顯示分歧來自離群值

要找出分歧的原因,最直接的方法是做一個對照實驗:把每個月的因子值與報酬各自去掉前後 1% 的極端值(winsorize)後,再算一次 Pearson IC。結果很清楚:

  • 動能的 Pearson IC 從 +0.018 掉到 +0.011,代表它的正值有相當一部分來自少數「漲很多的極端贏家」,而非全體排序。
  • **價值因子(本益比、股價淨值比反向)**的 Pearson IC 反而上升(本益比從 +0.005 升到 +0.009、股價淨值比從 +0.003 升到 +0.011),代表原本的低 Pearson 是被極端的估值離群值壓低的。

去掉極端值後,Pearson IC 全面向 Rank IC 靠攏。這證明兩者的分歧主要來自離群值:Pearson 把少數極端股票的影響放大,Rank IC 則把每檔股票一視同仁。

動能的弔詭:Pearson 正、Rank 近零

動能因子最值得玩味。它的 Pearson IC 是正的,但 Rank IC 幾乎是零、甚至略為負,而且月度為正的比例只有 50%,跟丟銅板沒兩樣。對照組「短期反轉(過去 20 日報酬取負)」剛好是一面鏡子:Pearson IC 為負,Rank IC 卻是正的 +0.018。

這背後是台股的短期反轉效應Jegadeesh (1990) 很早就記錄到,個股報酬在「下一個月」這種短期尺度上傾向反轉(過去一個月的輸家容易反彈)。用 60 日動能去預測未來 20 日報酬,正好踩在這個短期反轉的尾巴上:少數強勢股延續了漲勢(撐起 Pearson IC 的正值),但全體的排序關係被短期反轉抵銷掉了(Rank IC 接近零)。把累積月度 Rank IC 畫出來,可以看到價值因子穩定向上、動能則幾乎是一條平線。

價值與動能的累積月度 Rank IC 曲線,價值穩定向上、動能幾乎是平線

這不代表動能在台股完全無效,而是提醒:動能是偏中長期的訊號,用太短的前瞻期、又只看 Pearson IC,很容易高估它的排序選股能力。想看動能 IC 如何隨持有期拉長而升高,可參考 IC 教學裡的衰減分析

哪個比較可信?看穩定度

各因子 Rank IC 月度為正比例長條圖,價值因子超過六成、動能僅約一半

判斷一個 IC 數字可不可信,除了看平均,更要看穩定度,也就是它有多少比例的月份維持同方向。價值因子的 Rank IC 有 65% 到 75% 的月份為正,資訊比率(IC 的平均除以標準差)也最高(本益比反向達 0.62);動能的 Rank IC 月度為正比例只有 50%,等於沒有穩定的排序力。

對選股研究來說,Rank IC 通常是更穩健的主指標,尤其是分布偏斜的因子(估值比率、市值、成交量)。Pearson IC 仍然可用,只是要記得它容易被極端值帶著走;當 Pearson 與 Rank 兩者打架時,代表這個因子的「訊號」集中在少數極端股票,而非全體排序,這件事本身就值得警惕。

這對選股研究的三個實務啟示

把上面的觀察,收斂成幾條評估任何一個選股因子時都用得上的原則:

  1. 報告因子表現時,預設用 Rank IC。 估值、市值、成交量這類分布偏斜的因子,用 Pearson IC 幾乎一定會低估它們的預測力。把 Rank IC 當主指標、Pearson 當輔助,能避免被少數極端股票誤導而錯過真正有效的因子。

  2. 兩種 IC 一起看,分歧本身就是訊號。 當一個因子的 Pearson IC 明顯高於 Rank IC,代表它的預測力集中在少數極端贏家身上,而這類股票實單時往往波動大、流動性差、不見得追得到;反過來若 Rank IC 高於 Pearson,代表訊號分散在全體股票,反而更容易實作與分散風險。

  3. 持有期和評估指標要一起決定。 動能在 20 日前瞻的 Rank IC 近零,是因為踩到短期反轉;把持有期拉長,它的排序力才會浮現。先想清楚策略要持有多久,再挑對應的因子與前瞻期,比盲目追求一個漂亮的 IC 數字更重要。

這也是為什麼成熟的因子研究流程,會把 Rank IC、分位數單調性與 IC 穩定度三者一起看,用多個角度交叉驗證,而不是只盯著單一數字下結論。一個因子值不值得放進策略,看的是它在多種檢驗下是否一致地有效,而非某一個指標剛好算出漂亮的數字;這個習慣能擋掉很多看起來很強、實單卻無效的假訊號。

怎麼在 finlab 算 Rank IC?

finlab 的 factor_analysis.ic 給的是 Pearson 版本。要算 Rank IC,自己對每個再平衡日做一次 Spearman 等級相關即可:

顯示程式碼
import pandas as pd
from finlab import data
 
adj = data.get('etl:adj_close')
fwd = adj.shift(-20) / adj - 1            # 未來 20 個交易日報酬
momentum = adj / adj.shift(60) - 1        # 動能因子(過去 60 日報酬)
 
# 每月底計算一次橫截面 Rank IC(Spearman)
rebalance_dates = adj.resample('ME').last().index
rank_ic = []
for dt in rebalance_dates:
    day = adj.index[adj.index <= dt][-1]
    f = momentum.loc[day].dropna()
    r = fwd.loc[day].reindex(f.index).dropna()
    common = f.index.intersection(r.index)
    if len(common) < 100:
        continue
    rank_ic.append(f[common].corr(r[common], method='spearman'))
 
print(round(pd.Series(rank_ic).mean(), 4))   # 動能 20 日 Rank IC ≈ -0.006

第一次取資料時 finlab 會自動引導登入,照套件指示操作即可。把 momentum 換成本益比、股價淨值比等因子,就能重現本文那張對照表。

計算口徑與限制

  • 方法:月度橫截面,前瞻期 20 個交易日;Rank IC 用 Spearman、Pearson IC 用一般相關,兩者在同一批日期、同一批股票上計算,確保公平對照。
  • 與 IC 教學文的數字差異:本文用月度計算,IC 教學文用的是 finlab 逐日 ic(),所以動能 Pearson IC 一邊約 0.018、一邊約 0.020,屬於計算頻率差異,結論方向一致。
  • 重疊報酬:20 日前瞻在相鄰月份會有部分重疊,會降低統計獨立性;本文採月度抽樣已大幅減輕,但極端期間的群聚仍可能影響短窗結果。
  • 股票池:全市場上市櫃,未額外做流動性過濾;嚴謹的因子研究會再加成交額門檻。
  • 數字可重現:上表由全市場資料逐月計算後平均,使用相同資料窗重跑即可重現。

常見問題(FAQ)

Rank IC 是什麼?

Rank IC 是把因子值與未來報酬各自換成排名後,再計算的相關係數(Spearman 等級相關)。它衡量「因子排序」對「報酬排序」的預測力,對極端值穩健,是因子研究常用的主指標。

Rank IC 和 Pearson IC 差在哪?

Pearson IC 比的是數值的線性相關、對極端值敏感;Rank IC 比的是排序、對極端值穩健。當因子分布偏斜時,兩者可能差很多甚至方向相反,本文的台股實證就是例子。

finlab 的 ic() 是哪一種?

finlab factor_analysis.ic 計算的是 Pearson 版本。要算 Rank IC,需自行對每期做 Spearman 相關,做法見本文程式碼。

為什麼動能的 Rank IC 是負的、Pearson 卻是正的?

因為動能的正 Pearson IC 有相當部分來自少數極端強勢股;在 20 日的短前瞻期上,台股有短期反轉效應,全體的排序關係被抵銷,所以 Rank IC 接近零或略負。動能在較長的持有期上排序力較好。

該用 Rank IC 還是 Pearson IC?

研究選股因子通常以 Rank IC 為主指標,因為它較穩健;Pearson IC 可當輔助。兩者方向不一致時,代表因子訊號集中在少數極端股票,要特別小心。

Rank IC 多少算好?

和 Pearson IC 類似,單因子月頻 Rank IC 約 0.03 到 0.05、且月度為正比例偏高(六成以上)就算不錯。本文價值因子的 Rank IC 約 0.05、為正比例逾七成,屬於相對強的訊號。

延伸閱讀


投資警語:本文為量化交易方法與工具的教學說明,所有數據與範例僅供研究參考,不構成投資建議。投資前請自行評估風險。

最後更新:2026-06|計算區間:2010-01 至 2026-06、20 日前瞻、全市場上市櫃|作者:FinLab 量化研究團隊(經量化研究員審閱)

FinLab AI

想建立自己的策略?

用自然語言描述你的選股想法,AI 自動驗證、回測、給你答案

免費開始

更多多因子選股研究

查看全部