跳至主要內容
量化工具 台股選股實測

股票選股怎麼選?四大面向、六個因子與三套策略的台股實測

股票選股的方法分基本面、技術面、籌碼面、消息面四大面向。本頁用 finlab 實測:六個經典因子單獨用全輸含息 0050,四因子複合策略用略低報酬換到淺 9 個百分點的回撤(日夏普 1.46 vs 1.22),附互動回測器、單因子成績單與可下載程式碼。

六單因子實測 三套選股策略 2018-2026 回測 日夏普 1.46 含交易成本

股票選股怎麼開始?

股票選股是用明確的指標與規則,從全市場挑出一籃子股票。台股常見的選股方法分四大面向:基本面(賺不賺錢、貴不貴)、技術面(趨勢與波動)、籌碼面(誰在買)、消息面(營收與財報轉折)。選股方法與選股策略是同一件事的兩種說法,重點都在用哪些面向的指標、依什麼規則挑出股票。

重點摘要

你想知道 答案
有沒有單一指標長期穩贏 0050 沒有。六個經典因子單獨回測,全數輸給含息 0050(見下方單因子實測)
那選股還有什麼用 把方向不同、弱點不同步發作的因子疊成複合策略:報酬接近、回撤明顯較淺
新手怎麼開始 由下而上:基本面初篩 → 月營收確認成長 → 技術面挑時機 → 分散 20 至 30 檔定期換股
要會寫程式嗎 不用。把規則用白話講給 AI,由 finlab 實跑回測;本頁附互動回測器與可下載程式碼

本頁用三套選股策略在台股實跑回測(2018-01 至 2026-06,finlab sim() 已扣手續費與證交稅),各代表一個因子家族,對照含息 0050:

策略(依因子家族) 年化報酬 日夏普 月索提諾 最大回撤 平均持股
四因子複合(品質+動能+低波+營收) 20.05% 1.46 1.92 -24.8% 25 檔
價值+品質+股息(低 PB+高 ROE) 22.92% 1.25 1.87 -32.2% 20 檔
籌碼選股(投信買超+動能) 16.52% 0.70 1.31 -39.3% 15 檔
0050 買進持有(含息) 25.05% 1.22 1.92 -33.96% 1(ETF)

(數據來源:finlab 實測 2018-01 至 2026-06;0050 用 etl:adj_close 還原息值;重現腳本見文末下載)

先把結論講清楚,不含糊:這段期間 0050 贏在絕對報酬(25.05%),三套策略沒有一套在年化報酬上贏過它。 四因子複合的價值在風險調整後表現:日夏普 1.46 對 0050 的 1.22,最大回撤 -24.8% 對 -33.96%,淺了約 9 個百分點。它用略低的報酬換到明顯更小的回撤;能抱得住深回撤的人直接買 0050 反而更好,這是一個取捨,不是免費午餐。

股票選股三策略與 0050 含息的年化報酬與最大回撤對照,2018 至 2026 台股回測

夏普值(Sharpe):每承擔 1 單位總波動換到多少報酬。索提諾值(Sortino):只計入下跌波動。最大回撤(MDD):從最高點跌到最低點的最大跌幅,回撤越深越難抱住。

想直接看選股條件的最新名單,開 台股股票選股器;本頁負責回答「為什麼這些條件要這樣組」以及「怎麼避免單一指標陷阱」。

台股選股策略回測器:自己改條件跑一次

下面的回測器預載本頁三套策略的真實回測結果;登入後可以自己改因子組合與持股數,用最新台股資料在瀏覽器即時重算。

台股選股策略回測器

回測區間 2018-01 ~ 2026-06
四因子複合(品質+動能+低波+營收) vs 0050 含息(累積淨值,對數軸)
1x2x3x5x2018-012019-062020-112022-042023-092025-022026-06
四因子複合(品質+動能+低波+營收)(穩健)0050 含息
指標(2018–2026)四因子複合(品質+動能+低波+營收)0050 含息
年化報酬(CAGR)20.1%25%
日夏普比率1.461.22
索提諾比率1.921.92
最大回撤-24.8%-34%
平均持股數25 檔1(ETF)

