![]()
四萬點行情最容易讓人誤判的一件事,是把指數新高看成所有股票都在新高。這個分化不是四萬點後才出現;2026 年 1 月 16 日台股站上三萬點附近時,FinLab 統計有價格資料的 2,290 檔台股:下跌股票 1,162 檔,占 50.7%;上漲股票 943 檔,占 41.2%。盤面看起來很強,攤開個股卻有一半沒有跟上。
這種市場不能只靠一句「多頭選強勢股」處理。本文把問題收斂成配置選擇:核心部位用含息 0050 承接權值股行情,衛星部位用複合因子處理分化。FinLab 重新跑過 2018-03 至 2026-06 的台股選股回測後,結果很明確:六個常見單因子全部輸給含息 0050;60% 0050 + 40% 複合因子的核心衛星配置,CAGR 23.55% 低於 0050 的 25.50%,但最大回撤從 -33.96% 收斂到 -26.80%,月索提諾從 1.93 提高到 2.44。
| 問題 | 數據 | 解讀 |
|---|---|---|
| 三萬點樣本日是否全面上漲 | 下跌 1,162 檔,占 50.7% | 指數強,不等於多數股票強 |
| 單一選股指標是否夠用 | 六個單因子 CAGR 最高 13.40%,低於 0050 的 25.50% | 單因子容易有明顯弱點 |
| 核心衛星是否全面打贏 0050 | CAGR 23.55%,低於 0050 的 25.50% | 不該說報酬勝出 |
| 核心衛星的價值 | 最大回撤 -26.80%,0050 為 -33.96%;月索提諾 2.44,0050 為 1.93 | 贏在風險調整與回撤控制 |
四萬點行情的分化:指數漲,不代表多數股票漲

K 型分化在投資上很具體:權值股把指數往上推,但大量個股沒有同步跟上。0050 是市值加權 ETF,權重越大的股票越能影響整體報酬;若主要漲幅集中在台積電與少數大型股,等權持有中小型股的投資人會感覺自己活在另一個市場。

這也是為什麼台股四萬點選股不能只問「哪個指標最近有效」。如果市場報酬集中在少數權值股,低本益比、低股價淨值比或營收成長等條件可能反而把你帶離真正推動指數的股票。本文原始版本曾把高報酬、高回撤的實驗當主角;新版把它降級為反面線索:追逐漂亮 CAGR 很容易把回撤一併放大,四萬點附近更需要先決定核心資產與衛星策略的比例。
六個常見單因子,都沒有贏過含息 0050
FinLab 重新跑的單因子測試,每個因子各選 30 檔、月頻換股,並與含息 0050 比較。回測區間為 2018-03 至 2026-06,涵蓋疫情急殺、升息空頭與 AI 多頭。所有回測數字都來自本頁可下載的 data.csv 與 strategy.py。

