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

EPS 跟 ROE 哪個選股比較有效?台股 13 年回測:能避開地雷股,
但高 ROE 不再領先

EPS 跟 ROE 哪個選股比較有效?台股 13 年真實回測:ROE 最高組年化 8.27% 反而輸給 EPS 最高組的 9.7%,十組分位全輸 0050 含息的 19.79%。兩個指標都能避開最低分位地雷股,但「ROE 越高越好」已翻轉,附完整方法、圖表與可下載程式碼。

高 ROE 選股,13 年回測後翻盤

EPS 與 ROE 五分位選股年化報酬比較長條圖,ROE 最高組 8.27% 輸給 EPS 最高組 9.7%,兩者皆低於 0050 的 19.79%

本文 2020 年的第一版用 60 天換股、不含手續費的回測,得出「ROE 與報酬呈漂亮正比、比 EPS 更適合選股」的結論。2026 年我們把方法全面升級:財報公告日換股、內扣交易成本、資料拉長到 2026 年 6 月,重跑之後,舊結論不成立了。先把關鍵數字攤開:

組合(2013-01~2026-06,含交易成本) 年化報酬 日夏普 最大回撤
EPS 最低 20%(Q1) 4.04% 0.31 -51.11%
EPS 最高 20%(Q5) 9.70% 0.60 -35.13%
ROE 最低 20%(Q1) 4.20% 0.32 -50.37%
ROE 最高 20%(Q5) 8.27% 0.53 -37.78%
0050 含息買進持有(不含成本) 19.79% 1.11 -33.96%

三個重點:

  1. 兩個指標都能「避開地雷」:EPS 與 ROE 最低分位的年化報酬都只有 4% 出頭,最大回撤超過 50%,跟其他四組有明顯斷層。
  2. 「ROE 越高越好」翻轉了:ROE 最高分位(Q5)年化 8.27%,輸給次高的 Q4(11.38%),也輸給 EPS 最高分位的 9.70%。
  3. 單因子選股贏不了 0050:這 13 年台股由大型權值股領漲,所有等權分位組合都遠遠落後 0050 的 19.79%。

以下交代兩個指標的定義與數學關係、完整回測設計、五分位結果、穩健性檢查,以及高 ROE 失效的三個可能機制。所有數字都來自文末可下載的程式碼,你可以自行重跑驗證。

EPS 是什麼?定義與限制

每股盈餘(EPS,Earnings Per Share)衡量公司每一股普通股賺到多少稅後利潤:

EPS=稅後淨利加權平均在外流通股數EPS = \frac{\text{稅後淨利}}{\text{加權平均在外流通股數}}

舊版文章把 EPS 說成「每投入一股,一個月可以賺多少錢」,這是錯的:EPS 的分子是一段期間(單季或全年)的稅後淨利,跟「一個月」無關;而且「投入一股」的成本是市價,不是 1 元,所以 EPS 高低也不等於投資報酬率高低。

EPS 的真正限制在於分母。在外流通股數由股本結構決定,每家公司不同,所以 EPS 只適合跟同一家公司的過去比較,不適合跨公司比較。舉一個示意用的例子(虛構數字,僅為說明公式):

  • 公司甲:稅後淨利 10 億元,流通股數 5 億股,EPS = 10 億 ÷ 5 億 = 2 元
  • 公司乙:稅後淨利 50 億元,流通股數 10 億股,EPS = 50 億 ÷ 10 億 = 5 元

光看 EPS 會覺得乙比甲「會賺錢」。但如果乙的股東權益高達 1,000 億元,甲只用 50 億元股東權益就賺到 10 億元,誰的資本運用效率高,答案就反過來了。這正是 ROE 要回答的問題。

ROE 是什麼?與 EPS 的數學關係

股東權益報酬率(ROE,Return On Equity)把獲利除以股東投入的資本:

ROE=稅後淨利股東權益×100%ROE = \frac{\text{稅後淨利}}{\text{股東權益}} \times 100\%

其中股東權益 = 總資產 − 總負債。延續上面的示意例子:公司甲 ROE = 10 億 ÷ 50 億 = 20%,公司乙 ROE = 50 億 ÷ 1,000 億 = 5%。甲每一塊錢股東資本賺兩毛,乙只賺五分,資本效率高下立判。

