Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

資訊係數(Information Coefficient,IC)是做什麼用的?

來源:FinLab:Information Coefficient(IC)與量化交易

白話整理


一句話總結

IC 是用來「幫選股因子打分數」的工具,告訴你: 「我今天用這個指標(例如本益比、動能、ROE)把股票排順序,這個順序到底能不能預測未來的漲跌?」

分數愈高,代表這個因子愈能預測未來報酬,愈值得放進策略裡。


為什麼需要 IC?(白話版)

你想做量化選股,手上有一堆候選指標:本益比、股價淨值比、營收年增率、近 60 日漲幅…… 問題是:哪些真的有用?哪些只是看起來有道理?

以前的做法是「直接回測」,但回測有個大陷阱:

  • 傳統回測每月只挑 10 檔股票,一年 12 個月 = 只有 120 個樣本
  • 只要其中一兩檔剛好暴漲,整條績效曲線就被拉上去
  • 結果你以為策略很強,其實只是運氣好、剛好選到飆股(過度擬合)

IC 換一種算法:不挑股票,而是每一期把全市場快 2000 檔股票拿來一起看, 計算「因子分數的排序」跟「下一期實際報酬」之間的相關性。 樣本數從 120 暴增到幾十萬,運氣的干擾就被稀釋掉,比較看得出因子的真本事。


IC 怎麼算?

觀念

  1. 在某一天,用因子(例如動能)幫所有股票打分數、排序
  2. 等一段時間(例如 20 個交易日),看這些股票實際漲跌多少
  3. 計算「因子分數」和「實際報酬」的相關係數(correlation),這就是這一期的 IC
  4. 每個月都算一次,最後把整串 IC 取平均,就是「平均 IC」

程式碼(FinLab 套件)

from finlab import data
from finlab.tools.factor_analysis import ic

adj = data.get('etl:adj_close')          # 還原股價
momentum = adj / adj.shift(60) - 1       # 因子:近 60 日報酬(動能)
ic_series = ic(momentum, adj, days=[20]) # 前瞻 20 日的 IC 時間序列
print(ic_series.mean())                  # 平均 IC

數值怎麼看?(重點:不要期待很大的數字)

IC 平均值白話解讀
> 0.01單一因子有用的及格線
0.002~0.02月頻單因子的正常範圍,落在這裡很普通、不用失望
> 0.05通常是「多個因子組合」後才做得到的理想值
接近 0這因子基本上沒有預測力
負值因子方向要反過來用(或根本沒用)

關鍵心法:強策略不是靠單一因子衝出超高 IC,而是把好幾個「彼此不相關」的低 IC 因子疊在一起, 讓綜合 IC 拉到 0.05 以上。

臺股實測(2010–2026,前瞻 20 日)

因子平均 ICIC IR及格?
動能(60 日報酬)+0.01990.165
ROE(稅後)+0.01300.163
股價淨值比(反向)+0.00470.063
本益比(反向)+0.00460.099
營收年增率+0.00230.079

幾個延伸指標

IC IR(IC 的穩定度)

  • 算法:平均 IC ÷ IC 的標準差
  • 白話:這因子是「每次都小賺」還是「有時大賺、有時大賠平均起來還可以」?
  • IR 愈高代表愈穩、愈可靠。動能和 ROE 都在 0.16 左右。

滾動 IC(Rolling IC)

  • 用 12 個月移動平均去看 IC 隨時間的變化
  • 用途:抓出「這個因子什麼時候失效了」

正值期間比

  • IC 為正的月份佔多少比例
  • 動能 59.5%、ROE 58.9%(超過一半時間有效,但也沒有壓倒性)

分位數驗證(Quantile)

  • 把股票依因子分成 10 等分,看報酬是不是「一格比一格高」
  • 動能因子:最強那格 +1.47%,比最弱那格高約 0.78 個百分點,且呈單調遞增
  • 代表整條排序都有資訊價值,不是只有頭尾兩端有效

Pearson IC vs Rank IC(兩種算法)

類型特性適合
Pearson IC(FinLab 預設)直接算數值相關,對極端值敏感分布接近常態的因子
Rank IC(Spearman)先轉成排名再算相關,不怕離群值有極端值的因子

注意:兩種算法結論可能翻盤。 臺股實測中,價值因子的 Rank IC 明顯比 Pearson 高;動能因子則相反。 嚴謹研究兩個都要看。


持有期(前瞻期)會影響 IC

同一個因子,看不同的持有天數,IC 差很多:

因子短期(5–10 日)中長期(120 日)結論
動能IC ≈ 0.011IC ≈ 0.039適合中長期訊號
ROEIC ≈ 0.016(10 日最強)IC ≈ 0.003適合短期訊號

用途:幫你決定「這個因子應該多久換一次股(再平衡頻率)」。


IC 的主要用途整理

  1. 因子篩選:回測前先評估,把沒用的因子刷掉,省時間也避免自欺
  2. 防過度擬合:全市場、每期都算,樣本大,不容易被少數飆股誤導
  3. 穩定性監控:用滾動 IC、IC IR 追蹤因子是不是還有效
  4. 決定換股頻率:看不同前瞻期的 IC,找最適合的持有期

IC 的限制(不能只看它)

  • 算法不同(Pearson / Rank)結論可能不一樣
  • 前瞻期設定不同,最佳因子排名也會變
  • 沒有排除低流動性股票(嚴謹研究要加流動性過濾)
  • IC 只衡量「預測力」,完全沒算手續費、交易稅、滑價 —— 真正實作策略時這些都要扣

實務建議(文章結論)

一個「可用」的因子,最好同時滿足:

  • 平均 IC > 0.01
  • IC IR 為正
  • 滾動 IC 大部分時間 > 0

然後挑幾個彼此低相關的因子組合起來,把綜合 IC 推到 0.05 以上, 再進入回測、風險控制的階段。


一張圖看懂流程

一堆候選因子
   │
   ▼
用 IC 打分數 ──► IC < 0.01 或 IC IR 為負 ──► 丟掉
   │
   ▼ (通過)
挑低相關的因子組合 ──► 綜合 IC 目標 > 0.05
   │
   ▼
回測(這時才加手續費、稅、滑價)
   │
   ▼
風險控制 ──► 上線