| 單因子(各選 30 檔) | CAGR | 日夏普 | 最大回撤 |
|---|---|---|---|
| 0050 含息對照 | 25.50% | 1.24 | -33.96% |
| 價格動能(近 60 日漲幅) | 13.40% | 0.50 | -58.86% |
| 營收動能(年增最高) | 7.78% | 0.42 | -38.16% |
| 低股價淨值比(PB) | 6.49% | 0.36 | -34.57% |
| 高 ROE | 6.11% | 0.36 | -27.99% |
| 低波動(近 60 日,流動性過濾後) | 4.13% | 0.36 | -13.63% |
| 低本益比(PE) | -0.81% | -0.07 | -44.13% |
這張表有三個重點。第一,單買價格動能的報酬最高,但最大回撤接近 -59%,比 0050 深很多。第二,低本益比在這段期間是負報酬,代表「便宜」可能只是基本面惡化或產業下修。第三,低波動報酬最低,卻有最淺回撤;它不是拿來衝報酬的因子,比較像風險煞車。
這些觀察和學術文獻一致。動能效應可參考 Jegadeesh & Titman (1993),獲利能力與品質因子的長期證據可參考 Novy-Marx (2013),低波動異象則可參考 Ang et al. (2006)。但文獻支持的是「因子可能有風險溢酬或異象」,不代表把單一指標丟到台股四萬點環境就會自然勝出。
核心衛星配置:報酬接近 0050,但回撤與月索提諾勝出
單因子輸給 0050 後,合理方向是把弱點不同的因子組成衛星策略,再把 0050 留在核心部位。本文的主策略是 60% 含息 0050 + 40% 品質、動能、低波、營收複合因子。衛星策略採用四個方向:ROE 品質、120 日價格動能、低波動、月營收年增。低波給雙倍權重,目標是降低回撤;最後選分數最高的 25 檔,依分數三次方加權,每月換股並把月營收資料延後 14 天使用。
顯示程式碼
from finlab import data
from finlab.backtest import sim
close = data.get("price:收盤價")
roe = data.get("fundamental_features:ROE稅後").index_str_to_date()
roe = roe.reindex(close.index, method="ffill")
revenue = data.get("monthly_revenue:去年同月增減(%)")
revenue = revenue.reindex(close.index, method="ffill")
amount = (close * data.get("price:成交股數")).rolling(60).mean()
quality = roe.rank(axis=1, pct=True)
momentum = (close / close.shift(120) - 1).rank(axis=1, pct=True)
low_vol = (-close.pct_change().rolling(120).std()).rank(axis=1, pct=True)
revenue_score = revenue.rank(axis=1, pct=True)
score = (quality + momentum + 2 * low_vol + revenue_score) / 5
score = score.where(amount.rank(axis=1, pct=True) > 0.5)
selected = score.rank(axis=1, ascending=False) <= 25
weights = (score ** 3).where(selected)
position = weights.div(weights.sum(axis=1), axis=0).fillna(0)
satellite = position * 0.4
satellite["0050"] = satellite.get("0050", 0) + 0.6
report = sim(satellite, resample="M", resample_offset="14D", upload=False)
report.get_stats()
| 指標 | 0050 含息對照 | 60% 0050 + 40% 複合因子 |
|---|---|---|
| 年化報酬 CAGR | 25.50% | 23.55% |
| 日夏普 | 1.24 | 1.27 |
| 月索提諾 | 1.93 | 2.44 |
| 最大回撤 | -33.96% | -26.80% |
最大回撤(MDD) 是從高點跌到低點的最大跌幅;夏普比率 與索提諾比率衡量每承擔一單位風險換到多少報酬。這裡同時列 0050 與策略,避免只挑對策略有利的指標。
核心衛星配置的主張要講清楚:它沒有在 CAGR 上贏過 0050。它的價值是把最大回撤從 -33.96% 降到 -26.80%,月索提諾從 1.93 提高到 2.44,同時保留大部分 0050 的上漲參與度。對能忍受 0050 大回撤的人,被動持有仍然簡單有效;對想降低路徑波動、又不想完全離開權值股行情的人,核心衛星配置才有討論價值。
互動式回測報告放在這裡,權益曲線、月報酬熱力圖、年度績效與回撤區間都可以逐項檢查:
低波權重是回撤控制的主引擎
低波因子在單因子表中報酬最低,但在複合策略裡很重要。把低波權重從 1 倍提高到 3 倍,CAGR 會下降,最大回撤也同步收斂。這是一個很明確的報酬與風險交換。