EPS 與 ROE 在數學上只差一個「每股淨值」(BVPS,Book Value Per Share):

ROE=EPSBVPSROE = \frac{EPS}{BVPS}

也就是說,ROE 可以理解為「把 EPS 用每股淨值標準化」之後的指標,消除了股本與淨值規模的影響,因此可以跨公司比較。再往下拆一層,就是經典的杜邦方程式:

ROE=淨利率×總資產週轉率×權益乘數ROE = \text{淨利率} \times \text{總資產週轉率} \times \text{權益乘數}

同樣的 ROE 可以來自高獲利能力,也可以來自高財務槓桿(權益乘數),這個區別在後面解讀回測結果時會用到;完整的拆解寫在杜邦分析選股指南。更多名詞的統一定義可查量化詞彙表

2020 年的舊結論,以及它的方法問題

本文 2020 年第一版的做法是:把全市場股票按「當季」EPS 與 ROE 各分五組、每 60 天換股、不計手續費與證交稅,結論是 EPS 各組差異不大、ROE 組別與報酬呈正比。這個結論後來也被ROE 到底高或低才好一文引用與討論。

用今天的標準看,舊方法有三個問題:

舊方法 問題 2026 年版的修正
每 60 天固定換股 換股日與財報公布日無關,可能用到尚未公告的財報(前視偏差) 改在財報法定公告截止日換股
不含手續費與證交稅 高估報酬,且各組換股成本不同,比較失真 用 finlab sim() 預設成本內扣
當季單一數字 單季盈餘波動大、有季節性 改用近四季合計(TTM)
資料到 2020 年 樣本只涵蓋到當時 拉長到 2026 年 6 月,共約 13.5 年

方法改了,結論會不會跟著改?這正是這次重寫要回答的問題。

回測設計:同一框架,公平對決

兩個因子用完全相同的框架,唯一的差別是排序用的指標:

  • 回測區間:2013-01-01 至 2026-06-09(資料快照釘在 2026-06-09,確保可重現)。
  • 股票池:收盤價大於 10 元、20 日均量大於 100 張,且近四季因子有值的上市櫃股票,每期約 1,100 檔。
  • 因子 A:近四季每股盈餘合計(EPS TTM)。
  • 因子 B:近四季單季 ROE 合計(ROE TTM)。
  • 分組:在每個財報公告截止日,把池內股票按因子值排百分位,切成五組(Q1 最低、Q5 最高),各組約 221 檔等權持有,到下一個公告日再調整。
  • 成本:finlab sim() 台股預設,手續費 0.1425% 加賣出證交稅 0.3%,已內扣。
  • 基準:0050 還原價(etl:adj_close)買進持有,純指數算術、不含成本,口徑與全站其他文章一致。

核心程式碼長這樣(以 ROE 最高分位組為例,finlab 會自動引導登入):

顯示程式碼
import finlab
from finlab import data
from finlab.backtest import sim
 
finlab.login()
 
# 載入價量資料,建立流動性股票池
close = data.get("price:收盤價")
volume = data.get("price:成交股數")
pool = (close > 10) & (volume.rolling(20).mean() > 100_000)
 
# 近四季 ROE 合計,把「2024-Q3」這種季別索引換成法定公告截止日
roe = data.get("fundamental_features:ROE稅後")
roe_ttm = roe.rolling(4).sum().index_str_to_date()
 
# 在公告日把池內股票按 ROE 排百分位,持有最高的 20%
pool_q = pool.reindex(roe_ttm.index, method="ffill")
ranked = roe_ttm.where(pool_q).rank(axis=1, pct=True)
position = ranked > 0.8
 
# 回測:預設成本已含手續費與證交稅
report = sim(position, resample=None, upload=False)
report.display()

ranked > 0.8 換成其他區間就是其他分位組;完整的十組回測與圖表程式可在文末下載。下面是 ROE 最高分位組的互動式回測報告,可縮放與檢視持股:

結果一:最低分位是地雷區,兩個指標都抓得到

先看 EPS 五分位的淨值曲線:

EPS 近四季合計五分位淨值曲線,最低分位明顯落後,其餘四組差距不大