因子:ROE 品質、價格動能(6月)、低波動、月營收年增。數字為 finlab sim() 實跑、已扣手續費與證交稅;過去績效不代表未來。

想用最新台股資料、自己改因子組合與持股數即時重算?登入 FinLab 後,整個回測會在你的瀏覽器跑真實 finlab 引擎(資料截至今日)。

單因子實測:六個經典因子,沒有一個贏過含息 0050

「有沒有單一指標,長期穩定打贏買進 0050 就好?」我們把台股最經典的六個選股因子各自跑了一次回測(各選 30 檔、每月換股;本節視窗 2018-03 至 2026-06,起點受月營收資料限制,重現腳本 factor-comparison.py):

選股因子(選 30 檔,月頻) 年化報酬 夏普 最大回撤 對 0050
0050(含息對照,同視窗) 24.69% 1.21 -33.96% 基準
價格動能(近 60 日漲幅) 11.54% 0.45 -58.86%
營收動能(年增最高) 7.36% 0.40 -38.16%
低股價淨值比(PB) 6.37% 0.35 -34.57%
高 ROE 5.90% 0.35 -27.99%
低波動(近 60 日,流動性過濾後) 3.99% 0.34 -13.63% 輸(但回撤最小)
低本益比(PE) -1.40% -0.11 -44.13% 輸(且為負報酬)

在本頁設定下、這段期間,沒有任何一個單因子贏過含息 0050。 這是這段樣本的結果,不能直接外推成「台股單因子永遠不行」:換一段期間、換一組參數,排序可能不同。幾個值得記下來的觀察:

  • 報酬最高的「價格動能」(11.54%)也只有 0050 的一半,而且要你忍受 -59% 的回撤,多數人很難照原規則一路抱著不停損。
  • 「低本益比」單獨用是負報酬。便宜常常便宜有原因(產業衰退、獲利下修),這就是價值陷阱。
  • 「低波動」報酬墊底,但最大回撤只有 -13.6%,是所有因子裡最小的。它不是用來衝報酬的,是用來壓回撤的,複合策略會用到這一點。

低波動因子的一個陷阱: 若不加流動性過濾,直接取全市場「波動最低」的股票,會選到近乎停滯的全額交割股或低流動個股(它們因為幾乎不交易,測出來的波動被低估),回測報酬接近零且不具代表性。所以低波因子與複合策略都加上「近 60 日成交額前 50%」的流動性門檻。

為什麼單因子會輸?

每個因子各有一個結構性弱點:

因子 弱點
動能 怕急漲後反轉,牛轉熊時回撤特別深(-59%)
低 PE / 低 PB 怕價值陷阱,買到的便宜股是基本面在惡化
高 ROE 怕買貴,好公司常常已經反映在股價上
低波動 怕在牛市跑輸,漲得慢

關鍵在於:這些弱點彼此不在同一個時間點發作。動能反轉的時候,低波正好幫你扛住;價值陷阱拖累報酬的時候,品質與營收成長能把你拉回真正在賺錢的公司。把彼此低相關的因子疊起來,一個失靈時其他能補,整體的波動與回撤就被壓下來。這也是 Asness, Moskowitz & Pedersen (2013)《Value and Momentum Everywhere》觀察到的現象:價值與動能在多數市場負相關,合成組合的夏普高於單獨任一個。

三套選股策略逐一拆解

策略一(主軸):四因子複合,品質+動能+低波+營收

把四個方向不同的因子各自轉成橫斷面百分位排名(0 至 1 分),加權平均成總分,選分數最高的 25 檔、依分數加權,每月對齊營收公布日換股:

因子 抓什麼 在組合裡的角色 學術參考
ROE 品質 股東權益報酬率 過濾「成長但不賺錢」的公司 Novy-Marx (2013)
價格動能 近 120 日漲幅 跟上市場已認同的標的 Jegadeesh & Titman (1993)
低波動(雙倍權重) 近 120 日波動度低者加分 壓低整體回撤 Ang et al. (2006)
營收動能 月營收年增 確認基本面正在成長

