本文重點概要
- Alphalens 基礎介紹以及價量因子簡介
- 合成價量因子並利用 Alphalens 分析因子表現
前言
在投資決策中,「價量因子」是投資者洞察市場行為的重要工具之一。價格與交易量的關聯性,不僅能反映市場對資產的需求和供給,還能揭示資金流向和市場情緒的變化。這些因素對於捕捉短期機會和識別潛在的資產配置風險,具有重要的指導意義。
本篇文章將聚焦於「價量因子」,深入探討這些因子如何反映資產的動態變化,並透過 Alphalens 工具分析它們在市場中的表現與應用效果。我們將首先介紹價量因子的概念和設計邏輯,然後運用 alphalens-tej 進行分析,觀察這些因子對資產回報的解釋能力與穩定性。
在本系列文章中,我們已分析過「外資因子」和「價值因子」,分別探討了外資資金對市場的影響,以及估值相關指標對長期回報的影響。本篇文章作為最後一部分,將進一步完善我們對因子策略的全面理解,幫助投資者更有效地運用價量因子捕捉市場趨勢。
值得一提的是,若您想進行相似的因子分析,可以利用 TQuant Lab 中的 alphalens-tej 工具。該工具不僅可以整合 TEJ 數據,還能免去繁瑣的資料處理過程,讓您輕鬆檢視因子表現,進一步支援投資策略開發。
價量因子是什麼
在投資市場中,價量因子是揭示資產價格與交易量之間關係的重要工具,通常與市場的動態指標相關,如成交量(Volume)、成交量變化率(Volume Change Rate)、價格變動幅度(Price Momentum)等。這些指標反映了市場對資產需求的熱度、資金流向和市場情緒,並被廣泛用於識別短期機會和趨勢的持續性。將價量因子應用於投資策略時,投資者可以分析不同資產的價格與交易量互動特性,透過捕捉高交易量或價格動能較強的資產,實現潛在的超額收益或提高投資效率。
本文使用因子 :
一個月換手率
計算公式如下
- 計算過去20日成交量:根據每支股票的成交量,計算過去20個交易日內的累計成交量(rolling window 計算)。
- 換手率計算:將累計成交量除以股票的流通在外股數,得到一個月換手率。
一個月漲跌幅
計算公式如下
- 計算20日收盤價變動:根據每支股票的收盤價,計算當前收盤價與20個交易日前收盤價的變化。
- 漲跌幅公式:將價格變化除以20個交易日前的收盤價,並以百分比表示。
本文使用的收盤價與成交量資料分別取自 TEJAPI「交易資料-股價資料」資料表(TWN/APIPRCD)中的「收盤價」與「成交量_千股」欄位
Alphalens 基礎介紹
TQuant Lab 中的 Alphalens-tej 套件是一個專為因子分析所設計的 Python 工具包。 其核心功能是幫助投資者檢視並評估因子的表現,進而更有效地制定因子策略,詳細介紹可以參考Alphalens.ipynb 。在量化投資中,因子是一種用於解釋和預測資產收益的指標,常見因子包括市盈率、股價動量、交易量等。
Alphalens 提供了一系列強大的視覺化工具和指標,如因子分位數的平均報酬率 (Mean Period Wise Return by Factor Quantile)、資訊比率(IC,Information Coefficient)、累積報酬率(Cumulative Returns by Quantile)等。這些功能可以幫助我們深入理解因子的預測能力和穩定性。透過 Alphalens,投資者可以輕鬆分析各類因子在不同市場條件下的表現,並找到最適合自己的因子組合成策略。此外,Alphalens 與 TEJ 數據整合良好,特別適合使用 TQuant Lab 進行因子回測和視覺化分析,使因子研究更加便捷高效。
單因子分析
因篇幅限制,本節只計算因子的 IC、 IR(Information Ratio,即風險調整後 IC) 以及繪製各因子分位數的平均報酬率柱狀圖。本文的樣本期間都是 2014 至 2024 年,股票池皆為上市櫃股票中前 100 大市值的股票。
- 橫軸:橫軸表示因子分組(Quantile),分組方式是依據因子值的大小將樣本股票分為 10 組,其中 1 表示因子值最低的分組,而 10 表示因子值最高的分組。
- 縱軸:縱軸代表每個分組的平均報酬率,單位為基點(bps),即萬分之一。該數值表示在特定持有期間內(此處為 1天、5天、10天、21天)的平均收益。
- 解釋:此圖展示了各分組持有不同天的平均報酬率。若因子具有預測能力,通常會期待分組的報酬率呈現單調變化,例如分組 10 的平均報酬率較高,而分組 1 的平均報酬率較低,就可以用來建構 long-short portfolio。
從「各因子的 IC、IR 值與因子值加權的平均報酬率」表格來看,「一個月換手率」與「一個月漲跌幅」這兩個因子的表現均未達到預期的穩健水準。一般而言,IC 值大於 0.03 且 IR 值大於 0.5 的因子,才可被視為具有良好的預測能力。而「一個月換手率」因子的 IC 和 IR 數值僅在部分持有期間(例如 21 天)接近或略超過標準,顯示該因子在較長的持有期內對資產報酬具有一定的解釋力。然而,在短期持有期內(如 1 天或 5 天),其表現波動較大,與資產報酬之間的相關性不明顯,預測能力相對有限。
在「因子分位數的平均報酬率柱狀圖」中,「一個月換手率」因子在分位數的平均報酬率柱狀圖中,無論是短天期(如 1 天、5 天)還是長天期(如 10 天、21 天),均展現出顯著的單調性。相較之下,「一個月漲跌幅」因子在分位數報酬率上缺乏一致的單調性,尤其在中間分位數的表現較為混亂,且不同持有天數的表現也不一,顯示該因子在捕捉資產回報時的穩定性不足。
綜合來看,「一個月換手率」因子在所有持有期間均展現出顯著的單調性,具有良好的預測能力,尤其在區分高回報與低回報資產時表現穩健。然而,「一個月漲跌幅」因子的表現較為不一致,特別是在短期持有期內,其預測能力和單調性均不足。建議後續可以針對「一個月漲跌幅」因子進行優化設計,或者將兩個因子結合其他輔助因子,以進一步提升整體的預測能力與穩定性
因子合成
在上一節中,我們發現「一個月換手率」在不同持有期內均展現出穩定的預測能力與顯著的單調性,而「一個月漲跌幅」因子在短期持有期內表現較為波動,且單調性相對不足。本節將進一步嘗試將這兩個因子進行合成,探討合成後是否能有效提升整體的預測能力與穩定性。
計算因子權重
在合成多個因子時,由於不同因子對未來報酬的解釋力不盡相同,因此需要設定適當的因子權重,以提升預測效果與穩定性。
本文利用 rank IC_IR 來計算因子權重, rank IC_IR 利用個別因子近一個月的 IR 比率除以兩個因子 IR 比率的總和,從而得出該因子的相對權重。 這種基於風險調整後 IC 的權重計算方法,將更具預測能力且穩定的因子賦予更大的權重。為了模擬實際交易中的因子訊號延遲,我們對最終的權重數據進行滯後移動(shift),將權重移動 1 天,以確保只使用前一期的數據,避免在模型中使用未來資訊。
因子合成方法
計算綜合因子的方法是通過將每個因子根據其權重進行加權平均,生成一個代表整體因子效果的綜合因子。
具體方法如下:
合成因子分析
與單因子分析相同,我們一樣將新的因子資料導入 Alphalens。
- 橫軸:代表各個分位數 ( 1 至 10 ),分位數越高代表因子值越大。
- 縱軸:代表每個分位數的平均報酬率,單位為基點 ( bps )。
- 橫軸:代表年份,顯示累計報酬率的時間變化。
- 縱軸:為對數累計報酬率,數值越高代表累計報酬越高。
- 顏色標籤:不同的顏色線條代表不同分位數的累計報酬率。
從「綜合因子的 IC、IR 值與因子值加權的平均報酬率」表格可以看出,綜合因子在 IC、IR 以及平均報酬率方面的表現不管是在哪一種持有天數都優於「一個月漲跌幅」,但都略遜於「一個月換手率」,也可以發現持有天數越長,綜合因子的表現越好。
此外,從「分位數平均報酬率柱狀圖」中可以觀察到,綜合因子在各分組間展現出相對穩定的單調遞增效果,優於「一個月漲跌幅」的表現,但相比於「一個月換手率」,單調性與穩定性仍有些許差距。整體而言,綜合因子透過結合兩者的特性,在預測能力和穩定性方面取得了一定的平衡,但仍可進一步優化以接近最佳因子的表現。
結論
透過本文的分析,我們展示了如何運用 Alphalens 檢視價量因子的表現,並將其應用於實際的投資策略中。本次分析的兩個價量因子分別為「一個月換手率」和「一個月漲跌幅」。從單因子的 IC 和 IR 分析結果來看,「一個月換手率」在所有持有期內均展現了良好的預測能力和顯著的單調性,尤其在持有期較長(如 21 天)時,表現相對優於其他持有期;而「一個月漲跌幅」的預測能力則相對有限,單調性和穩定性不足。
在綜合因子的分析中,我們透過對這兩個價量因子進行加權合成,結果顯示綜合因子在 IC、IR 和單調性方面均優於「一個月漲跌幅」,但略遜於「一個月換手率」。持有期為 21 天時,綜合因子相較其他持有期表現更佳,但並未顯著突出,顯示該因子的預測能力在不同持有期內具有一定的穩定性,而因子合成也並未獲得很好的效果,未來可嘗試不同的合成方法以建構更好的綜合因子。
整體而言,本文展示了從單一價量因子分析到綜合因子的構建與回測的完整流程。在未來的應用中,我們可以考慮引入更多具有補充性的因子,並嘗試不同的權重計算方法,以進一步優化綜合因子的表現。此外,加入滑價、手續費等實際交易成本的考量,將有助於檢驗策略的真實可行性。透過這些改進,多因子策略將更具適應性和穩健性,為動態市場中的投資決策提供更強的支持。
【TQuant Lab 回測系統】解決你的量化金融痛點
全方位提供交易回測所需工具