EPS 分位 年化報酬 日夏普 月索提諾 最大回撤 總報酬
Q1(最低) 4.04% 0.31 0.40 -51.11% 61.9%
Q2 8.73% 0.57 0.76 -35.97% 177.5%
Q3 9.80% 0.64 0.97 -34.74% 213.2%
Q4 10.55% 0.68 0.90 -31.83% 239.8%
Q5(最高) 9.70% 0.60 0.81 -35.13% 210.9%
0050 含息 19.79% 1.11 1.78 -33.96% 1030.2%

ROE 五分位也是同樣的型態:

ROE 近四季合計五分位淨值曲線,最低分位落後,最高分位反而不是第一名

ROE 分位 年化報酬 日夏普 月索提諾 最大回撤 總報酬
Q1(最低) 4.20% 0.32 0.41 -50.37% 65.0%
Q2 9.33% 0.61 0.82 -36.56% 196.8%
Q3 9.46% 0.62 0.92 -34.78% 201.7%
Q4 11.38% 0.72 0.98 -33.10% 272.3%
Q5(最高) 8.27% 0.53 0.70 -37.78% 164.7%
0050 含息 19.79% 1.11 1.78 -33.96% 1030.2%

兩張表共同的訊息:Q1 與其他四組之間有一道斷層。近四季虧損或獲利墊底的公司,年化報酬只有獲利公司的一半不到,最大回撤超過 50%。2020 年版「EPS 大於 0 優於小於 0」的觀察,在更嚴謹的方法下仍然成立,而且 ROE 也有一模一樣的性質。對讀數字還不熟的讀者,夏普比率的意義與好壞區間可參考夏普比率計算器

結果二:高 ROE 組不再領先,正比關係斷在最後一組

2020 年版最核心的主張是「報酬與 ROE 組別成漂亮正比」。新數據裡,這個正比關係從 Q1 到 Q4 都還在(4.20% → 9.33% → 9.46% → 11.38%),卻在最高分位斷掉:Q5 掉到 8.27%,輸給 Q2 到 Q4 所有組別,最大回撤還是五組中第二深的 37.78%。

EPS 這邊,Q5 同樣不是第一名(9.70%,低於 Q4 的 10.55%),但跌幅輕微。把兩個因子的最高分位拉出來與 0050 同框:

ROE 最高分位、EPS 最高分位與 0050 淨值與回撤對照,0050 大幅領先

ROE Q5 與 EPS Q5 在 2018 年以前幾乎黏在一起,之後 EPS Q5 緩慢拉開,13 年累積下來 210.9% 對 164.7%。至於 0050,總報酬 1030.2%,等權單因子組合連它的一半都拿不到。「買 ROE 越高的公司,比買 EPS 高的公司更容易挑到優質股」這句 2020 年的結論,照新的回測得收回。

結果三:優勢什麼時候翻轉的?滾動三年視角

單看全期數字會掩蓋時間結構。把 ROE Q5 與 EPS Q5 的滾動三年年化報酬相減:

ROE 最高分位減 EPS 最高分位的滾動三年年化報酬差,2018 年後幾乎全為負值

在結束於 2018 年中以前的三年窗口裡,ROE 組領先 EPS 組最多約 2 個百分點;之後風向翻轉,ROE 組落後最多達 3.65 個百分點。全部滾動窗口中 ROE 領先的比例只有 16.3%,平均落後 1.61 個百分點。

這張圖同時解釋了為什麼 2020 年版會得出「ROE 完勝」:當時能看到的樣本,剛好停在 ROE 領先期的尾巴。用 2020 年的資料說 ROE 比較好,跟用 2026 年的資料說 EPS 比較好,犯的是同一種「以單一段樣本下全稱結論」的錯。比較穩的說法是:在本文設定下,兩個因子最高分位的差距多數時間在正負 2 到 4 個百分點之間擺盪,沒有一方有壓倒性、跨期間穩定的優勢。

穩健性檢查

負股東權益會不會污染高 ROE 組? ROE 的分母是股東權益;如果一家公司虧到股東權益變負數,虧損除以負權益反而會算出很大的正 ROE,理論上可能讓地雷股混進 Q5。我們加上「股東權益大於 0」的條件重跑 ROE 五分位,五組結果與原版完全相同(Q5 仍是年化 8.27%、回撤 -37.78%):權益為負的公司幾乎都已被股價大於 10 元與流動性門檻擋在池外,Q5 落後並非負權益造成的假象。

是不是只輸在某一段? 把全期切成三段,年化報酬如下:

