量化選股:用數據取代直覺
大多數投資人做決策時,難以避免情緒的干擾:看到某檔股票連漲五天就怕追高,看到大跌又不敢撿便宜,聽到朋友報明牌就心動,看到新聞負面報導就急著殺出。這些直覺與情緒,在長期投資績效上往往是最大的敵人。
量化選股(Quantitative Stock Screening)的出現,正是為了解決這個問題。它的核心精神是:將投資邏輯轉化為數學公式,用歷史數據驗證邏輯的有效性,再以系統化的方式執行,排除主觀情緒的干擾。量化選股不等於高頻交易或 AI 演算法,它可以非常簡單——只要你的選股邏輯可以被明確定義、可以被數字量化,就是量化選股的範疇。
台灣散戶投資人接觸量化選股的門檻越來越低。財報狗、Goodinfo、TEJ(台灣經濟新報)等資料來源提供了完整的台股歷史財務數據;Python 與開源回測套件(如 Backtrader、Zipline)讓個人投資人也能進行策略回測。本文將從因子設計到回測執行,完整說明量化選股的實戰框架。
什麼是「因子」?
量化選股的最小單位是「因子」(Factor)。因子是一個可以數字化衡量、並對未來股票報酬有預測力的指標。
根據學術研究與實務經驗,被廣泛驗證有效的因子可分為幾大類:
一、價值因子(Value Factors)
衡量股票相對於基本面的便宜程度:
- 本益比(P/E Ratio):股價 ÷ 每股盈利,低本益比代表相對便宜
- 股價淨值比(P/B Ratio):股價 ÷ 每股淨值,低 P/B 代表以低於帳面價值買入
- 企業價值倍數(EV/EBITDA):考量負債的全面估值指標,比 P/E 更不易被資本結構扭曲
- 自由現金流殖利率(FCF Yield):每股自由現金流 ÷ 股價,衡量股票「賺現金」的能力
二、品質因子(Quality Factors)
衡量公司本身的營運品質:
- 股東權益報酬率(ROE):衡量公司用股東資金賺錢的效率
- 資產報酬率(ROA):ROE 的補充,不受槓桿程度影響
- 毛利率與淨利率:衡量定價能力與成本管控
- 應收帳款週轉率:帳款回收越快,財務品質越健康
- Piotroski F-Score:綜合 9 個財務指標的評分系統,0~9 分,高分代表財務體質優異
三、成長因子(Growth Factors)
衡量公司盈利與營收的擴張速度:
- EPS 年增率(YoY):最直接的盈利成長指標
- 營收年增率:確認業務規模持續擴大
- 淨利年增率:確認成長是否轉化為實際盈利
- 分析師盈利預測上修幅度(Earnings Revision):機構分析師集體上調預測,代表市場對未來盈利更為樂觀
四、動能因子(Momentum Factors)
衡量股票過去一段時間的相對強度:
- 近 12 個月報酬率(排除最後一個月):學術研究發現,過去 2~12 個月強勢的股票,未來 1~6 個月仍傾向強勢
- 近 3 個月相對強弱(Relative Strength):與大盤指數或同業比較的超額報酬
- 均線斜率:均線向上傾斜的幅度,代表趨勢的強度
五、籌碼因子(Institutional Flow Factors)
衡量法人與大股東的行為:
- 外資連續買超天數與累計量
- 投信買超趨勢(近 20 日)
- 大股東持股比例變化
- 融資使用率(太高代表散戶過度槓桿,風險偏高)
因子有效性:台股的實證
在設計量化選股模型之前,必須先確認因子在台股是否真的有效。以下是幾個台灣學術研究與實務觀察的重要發現:
ROE 因子在台股的有效性
多項研究顯示,台股中 ROE 持續高於 15% 的公司,長期股價表現明顯優於市場平均。以 2010~2023 年的回測資料,每年從台灣上市公司中選出 ROE 最高的前 20%,年化報酬率普遍超過加權指數報酬率約 3~5 個百分點。
動能因子的強度
台股的動能效應相對顯著,但存在「動能崩潰」的風險(即強勢股突然急跌)。研究顯示,動能因子在台股的有效持續時間約為 3~6 個月,超過這個期間,動能效應開始減弱甚至反轉。
小型股效應
台股也存在「小型股效應」(Small-cap Effect):市值較小的公司平均長期報酬率高於大型股。然而,小型股的流動性風險更高,實際操作時需謹慎控制部位規模。
「除息蜜月期」——台股特有現象
台灣投資人對現金股利的偏好極高,高殖利率個股在除息前後往往出現特定的價格行為,形成所謂的「填息效應」。量化策略中加入殖利率因子,並配合除息時程,有機會捕捉這個台股特有的超額報酬機會。
建立量化選股模型的步驟
步驟一:定義投資宇宙(Universe)
明確你的選股範圍:
- 僅限上市公司?還是包含上櫃?
- 是否排除金融股(銀行、保險)?(因其財務報表結構與一般產業不同,比較基準不一樣)
- 是否排除ETF、REITs?
- 是否排除市值低於 20 億元的微型股?(流動性風險)
建議的台股投資宇宙:台灣上市上櫃公司,市值 ≥ 30 億元,日均成交金額 ≥ 500 萬元,排除金融保險股。
步驟二:選擇因子並計算分數
選定 3~5 個核心因子後,為每個標的計算「因子排名」:
以「品質 + 價值」雙因子模型為例:
- 計算全市場每檔股票的 ROE 排名(從高到低,最高給 100 分,最低給 1 分)
- 計算全市場每檔股票的本益比排名(本益比越低排名越高)
- 加權合成綜合得分:綜合分數 = ROE 排名 × 0.5 + 本益比排名 × 0.5
- 選取綜合分數最高的前 N 檔(例如前 30 檔)作為持股
步驟三:設定再平衡頻率
量化選股模型需要定期重新執行篩選,並調整持股,這個動作稱為「再平衡」(Rebalancing)。
| 再平衡頻率 | 適合策略類型 | 主要成本考量 |
|---|---|---|
| 每週 | 短線動能策略 | 交易成本高(手續費、滑價) |
| 每月 | 中線趨勢策略 | 交易成本中等,適合大多數策略 |
| 每季 | 基本面策略 | 交易成本低,跟隨財報更新節奏 |
| 每年 | 長線價值策略 | 交易成本最低,但反應慢 |
對於一般散戶而言,每季再平衡(配合財報公告節奏)是兼顧效果與成本的最佳選擇。
步驟四:進行回測
回測(Backtesting)是用歷史數據模擬策略在過去的執行結果。台股可用的回測資料來源:
- TEJ(台灣經濟新報):最完整的台股財務數據,適合學術級回測,但授權費用較高。
- 財報狗 API:提供近 10 年財務指標數據,適合個人投資人使用。
- 台灣證交所 Open Data:免費但格式需整理,適合技術型投資人自行下載處理。
Python 回測範例框架(概念性):
# 概念性框架,非可執行程式碼
for quarter in quarters_list: # 每季再平衡
# 取得本季所有股票的 ROE 與 P/E
universe = get_stock_data(quarter)
# 計算因子排名
universe['roe_rank'] = universe['roe'].rank(ascending=False)
universe['pe_rank'] = universe['pe'].rank(ascending=True)
# 計算綜合得分並選股
universe['score'] = universe['roe_rank'] * 0.5 + universe['pe_rank'] * 0.5
portfolio = universe.nlargest(30, 'score')
# 計算持有期間報酬
returns = calculate_returns(portfolio, next_quarter)
步驟五:評估回測結果
評估量化策略的指標不只是報酬率,更重要的是風險調整後報酬:
| 評估指標 | 說明 | 參考標準 |
|---|---|---|
| 年化報酬率 | 策略平均每年的複合報酬 | 超過大盤指數 |
| 最大回撤(Max Drawdown) | 從高點到最低點的最大虧損幅度 | 長期策略建議 < 30% |
| 夏普比率(Sharpe Ratio) | 每承擔一單位風險所獲得的超額報酬 | > 1.0 為良好 |
| 勝率 | 每次再平衡後,持股超越大盤的比例 | > 55% 算穩定 |
| 年均換手率 | 每年更換持股的比例,影響交易成本 | 越低越好 |
量化選股的進階技巧
因子合成的權重設計
多因子合成時,各因子的權重設計非常關鍵:
等權重法:每個因子給予相同權重(例如各 25%)。優點是簡單,不過度配合歷史數據;缺點是無法反映不同市場環境下各因子的相對有效性。
最佳化權重法:用歷史數據計算各因子的最佳化權重。缺點是容易過度最佳化,使回測表現虛高但實際操作績效差。
IC 加權法:以各因子的「信息系數」(Information Coefficient,IC)作為權重依據。IC 衡量因子預測值與實際報酬的相關係數,IC 越高的因子給予越高權重,是更科學的方法。
行業中性化
不同產業的估值水準差異極大(半導體本益比 25~40 倍,傳產本益比 8~15 倍)。若直接跨產業比較 P/E,篩出的標的會集中在傳統產業,無法多元化。
行業中性化的做法是:在同一產業內進行因子排名,再選取每個產業內的高分標的,確保最終持股在產業上的分佈相對均衡。
動態因子輪動
不同市場環境下,不同因子的有效性會有差異:
- 牛市初期:動能因子、成長因子最有效
- 牛市中期:品質因子最穩健
- 熊市:價值因子(低估值防禦)與低波動因子相對抗跌
- 復甦期:小型股因子、低本益比反彈力道最強
動態因子輪動的難點在於準確判斷市場周期,實作上建議保持核心因子不變(品質 + 價值),視市況微調動能因子的權重。
量化選股的限制與常見誤區
誤區一:回測績效越好越好
過度最佳化(Overfitting)是量化投資最常見的陷阱。若你用 15 年歷史數據,調整了 20 個參數,最後找到「完美策略」——年化報酬 35%、夏普比率 2.5、最大回撤 8%——這幾乎可以確定是數據過擬合的結果,實際操作時會大幅落差。
對策:留出 30% 的數據作為「樣本外測試集」,策略設計完成後,僅用測試集評估。
誤區二:忽略交易成本
台灣股票交易成本:
- 手續費:最高 0.1425%(雙向),網路下單通常有折扣,約 0.05%
- 證交稅:賣出時 0.3%(ETF 為 0.1%)
- 滑價(Slippage):在流動性較低的股票中,買入時實際成交價可能高於理論價格
若量化策略每月換手 50%,光是交易成本每年就可能消耗 4~6% 的報酬,大幅侵蝕超額報酬。
誤區三:忽略存活者偏差
「存活者偏差」是指回測時,只包含現在仍然存在的公司,自動排除了過去已下市、下櫃、破產的公司。這樣的回測結果會系統性高估實際報酬,因為真實的投資人在當時並不知道哪些公司最後會下市。
對策:確認使用的數據來源包含退市股票的歷史數據(點股成金、TEJ 等提供此功能)。
誤區四:把量化選股當成「自動賺錢機器」
量化選股降低了主觀情緒的干擾,但無法消除系統性風險(如金融危機、疫情衝擊、產業顛覆)。即便是最嚴謹的量化基金,在市場極端環境下也可能大幅虧損。
量化選股的正確定位是:在大多數正常市場環境下,系統性地獲取超額報酬;在極端環境下,確保損失在可接受的範圍內。
台股量化選股實戰範例
以下示範一個適合個人投資人操作的簡化「三因子月報再平衡策略」:
策略名稱:台股品質動能季選股策略
投資宇宙:台灣上市上櫃,市值 ≥ 50 億元,排除金融保險
因子與權重:
| 因子 | 指標 | 權重 |
|---|---|---|
| 品質因子 | ROE(近四季平均) | 40% |
| 成長因子 | 近兩季 EPS 年增率平均 | 35% |
| 動能因子 | 近三個月股價相對大盤報酬 | 25% |
再平衡頻率:每季(3 月、6 月、9 月、12 月季報公告後執行)
持股數量:前 20 名高分標的,等權重持有(每檔 5%)
停損機制:單一個股若當季下跌超過 15%,立即以下一個高分標的替換
歷史模擬績效(2015~2024,概估,含交易成本):
- 年化報酬率:約 16~19%
- 最大回撤:2022 年熊市約 -28%
- 夏普比率:約 1.1~1.3
- 相較同期加權指數年化報酬(約 11%)超額報酬約 5~8 個百分點
結語
量化選股的本質是一種思維方式的轉變:從依賴直覺與情緒,轉向依賴邏輯與數據。它不要求你是數學家或工程師,但它要求你對自己的投資邏輯有清晰的定義,並有紀律地執行。
對台灣投資人而言,量化選股的工具越來越普及,從財報狗的選股器到 Python 開源框架,進入門檻從未如此之低。更重要的是,在一個資訊爆炸、情緒波動劇烈的市場環境中,擁有一套系統化、數據驅動的選股流程,是長期打敗大盤的最可靠方法之一。
從選定三個你真正理解的因子開始,設定合理的條件,進行簡單的歷史驗證,然後紀律地執行——這就是量化選股的起點,也是從「憑感覺」進化到「用數據」的第一步。