低波給雙倍權重是刻意的設計選擇,動機是降低回撤,不是衝高年化。結果:年化 20.05%、日夏普 1.46、最大回撤 -24.8%,三個風險調整指標都在 0050 之上,代價是絕對報酬落後約 5 個百分點。

核心程式就這幾行(finlab.login() 不帶參數,套件會自動引導登入):

顯示程式碼
from finlab import data
from finlab.backtest import sim
 
close = data.get('price:收盤價')
roe   = data.get('fundamental_features:ROE稅後').index_str_to_date()
rev   = data.get('monthly_revenue:去年同月增減(%)')
 
mom = close / close.shift(120) - 1                  # 近 120 日動能
vol = close.pct_change().rolling(120).std()         # 近 120 日波動
 
# 四個低相關因子各自橫斷面排名後加總(低波給雙倍權重),選最高 25 檔
score = (roe.rank(axis=1, pct=True)
         + mom.rank(axis=1, pct=True)
         + 2 * (-vol).rank(axis=1, pct=True)
         + rev.rank(axis=1, pct=True))
position = score.is_largest(25)
 
report = sim(position, resample='M', resample_offset='14D')
print(report.get_stats())

完整版(含分數三次方加權、流動性過濾)見文末可下載的 hero-quality-momentum-lowvol.py

策略二:價值+品質+股息

在成交額前 50%、股價淨值比為正、近 6 個月動能為正的股票裡,用「低 PB+高 ROE+高殖利率」三個訊號排名加權,選前 20 檔、每季換股。年化 22.92% 是三套中最高,最大回撤 -32.2% 也比 0050 淺。動能大於 0 這道過濾是價值策略的關鍵:它避開「便宜但還在跌」的價值陷阱,等市場開始認同再進場。

策略三:籌碼選股(投信買超+動能)

用投信近 20 日累計買超佔日均量的比率當「認養強度」,加上近 3 個月動能,在市值前 600 大、流動性過濾後選前 15 檔、每月換股。結果是反面教材:年化 16.52%、日夏普 0.70,全段輸給 0050。 它近三年的夏普在 1.5 以上(投信題材在 2024 至 2026 的行情裡明顯有效),但拉長看,單靠籌碼面訊號的長期體質不如基本面與複合因子。籌碼資料更適合當「額外的確認層」,而非獨挑大樑;深入的法人買賣超實測見 法人籌碼選股實測

淨值曲線對數座標,三套因子選股策略與 0050 含息的資金成長對照

回撤曲線,四因子複合的回撤明顯淺於其他策略與 0050

回撤圖是本頁的核心論點:四因子複合(藍線)在 2020 疫情急殺與 2022 升息空頭的回撤都明顯淺於 0050 與其他策略。選股策略的價值不在押對單一指標,而在把低相關因子組起來壓低回撤。

風險調整報酬長條圖,三套選股策略與 0050 的日夏普與月索提諾對照

下面是主軸策略(四因子複合)的互動式回測儀表板,可查看每年績效、持股與回撤明細:

{{embed:report_strategy.html}}

穩健性檢查:這結論不是挑到漂亮參數

一個策略最容易被質疑的是過擬合:會不會只是剛好挑到一組好參數、或只靠某一段行情?下列敏感度測試沿用四因子複合的原始研究視窗(2018-03 至 2026-06,重現腳本 robustness.py),該視窗的複合策略基準值為年化 19.55%、日夏普 1.24:

動能回看期(60/120/240 日):三種口徑的年化都落在 19.5% 至 19.7%、夏普 1.23 至 1.25,結論對回看期不敏感。

持股檔數(20/25/30/50 檔):年化 19.2% 至 20.4%、夏普 1.23 至 1.28,20 至 50 檔結果都接近,分散程度不是結論的關鍵。