期間 EPS Q5 ROE Q5 0050 含息
2013-01~2017-12 3.90% 5.15% 11.31%
2018-01~2021-12 11.52% 8.87% 19.24%
2022-01~2026-06 13.40% 10.44% 30.42%

ROE Q5 只在第一段領先,後兩段都落後 EPS Q5 約 2.6 到 3 個百分點;三段裡兩個因子都落後 0050。結論對分段方式不敏感。

高 ROE 為什麼失效?三個可能機制

第一,極端高 ROE 常處在獲利循環的頂點。 按 ROE 排序取前 20%,容易在景氣循環股獲利暴衝的那幾季把它們納入(2021 年前後獲利衝上高峰的航運與鋼鐵類股就是典型情境),之後獲利均值回歸、股價跟著回落。學術上,Hou, Xue & Zhang (2015) 的 q 因子模型確實把 ROE 列為核心獲利因子,但他們用「最新一季公告盈餘」按月換股來捕捉訊號;本文用近四季合計、每季才換一次股,訊號早就被市場消化了大半。換股頻率對高 ROE 策略的影響,站內在高 ROE 與換股頻率的實測有專文比較。

第二,「盈餘層級」的獲利指標雜訊偏多。 EPS 與 ROE 的分子都是稅後淨利,包含業外損益、一次性處分利益與所得稅效果。Novy-Marx (2013) 發現,越接近損益表頂端的毛利層級獲利能力(毛利除以總資產),對未來報酬的預測力越強;稅後淨利層級的指標在他的美股實證裡明顯較弱。台股這份回測裡兩個淨利系因子的最高分位都跑輸自家 Q4,與這個發現方向一致。

第三,分母決定指標的品質。 Ball, Gerakos, Linnainmaa & Nikolaev (2015) 系統性地檢驗「獲利能力用什麼分母」對預測力的影響:分母選錯,因子訊號會被資本結構汙染。EPS 的分母是股數,受庫藏股、減資、增資影響;ROE 的分母是權益,會被高槓桿放大。同樣 20% 的 ROE,靠本業賺來的與靠權益乘數撐出來的,後續表現可能天差地遠,這也是用杜邦拆解檢查 ROE 品質的價值所在。

最後補一個口徑層面的提醒:五分位組合是約 221 檔等權,0050 是市值加權重壓大型權值股。2013 年以來台股漲幅高度集中在台積電等權值股,等權組合落後 0050 有一部分是「中小型股 vs 權值股」的結構差異,未必全是因子本身的錯。拿單因子報酬跟 0050 比較時,要先意識到這層差異。

回測方法與限制

項目 本文做法
交易成本 finlab sim() 預設:手續費 0.1425%(未打折)、賣出證交稅 0.3%,已內扣
滑價 未假設滑價;實際衝擊取決於資金規模與個股成交量,本文未估算容量
股票池 上市櫃中有近四季 EPS/ROE 財報資料者,收盤價 > 10 元
流動性過濾 20 日均量 > 100 張
排除類別 金融股未排除;ETF 無個股財報、自然不在池內;finlab 資料含已下市股票,降低生存者偏誤
前視偏差 財報用 index_str_to_date() 對齊法定公告截止日,公告前數據不會被用到
權重 各分位組內等權,平均約 221 檔,無單檔上限
周轉率 每季公告日調整一次,僅分位邊緣股票進出;精確 turnover 未統計
樣本內外 全段 in-sample、未做樣本外測試;五分位法沒有可調參數,但起訖年份的選擇仍會影響結論

0050 基準為還原價買進持有的純指數算術,不含交易成本;策略端有成本、基準端沒有,這個口徑差異對策略不利,解讀時請一併考慮。

實務上怎麼用 EPS 與 ROE

回測給出的用法跟多數教科書相反:這兩個指標當濾網比當選股核心有效

  1. 用來排除,而非用來進攻:避開近四季 EPS 或 ROE 最低 20% 的股票,就避開了年化僅 4%、回撤逾 50% 的地雷區;至於買最高分位,新數據已不支持有額外報酬。
  2. 看 ROE 之前先看它怎麼來的:用杜邦拆解確認 ROE 來自淨利率或週轉率,而非權益乘數;高槓桿撐出來的高 ROE 是這次 Q5 失效的嫌疑機制之一。
  3. 跟估值與其他面向搭配:單因子力道有限,站內實測過ROE 搭配股價淨值比把因子除以價格做成性價比指標本益比、淨值比與 PEG 的橫向比較,也有創新高加 ROE 與 PB 的複合策略用機器學習組合 ROE 因子等不同路線;想從選股的整體框架入門,可從台股選股方法完整指南開始。
  4. 自己驗證,不要背結論:這篇文章本身就是「結論會過期」的示範。用 pip install finlab 裝好套件、跑文末的程式碼,每季財報出來後重新檢查一次,比記住任何一句口訣都可靠。量化研究的完整入門路徑見量化交易總覽頁

