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

Information Coefficient (IC) 是什麼?量化交易因子驗證與避免過擬合的關鍵指標

Information Coefficient(IC)量化交易因子驗證指標教學:用 finlab.tools.factor_analysis.ic 全市場監測上市櫃近 2000 檔,預防過擬合並判斷模型穩定性;ML 模型 IC 建議大於 0.05、一般因子大於 0.01。

IC 是量化交易做最佳化不可或缺的驗證方式,也是預防 Overfitting 的關鍵。

Information Coefficient (IC) 我很早就知道它了,但是一直沒有時間將它整合到交易系統裡面,今年正好有這樣的機遇,趁著教書的時間,徹底的研究 IC 在各方面的使用方法。

Information Coefficient (IC) 量化交易因子分析示意圖

Information Coefficient(IC)是什麼?

IC(Information Coefficient,資訊係數)是因子預測值與未來實際報酬之間的相關係數,用來衡量一個選股因子的預測能力。換句話說,它回答的問題是:「我今天用這個因子排序股票,這個排序對未來的報酬到底有沒有預測力?」相關性越接近正向,代表因子排得越前面的股票,未來報酬傾向越高。

實務上 IC 通常逐期計算(例如每月算一次因子分數與下一期報酬的相關係數),再取一段時間的平均,藉此判斷因子的方向與穩定度。在 量化交易 的研發流程裡,IC 是把「因子是否有效」這件事量化成一個可比較數字的工具,而不是只靠回測曲線好不好看來判斷。

先說結論,IC 就是做最佳化不可或缺的驗證方式,它有幾個優點:

多樣本

多樣本現象:很多人對於「模型」感到很困惑,「這不就是策略嗎」?為什麼要說的很高大尚,說這是「模型?」差別很簡單,假如你在交易一個現象,那就能夠稱為模型。

問題在於,很多人研發策略,只是回測出賺錢的手法,就能稱為「模型」。

這是一個謬誤,因為回測歷史總是會賺錢的!但賺得穩不穩定?未來報酬是否類似呢?假如你使用 MultiChart 等相關的產品,你就知道,它能做很多策略,但它並不能歸類為模型。

什麼叫做模型?模型是用來解釋股市現象,並且將這些現象具體用於交易的方法,例如:

  • 市場規則:股市中,大神如菲比斯,他曾說「要瞭解市場的規則」因為從規則中,就可以賺錢,著重在事件交易,例如信用交易、重大訊息、法說會…等等。
  • 當然市場上,除了很顯著的規則事件外,其實有很多隱性的規律,例如小市值效應、成交量效應、均線效應、波動的效應。這些「效應」就是描述市場上的報酬,在特定的股票上,價格會有不均衡的現象。這也是 FinLab 最著重在觀察的重點。

在事件交易中,我們可以利用事件發生前後的報酬率統計,來判斷事件對於股價的影響,而在市場的規律,就要靠 IC 來幫我們判斷。

驗證有效性

IC 的其中一個最重要的功能,就是幫助我們驗證這些效應是否真的有效。如果一個策略或模型的 IC 持續為正,且在不同時期、不同市場中都維持穩定,那麼我們就可以更有信心地相信這個策略的背後有其合理性與可靠性。

換句話說,IC 是在幫助我們確保我們看到的不是「假象」,而是真正存在的「現象」。IC 越高,代表我們模型對報酬的預測能力越好,這也意味著這個模型具有一定的可預測性。

監控模型穩定性

IC 也可以作為模型持續性監控的一個重要工具。市場變化迅速,很多模型在一開始可能會表現得很好,但隨著時間的推移,它們的預測能力可能逐漸下降。如果我們持續追蹤 IC 值,就能及早發現模型失效的徵兆,例如 IC 開始由正變負,或是不再穩定。我們可以根據這些指標及時調整策略,甚至放棄不再有效的模型。

組合效應評估

IC 也可以幫助我們比較不同的模型或因子之間的效果。不同模型之間,如果我們使用 IC 來做比較,可以清楚地知道哪個模型在預測能力上更勝一籌。甚至,我們可以透過計算 IC 的加權平均,來衡量多個因子的綜合效果,這樣有助於我們打造更為強大的投資組合。實際把多個因子組成策略的流程,可以參考 因子分析實戰:3 因子選股,IC 在那裡扮演的就是篩選與排序因子的角色。