| 低波權重 | CAGR | 日夏普 | 月索提諾 | 最大回撤 |
|---|---|---|---|---|
| 1 倍 | 24.04% | 1.10 | 2.31 | -39.35% |
| 2 倍(本文) | 20.18% | 1.27 | 2.56 | -25.60% |
| 3 倍 | 18.14% | 1.30 | 2.64 | -22.29% |
這也是台股四萬點選股最容易忽略的一點:如果只追最高 CAGR,低波 1 倍看起來接近 0050;但最大回撤會放大到 -39.35%。把低波提高到 2 倍後,報酬低一些,回撤明顯縮小。這種取捨比「找一個神奇指標」更接近真實投資決策。
四萬點後,這份回測該怎麼用
這份研究比較適合拿來做「配置選擇」,不適合拿來當明牌清單。若你的核心目標是參與權值股多頭,0050 的絕對報酬仍然強,而且規則簡單;若你在意的是四萬點後可能出現的高位震盪,核心衛星配置提供的是較淺回撤與較高風險調整表現。更務實的做法是先決定資金角色:核心部位用 ETF 承接市場 beta,衛星部位再用複合因子尋找分化市場裡的強勢股。這樣即使選股策略短期跑輸,也不會讓整體投資結果完全取決於單一模型。
| 使用情境 | 比較合理的做法 | 觀察指標 |
|---|---|---|
| 想省時間、少換股 | 以 0050 或大盤 ETF 為主 | 最大回撤是否能承受 |
| 想降低回撤 | 使用 60% 0050 + 40% 複合因子 | 月索提諾、回撤、周轉率 |
| 想追求高報酬 | 不只看 CAGR,必須同步檢查 MDD | 回撤、週轉率、滑價 |
回測口徑與限制
| 項目 | 本文設定 |
|---|---|
| 回測區間 | 2018-03 至 2026-06 |
| 股票池 | 全上市櫃,並剔除近 60 日日均成交額後 50% 的低流動股票 |
| 對照基準 | 0050 含息對照,使用 etl:adj_close |
| 交易成本 | finlab sim() 預設內扣手續費 0.1425% 與賣出證交稅 0.3% |
| 滑價 | 本頁未另加滑價;實際成本會隨資金規模與成交量變動 |
| 前視處理 | 財報 ROE 對齊公布後資料;月營收換股延後 14 天 |
| 權重 | 選 25 檔,分數三次方加權,單檔權重由分數正規化產生 |
| 周轉率 | 核心衛星平均月單邊周轉率 20.5%,單月最高 30.4%;純衛星策略平均 51.3% |
| 排除類別 | 低流動股票已排除;本文未另外排除 KY、全額交割或特定產業 |
| 樣本外 | 本文為全段 in-sample,後續季度刷新會補發佈後前瞻表現 |
| 容量 | 本文未估算策略容量;資金規模越大,衛星持股的市場衝擊與滑價越需要另行壓力測試 |
更完整的選股研究可延伸閱讀 台股選股回測 2026,若想看動能型策略的另一種寫法,可讀 創新高策略 與 AI 量化研究提示詞。基本面方向可接著看 ROE × 本益比選股、低本益比選股回測 與 14 年 14 倍選股策略。想把多因子框架寫成 Python,可參考 Python 選股回測教學 與 多因子選股策略。量化研究方法的總覽可看 量化交易完整指南。
想重現這篇回測,可以把下面的任務交給你的 AI agent:
用 AI 開始 FinLab
把這句話交給你的AI,它會帶你完成設定並做出第一個策略。
告訴你的AI:
幫我設定 FinLab,重現這篇文章的台股四萬點選股回測,請讀:https://finlab.finance/setup?relatedUrl=/blog/30k-stock-selection
FAQ
| 問題 | 回答 |
|---|---|
| 台股四萬點還能選股嗎? | 可以,但不要只看單一指標。本文實測六個單因子都輸給含息 0050,核心衛星配置才改善回撤與風險調整。 |
| 這篇是否代表 0050 一定比較好? | 不代表。本文區間內 0050 的絕對報酬較高,但最大回撤也較深。若投資人重視簡單與長期持有,0050 很合理;若重視回撤控制,核心衛星配置才值得研究。 |
| 為什麼不用舊版高 CAGR 實驗當主角? | 高 CAGR 若伴隨過深回撤,對多數投資人反而難以執行。新版把它視為高報酬但不穩的範例,不再當主策略。 |
| 為什麼 benchmark 要用含息 0050? | 長期比較若只用收盤價,會漏掉配息,使 0050 報酬被低估。本文用 etl:adj_close 還原除權息。 |
| 複合策略為什麼加入低波? | 低波單因子報酬不高,但回撤最淺。加入複合策略後,它負責降低整體波動與最大回撤。 |
| 這個策略可以用在實盤嗎? | 不建議照抄。本文未估算滑價與容量,月頻換股也會產生成本;實盤前要依資金規模、成交量與交易規則再做壓力測試。 |
投資有風險,過去績效不代表未來表現。本內容僅供教學參考,不構成投資建議,請依個人風險承受度審慎評估。
作者:FinLab 量化研究團隊。團隊長期維護台股與美股量化回測資料、FinLab Python 套件教學與策略研究文章;本文由研究員以 finlab 實跑資料審閱,重點放在資料口徑、前視偏差、交易成本與回撤風險。
最後更新:2026-06|回測區間:2018-03 至 2026-06|作者:FinLab 量化研究團隊(經量化研究員審閱)
VIP 區域接著提供完整換股檢查清單:用 CAGR 23.55%、月索提諾 2.44、最大回撤 -26.80% 的核心衛星配置,檢查每月持股、換股點與下載檔。
VIP 區域包含策略細節
登入後可看策略優化、完整程式碼與互動式回測報告
FinLab AI
想建立自己的策略?
用自然語言描述你的選股想法,AI 自動驗證、回測、給你答案
免費開始

