股票選股怎麼開始?
股票選股是用明確的指標與規則,從全市場挑出一籃子股票。台股常見的選股方法分四大面向:基本面(賺不賺錢、貴不貴)、技術面(趨勢與波動)、籌碼面(誰在買)、消息面(營收與財報轉折)。選股方法與選股策略是同一件事的兩種說法,重點都在用哪些面向的指標、依什麼規則挑出股票。
重點摘要
| 你想知道 | 答案 |
|---|---|
| 有沒有單一指標長期穩贏 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 反而更好,這是一個取捨,不是免費午餐。

夏普值(Sharpe):每承擔 1 單位總波動換到多少報酬。索提諾值(Sortino):只計入下跌波動。最大回撤(MDD):從最高點跌到最低點的最大跌幅,回撤越深越難抱住。
想直接看選股條件的最新名單,開 台股股票選股器;本頁負責回答「為什麼這些條件要這樣組」以及「怎麼避免單一指標陷阱」。
台股選股策略回測器:自己改條件跑一次
下面的回測器預載本頁三套策略的真實回測結果;登入後可以自己改因子組合與持股數,用最新台股資料在瀏覽器即時重算。
台股選股策略回測器
回測區間 2018-01 ~ 2026-06| 指標(2018–2026) | 四因子複合(品質+動能+低波+營收) | 0050 含息 |
|---|---|---|
| 年化報酬(CAGR) | 20.1% | 25% |
| 日夏普比率 | 1.46 | 1.22 |
| 索提諾比率 | 1.92 | 1.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 的行情裡明顯有效),但拉長看,單靠籌碼面訊號的長期體質不如基本面與複合因子。籌碼資料更適合當「額外的確認層」,而非獨挑大樑;深入的法人買賣超實測見 法人籌碼選股實測。


回撤圖是本頁的核心論點:四因子複合(藍線)在 2020 疫情急殺與 2022 升息空頭的回撤都明顯淺於 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 講的是盈餘公告後的漂移,月營收不等於盈餘,所以這裡的延後是嚴謹性處理。
新手怎麼開始:把四大面向串成一條流程
- 定方向。 由上而下(先選產業再選股)或由下而上(直接從財報海選)。新手建議由下而上,讓數據說話,因為它可回測、可驗證。
- 基本面初篩。 用 ROE、本益比、股價淨值比,過濾掉不賺錢或太貴的公司。
- 消息面確認成長。 看月營收年增是否為正、是否連續成長。
- 技術面挑時機。 在符合基本面的標的中,挑近期有動能、波動相對低的。
- 分散與定期換股。 選 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》:價值與動能跨市場負相關,合成組合的夏普高於單一因子,是「疊加」的理論依據。
相關閱讀
- 量化交易是什麼:上層概念與三套量化策略實測
- 程式交易是什麼:把選股規則自動執行、串券商 API 下單
- 台股股票選股器:8 個熱門選股條件、最新名單與可下載程式碼
- 回測是什麼:回測方法與常見陷阱
- 多因子選股實戰:年化贏過 0050:複合思路的進階加碼版
- ROE × 本益比選股策略:基本面兩大指標怎麼搭
- 法人籌碼選股實測:三大法人買賣超當因子的真實回測
- 技術分析選股總覽:13 個技術指標的 11 年實測
- PE、PB、PEG 三大估值因子台股 10 年回測
- ROE 到底高或低才好?換股頻率決定績效
- 機器學習選股新手教學:把因子交給模型的入門路徑
可下載重現(本頁所有數字的來源)
- 三策略入口腳本:strategy.py
- 單因子 vs 0050:factor-comparison.py
- 四因子複合完整版:hero-quality-momentum-lowvol.py
- 穩健性 / 敏感度:robustness.py
- 指標摘要:backtest_results.csv、metrics.json、data.csv
投資有風險,過去績效不代表未來表現。本內容僅供教學參考,不構成投資建議,請依個人風險承受度審慎評估。本頁所有年化報酬、夏普、索提諾、回撤數字來源:finlab 實測(主表 2018-01 至 2026-06、單因子與敏感度表 2018-03 至 2026-06,benchmark 用 etl:adj_close 含息,sim() 已扣手續費與證交稅),回測為全段 in-sample、未做樣本外測試,數字會隨資料更新而變動。
最後更新:2026-07-02|回測區間:2018-01 至 2026-06|作者:FinLab 量化研究團隊(經量化研究員審閱)