低波權重(1/2/3 倍):這是唯一影響大的參數,它直接決定報酬與回撤的取捨:

低波權重 年化報酬 最大回撤
1 倍 23.71% -39.35%
2 倍(本頁採用) 19.55% -25.60%
3 倍 17.42% -22.29%

低波權重從 1 倍加到 3 倍,回撤從 -39% 一路降到 -22%,代價是年化從 24% 降到 17%。這印證低波因子是「壓回撤」的主引擎,選 2 倍是報酬與回撤間的刻意折衷,而非曲線擬合。

族群排除:把電子、半導體、光電族群整批排除後再測,年化幾乎不變(19.52%),代表結果不是被台積電供應鏈單一族群撐起來的。

成本壓力測試

四因子複合在不同手續費假設下的年化報酬(證交稅固定 0.3%,本頁主視窗):

手續費假設 年化報酬
0%(理論值) 22.1%
0.1425%(本頁設定) 20.1%
0.3%(約 2 倍) 17.8%
0.5%(含滑價代理) 15.0%

月周轉率約 51%(每月約換掉一半持股)屬中等偏高,所以成本敏感但不致命:手續費加到 0.5%,年化掉到 15.0%,風險調整指標仍在多數單因子之上。

四大選股面向:想自己組策略的工具箱

上面是研究結果;這一節把四大面向當工具箱整理,給想自己組選股條件的讀者。

基本面選股:先看公司賺不賺錢、貴不貴

指標 白話定義 怎麼看 學術參考
本益比 PE 股價 ÷ 每股盈餘,幾年回本 越低越「便宜」,但太低常有原因 Basu (1977):低 PE 組長期報酬較高
股價淨值比 PB 股價 ÷ 每股淨值 <1 代表股價低於帳面價值 Fama & French (1992):高淨值市值比有溢酬
股東權益報酬率 ROE 公司用股東的錢賺錢的效率 越高越會賺,>15% 算優 Novy-Marx (2013):高獲利能力股有超額報酬

基本面三大指標單獨用都跑輸大盤(ROE 5.9%、PB 6.4%、PE 倒虧)。它們的價值不在單獨選股,而是當過濾器:先排除不賺錢、太貴的公司,再交給其他因子。想看 ROE 與本益比怎麼搭配,讀 ROE × 本益比選股策略

技術面選股:看價格趨勢與波動的時機

工具 白話定義 選股用途
均線(MA) 一段期間的平均收盤價 站上季線/年線視為多頭
價格動能 近 N 日的漲幅排名 買「已經在漲」的強勢股
波動度 報酬的標準差 低波動股回撤通常較淺
MACD / KD 均線乖離與相對高低位置 判斷動能轉強轉弱、超買超賣

技術面在本頁扮演兩個角色:價格動能負責跟上市場已認同的標的,低波動負責壓低整體回撤。純動能年化雖有 11.5%,回撤卻達 -59%,動能要搭配低波才抱得住。想完整比較 13 個常用技術指標當選股因子的台股回測,看 技術分析選股總覽

籌碼面選股:看誰在買

籌碼指標 白話定義 解讀
三大法人買賣超 法人當日淨買/淨賣張數 連續買超視為認同
投信作帳 投信季底/年底拉抬持股 季底前的投信買超股值得留意
主力/大戶持股 大額帳戶持股比例變化 大戶增加常領先股價
融資融券 散戶槓桿多空部位 融資過高、券資比異常需警惕

籌碼面在台股相對有效(本土法人行為明顯),但本頁策略三的實測提醒:單靠籌碼訊號長期輸大盤,它更適合當額外的確認層。想深入,從 法人籌碼選股實測 看三大法人買賣超當選股因子的真實回測。

消息面選股:抓營收與財報的成長轉折

台股最即時的訊號是月營收(每月 10 日前公布),比季報快,是抓基本面轉折的好工具。