最重要的:避免過擬合

當你回測每個月持有10檔股票時,每年的樣本數為 12 x 10 ,就是120個樣本。這樣的數量,只要選到一兩支暴漲的股票,就會讓你的回測績效異常優異。然而,你永遠不知道的是,究竟是你是

  • 發現了某個現象,捕捉到了股票標的,真的會上漲
  • 還是為了捕捉會上漲的股票,而設計了這些條件

上述兩件事情,都能讓回測績效優異,但對於樣本外(實單)有著天差地別的結果,此時,使用 IC 的好處,就是可以確認你真的在做「二」而非在做「一」。因為 IC 是全市場的監測,此時你的樣本就是上市櫃近 2000 檔股票標的,而且你甚至可以做 rolling 的方式,去增加樣本的數量,進而大幅度預防過擬合。

如果想從另一個角度量化過擬合風險,可以搭配 用回測過擬合機率判斷策略真實力:IC 看的是因子在全市場的預測力,過擬合機率則是評估這組回測結果有多大可能是運氣,兩者互補。

最簡單的方式,就是都不回測,只有最後將 IC 調整至足夠優秀後,再簡易的做出策略。

就像是你做料理,一定是先備料,最後組合,變成一道佳餚,而不是東拼西湊,且戰且走。

IC的使用方法

顯示程式碼
from finlab.tools.factor_analysis import ic
 
factor = data.get('price_earning_ratio:股價淨值比')
price = data.get('etl:adj_close')
 
score = ic(factor, price).mean()
 
print(score)

實戰的ML預測能力,其 IC 最好能大於 0.05,一般的 Factor,盡量 IC 要大於 0.01。

IC的應用場景

  • 用來篩選因子
  • 驗證策略的條件合理性
  • 用來確認ML模型預測效果
  • 用來檢視因子的延續性、穩定性
  • 用來檢視模型的延續性、穩定性

結論

假如你想要精進自己的量化交易技術,請研究 IC,將其應用於製作「模型」的所有流程中,很多人認為做一個好策略、報酬率、夏普是重點,其實不是,

例如你用 ML,假如用基因演算法,用暴力列舉所有參數,隨時隨地都能做出好策略,但真的有用嗎?

量化交易的精髓,在於預防 Overfitting,才是重點,再多的快樂表,都底不過一個能夠長期有效的策略。

常見問題(FAQ)

Information Coefficient(IC)是什麼?

IC 是因子預測值與未來實際報酬之間的相關係數,用來衡量一個選股因子對未來報酬的預測能力。它把「這個因子到底有沒有用」量化成一個數字,正值代表因子排序與未來報酬同向。在量化交易裡,IC 常被當成驗證因子與監控模型穩定性的核心指標,而不是只看回測曲線。

IC 多少算好?

依本文的實務經驗,機器學習(ML)模型的 IC 最好能大於 0.05,一般的因子(Factor)則盡量讓 IC 大於 0.01。要注意的是 IC 的合理門檻和標的數量、調倉頻率有關,所以重點不只是單一數值高低,更要看 IC 是否長期維持正向、且在不同時期都相對穩定。

IC 怎麼計算?

做法是把因子分數與下一期的實際報酬計算相關係數,通常逐期(例如每月)算一次,再取一段時間的平均。實作上可以用 finlab 套件的 factor_analysis.ic,傳入因子與 etl:adj_close 價格序列,呼叫 .mean() 取得平均 IC;本文上方的程式碼片段就是一個最小範例。

IC 和一般相關係數有什麼不同?

兩者數學定義相同,差別在於「比的是什麼」。IC 特指因子值與「未來」報酬的相關係數,帶有時間先後的預測意涵,且通常是在全市場(上市櫃近 2000 檔)逐期計算後取平均。一般相關係數沒有這層「先有因子、後有報酬」的時序限制,因此 IC 更貼近實單會遇到的樣本外預測情境。

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

FinLab AI

想建立自己的策略?

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

免費開始

更多多因子選股研究

查看全部