
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 就可能差很多。
台股實證:換個算法,因子排名就翻盤

要找出分歧的原因,最直接的方法是做一個對照實驗:把每個月的因子值與報酬各自去掉前後 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 畫出來,可以看到價值因子穩定向上、動能則幾乎是一條平線。

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

判斷一個 IC 數字可不可信,除了看平均,更要看穩定度,也就是它有多少比例的月份維持同方向。價值因子的 Rank IC 有 65% 到 75% 的月份為正,資訊比率(IC 的平均除以標準差)也最高(本益比反向達 0.62);動能的 Rank IC 月度為正比例只有 50%,等於沒有穩定的排序力。
對選股研究來說,Rank IC 通常是更穩健的主指標,尤其是分布偏斜的因子(估值比率、市值、成交量)。Pearson IC 仍然可用,只是要記得它容易被極端值帶著走;當 Pearson 與 Rank 兩者打架時,代表這個因子的「訊號」集中在少數極端股票,而非全體排序,這件事本身就值得警惕。
這對選股研究的三個實務啟示
把上面的觀察,收斂成幾條評估任何一個選股因子時都用得上的原則:
-
報告因子表現時,預設用 Rank IC。 估值、市值、成交量這類分布偏斜的因子,用 Pearson IC 幾乎一定會低估它們的預測力。把 Rank IC 當主指標、Pearson 當輔助,能避免被少數極端股票誤導而錯過真正有效的因子。
-
兩種 IC 一起看,分歧本身就是訊號。 當一個因子的 Pearson IC 明顯高於 Rank IC,代表它的預測力集中在少數極端贏家身上,而這類股票實單時往往波動大、流動性差、不見得追得到;反過來若 Rank IC 高於 Pearson,代表訊號分散在全體股票,反而更容易實作與分散風險。
-
持有期和評估指標要一起決定。 動能在 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、為正比例逾七成,屬於相對強的訊號。
延伸閱讀
- Information Coefficient(IC)是什麼?台股因子 IC 實測
- 量化交易完整指南
- 因子分析實戰:3 因子選股
- 多因子選股策略教學:營收+動能+ROE+低波
- 台股選股回測:單因子與複合策略比較
- 用回測過擬合機率判斷策略真實力
- 量化名詞詞彙表:IC 定義
投資警語:本文為量化交易方法與工具的教學說明,所有數據與範例僅供研究參考,不構成投資建議。投資前請自行評估風險。
最後更新:2026-06|計算區間:2010-01 至 2026-06、20 日前瞻、全市場上市櫃|作者:FinLab 量化研究團隊(經量化研究員審閱)
FinLab AI
想建立自己的策略?
用自然語言描述你的選股想法,AI 自動驗證、回測、給你答案
免費開始