消息面指標 白話定義 選股用途
月營收年增(YoY) 與去年同月比,營收成長幾 % 連續正成長代表動能延續
財報三表 損益表、資產負債表、現金流量表 確認獲利品質、是否燒錢
財測/法說 公司對未來的展望 提供前瞻訊號

關於換股日延後 14 天: 本頁策略把換股日延後到月營收公布之後(resample_offset='14D'),目的是避免使用尚未公布的資訊(前視偏差),確保進場時營收數字已對市場公開。這跟 Bernard & Thomas (1989) 的 PEAD(盈餘公告後漂移)是相關但不同的概念:PEAD 講的是盈餘公告後的漂移,月營收不等於盈餘,所以這裡的延後是嚴謹性處理。

新手怎麼開始:把四大面向串成一條流程

  1. 定方向。 由上而下(先選產業再選股)或由下而上(直接從財報海選)。新手建議由下而上,讓數據說話,因為它可回測、可驗證。
  2. 基本面初篩。 用 ROE、本益比、股價淨值比,過濾掉不賺錢或太貴的公司。
  3. 消息面確認成長。 看月營收年增是否為正、是否連續成長。
  4. 技術面挑時機。 在符合基本面的標的中,挑近期有動能、波動相對低的。
  5. 分散與定期換股。 選 20 至 30 檔分散個股風險,每月依規則換股,並用回測驗證。

這五步驟的精神,正是四因子複合策略在做的事:先用基本面與消息面確認好公司,再用技術面確認好時機,最後分散持有並系統化換股。

不會寫程式?用一句話請 AI 跑回測

FinLab 的做法是:你不必背 Python 語法,只要把規則用白話講清楚,回測交給 AI 加 finlab 實跑。

💬 你對 AI 說:

幫我用四個條件選台股:ROE 高、近 120 天漲幅高、近 120 天波動低(低波給雙倍權重)、月營收年增高。把這四項各自做橫斷面排名加起來,選分數最高的 25 檔,依分數加權,每月對齊營收公布日換股,回測 2018 到現在,跟含息 0050 比報酬、夏普、索提諾和回撤。

🤖 AI 回覆:

已用 finlab 跑完回測。四因子複合策略年化 20.05%、日夏普 1.46、月索提諾 1.92、最大回撤 -24.8%。

和含息 0050 對比:報酬略低(20.1% vs 25.1%),但日夏普更高(1.46 vs 1.22)、回撤淺約 9 個百分點。0050 贏在絕對報酬,這個策略贏在風險調整後表現與較淺的回撤。

免費試用

用 AI 開始 FinLab

把這句話交給你的AI,它會帶你完成設定並做出第一個策略。

告訴你的AI:

幫我設定 FinLab,跑一個量化入門回測,請讀:https://finlab.finance/setup

回測方法揭露

項目 設定
回測期間 主表 2018-01 至 2026-06;單因子與敏感度表 2018-03 至 2026-06(起點受月營收資料限制),各表已標註
交易成本 finlab sim() 已扣手續費 0.1425% + 賣出證交稅 0.3%
滑價 / 容量 未額外假設滑價;未估算策略容量,實際衝擊取決於資金規模與個股成交量
基準 0050 用 etl:adj_close(含息調整),純算術買進持有
股票池 全上市櫃;流動性過濾:剔除近 60 日日均成交額後 50% 的個股
排除類別 未特別排除金融股 / KY 股;另做「排除電子/半導體族群」敏感度測試
前視偏差 ROE 用 index_str_to_date() 對齊財報公布日;月營收用 resample_offset='14D' 確保只用已公布資料
周轉率 四因子複合平均月單邊周轉率約 51%,單月最高約 76%
樣本內外 全段 in-sample,未做樣本外 / 滾動測試

限制提醒: 這段樣本含一段由 AI、半導體領漲的強多頭,且未做樣本外驗證。實盤前請自行做 out-of-sample 與不同成本假設的壓力測試,別把單一段回測當未來保證。

常見問題(FAQ)