常見問題

EPS 跟 ROE 哪個比較好用?

看用途。要「避開爛公司」,兩者效果幾乎一樣好(最低分位都明顯落後);要「挑出會贏的公司」,2013 至 2026 年的台股數據顯示兩者的最高分位都贏不了自家第四分位,也都遠輸 0050,談不上誰更好用。跨公司比較獲利能力時,ROE 因為消除了股本影響,仍是比 EPS 合理的尺度。

EPS 多少算高?不同公司的 EPS 可以互相比較嗎?

EPS 沒有跨公司通用的「高低」標準,因為分母(股數)每家不同。EPS 5 元的公司不一定比 2 元的會賺錢,要先除以每股淨值(變成 ROE)或除以股價(變成益本比)才能比較。EPS 適合的用法是跟同一家公司的歷史比,看成長趨勢。

ROE 多少算好?是越高越好嗎?

常見的經驗法則是長期維持 15% 以上屬於資本效率優異的公司。但本文數據顯示「越高越好」在最高分位不成立:前 20% 高 ROE 組的後續報酬反而輸給 60% 到 80% 那一組。極端高的 ROE 要特別檢查是否來自循環高峰或高槓桿。

為什麼 2020 年的回測說 ROE 越高越好,現在卻翻轉了?

兩個原因。方法面:舊版用 60 天固定換股、不含成本,且可能用到未公告的財報;新版改在公告日換股並內扣成本,標準更嚴。樣本面:滾動三年視角顯示 ROE 的領先期剛好結束在 2018 年中,2020 年寫文時看到的正是領先期的尾巴,之後 EPS 組反超。

EPS 為負的股票一定要避開嗎?

回測支持把「近四季合計虧損」當警訊:EPS 最低分位(多為虧損股)年化只有 4.04%、最大回撤 51.11%。但這是組合平均,個別虧損股仍可能因轉機大漲;量化上的合理做法是讓虧損股付出更高的入選門檻,而非一律封殺。

ROE 很高,但可能是靠借錢撐出來的,怎麼檢查?

把 ROE 拆成淨利率 × 總資產週轉率 × 權益乘數。權益乘數(總資產除以股東權益)越大代表槓桿越高;如果一家公司 ROE 上升主要來自權益乘數膨脹,品質就要打折。拆解步驟與台股案例見杜邦分析的因子實測

用 finlab 怎麼取得 EPS 與 ROE 的資料?

裝好套件後,EPS 用 data.get("financial_statement:每股盈餘"),ROE 用 data.get("fundamental_features:ROE稅後"),回傳的表格列是季別、欄是股票代號;接 .rolling(4).sum() 就是近四季合計,再接 .index_str_to_date() 即可對齊財報公告日,避免前視偏差。

只用 EPS 或 ROE 選股,能贏過 0050 嗎?

在本文設定下(等權、每季換股、含成本、2013 至 2026 年),十個分位組合沒有任何一組贏過 0050 的年化 19.79%。要注意這有一部分是等權中小型組合對上市值加權權值股的結構差異;但至少可以說,單靠這兩個指標選股並持有,歷史數據不支持能勝過買進持有 0050。

延伸閱讀

下載資源

檔案 說明
strategy.py EPS 與 ROE 十個分位組合的完整回測與圖表程式碼,含 0050 基準計算與文中五張圖的繪製

投資警語:本文僅供教學參考,不構成投資建議。過去績效不代表未來表現,投資有風險,請審慎評估自身風險承受能力。

最後更新:2026-06|回測區間:2013-01~2026-06(資料快照 2026-06-09)|作者:FinLab 量化研究團隊(經量化研究員審閱)

FinLab AI

想建立自己的策略?

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

免費開始

更多價值與基本面研究

查看全部