Q1:台股選股策略有哪些? 常見選股策略對應四大面向:基本面(ROE、本益比、股價淨值比)、技術面(均線、動能、波動)、籌碼面(三大法人、主力持股)、消息面(月營收、財報)。本頁實測顯示單獨用沒有任何一個贏過含息 0050,真正有價值的是把低相關因子疊成複合策略。

Q2:選股方法和選股策略一樣嗎? 指的是同一件事,差別只在說法。挑哪些指標、用什麼規則把它們組起來,就成了一套選股策略。

Q3:低本益比不是價值投資核心嗎,為何會倒虧? 概念對,但單獨用在台股這段期間跑輸大盤(-1.4%):便宜常有因(產業衰退),即價值陷阱。本頁策略二的做法是加上品質、股息與動能確認,年化就回到 22.9%。

Q4:複合策略年化 20.1% 還輸 0050 的 25.1%,憑什麼說它好? 它沒有全面贏,優勢在風險調整後表現:日夏普更高(1.46 vs 1.22)、回撤淺約 9 個百分點(-24.8% vs -34.0%)。報酬上限換更小的回撤,是取捨不是免費午餐。

Q5:選 25 至 30 檔會不會太分散? 分散是為了降低個股暴雷風險;複合策略用分數加權把資金集中在最高分股,兼顧分散與集中。敏感度表顯示 20 至 50 檔結果都接近。

Q6:投信買超選股有效嗎? 本頁策略三的實測答案:近三年有效(夏普 1.5 以上),全段(2018 起)輸 0050。籌碼訊號適合當確認層,不適合單獨扛選股。

Q7:新手該怎麼開始選股? 走「由下而上」:基本面初篩 → 月營收確認成長 → 技術面挑時機 → 分散 20 至 30 檔、依規則定期換股。重點是可回測、可驗證。

Q8:回測贏就能直接實單嗎? 不行。要扣交易成本與滑價、注意過擬合與前視偏差,還要考量策略容量。本頁為全段 in-sample,請當研究起點,不是保證。

Q9:我不會寫程式可以做嗎? 可以。把選股規則用白話講給 AI,由 finlab 實跑回測;上方回測器登入後也能直接改條件重算。

Q10:哪一種選股策略報酬最高? 看你比哪個指標。絕對報酬是 0050 最高(25.05%);風險調整後是四因子複合(日夏普 1.46);三套策略中年化最高的是價值+品質+股息(22.92%)。注意這是這段樣本的結果,換期間排序可能不同。

學術參考

  • Fama & French (1992)《The Cross-Section of Expected Stock Returns》:規模與淨值市值比(價值)能解釋股票報酬,是低 PB 選股的理論基礎。
  • Jegadeesh & Titman (1993)《Returns to Buying Winners and Selling Losers》:過去 3 至 12 個月漲得多的股票傾向繼續漲,確立動能異象。
  • Novy-Marx (2013)《The Other Side of Value》:高獲利能力(品質)的公司有超額報酬,支撐用 ROE 選股。
  • Ang, Hodrick, Xing & Zhang (2006)《The Cross-Section of Volatility and Expected Returns》:低波動股票有較好的風險調整報酬,支撐給低波較高權重。
  • Asness, Moskowitz & Pedersen (2013)《Value and Momentum Everywhere》:價值與動能跨市場負相關,合成組合的夏普高於單一因子,是「疊加」的理論依據。

相關閱讀

可下載重現(本頁所有數字的來源)


投資有風險,過去績效不代表未來表現。本內容僅供教學參考,不構成投資建議,請依個人風險承受度審慎評估。本頁所有年化報酬、夏普、索提諾、回撤數字來源:finlab 實測(主表 2018-01 至 2026-06、單因子與敏感度表 2018-03 至 2026-06,benchmark 用 etl:adj_close 含息,sim() 已扣手續費與證交稅),回測為全段 in-sample、未做樣本外測試,數字會隨資料更新而變動。

最後更新:2026-07-02|回測區間:2018-01 至 2026-06|作者:FinLab 量化研究團隊(經量化研究員審閱)