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

龍蝦 OpenClaw 跑 finlab 台股選股:高股息加品質動能回測

用龍蝦 OpenClaw 對話跑 finlab 台股高股息選股回測:只挑殖利率最高 15 檔在 2018 到 2026 年化 -4.4%、回撤 -57.4% 真的賠錢;加 ROE 與動能翻正到 21.7%;再讓龍蝦跑一輪加上低波動因子,回撤 -27.3%、年化波動 14.4%、日夏普 1.30、月索提諾 2.06,四項指標都優於 0050 含息,附可複製提示詞與程式碼。

加低波動回撤-27.3%淺於0050 CAGR 18.6% Sharpe 1.30

龍蝦 OpenClaw 跑 finlab 台股高股息選股回測淨值曲線:只挑殖利率最高賠錢、三因子翻正、四因子含低波動路徑最平穩,對比 0050 含息

新手最常做的台股選股,就是「挑殖利率最高的那幾檔,每年領股息」。聽起來很穩,但用 finlab 真的跑回測,結果會嚇你一跳:在 2018 到 2026 這段期間,只挑殖利率最高的 15 檔台股,每月再平衡,年化報酬是 -4.4%,最大回撤 -57.4%,等於本金腰斬還倒賠。原因很直白:殖利率會變高,常常是因為股價先跌了一段,分母變小、殖利率才看起來漂亮,你買到的是一籃子「正在出問題的便宜貨」。

這篇用一隻綽號叫「龍蝦」的開源 AI agent(OpenClaw)帶你看兩輪迭代。第一輪加上「公司有在賺錢」(用 ROE 衡量)和「股價最近半年有起色」(120 日動能)兩道條件,年化從 -4.4% 翻成 +21.7%;但把它放到 0050 含息旁邊看,年化、夏普、索提諾、回撤四項全部落後,領股息領得再安心,結果還不如買一張 0050。所以我們讓龍蝦再跑一輪,加上第四個條件「股價平穩」(120 日低波動):年化 18.6%,代價是報酬仍低於 0050,換到的是 日夏普 1.30、月索提諾 2.06、最大回撤 -27.3%、年化波動 14.4%,四項都優於 0050 含息。整個過程你不必碰終端機,像傳訊息一樣對龍蝦下指令,finlab 負責抓台股資料、跑回測、扣交易成本。

指標 只挑殖利率最高(naive) 三因子(第一輪) 四因子含低波動(⭐ 本文推薦) 0050 含息
年化報酬(CAGR -4.4% 21.7% 18.6% 25.1%
夏普比率 -0.14 1.14 1.30 1.22
月索提諾比率 -0.14 1.64 2.06 1.92
最大回撤(MDD -57.4% -34.6% -27.3% -34.0%
年化波動 19.7% 19.5% 14.4% 21.0%
總報酬 -31.0% +423.0% +323.0% +573.0%
平均持股數 15 檔 15 檔 15 檔 1 檔 ETF

索提諾比率:和夏普類似的風險調整報酬指標,但分母只計下跌波動,更貼近「怕跌不怕漲」的直覺;年化波動:日報酬標準差換算成年,數字越小淨值路徑越平穩。

口徑:2018-01 到 2026-07-09,策略含 finlab 預設交易成本(手續費加證交稅),0050 為還原價含息買進持有(詳見文末回測方法)。四因子版贏 0050 的是日夏普(1.30 對 1.22)、月索提諾(2.06 對 1.92)、最大回撤(-27.3% 對 -34.0%)與年化波動(14.4% 對 21.0%)這四項;輸的是年化報酬(18.6% 對 25.1%)與總報酬。用一句白話講這筆交換:0050 這 8 年多的高報酬,是用 -34% 的最大回撤和 21% 的年化波動換來的;這個組合報酬較低,但同樣的路上顛簸少了三分之一,最深的坑也淺了快 7 個百分點。

龍蝦 OpenClaw 是什麼?為什麼新手特別適合用它選股

OpenClaw 是一個開源的自主 AI agent,因為標誌長得像龍蝦,社群都直接叫它「龍蝦」。它最大的特色是 用聊天/通訊軟體當操作介面:你不必開終端機、不必記指令,就像在跟朋友傳訊息一樣,把想做的事用白話講給它聽,它會自己規劃步驟、執行程式、把結果回傳給你。它支援多種大型語言模型、可自架,門檻在同類工具裡偏低,台大李宏毅教授也曾把它當作 AI agent 的教學案例之一。

對「想做台股選股但不會寫程式」的新手來說,龍蝦解掉的是最痛的那一步:環境設定與寫程式。傳統流程要你先裝 Python、裝套件、學語法,很多人卡在這裡就放棄了。龍蝦讓你把這些都交給它,你只負責用中文描述策略邏輯。它跟一般股票看盤軟體的差別在這裡:

能力 一般看盤/選股軟體 龍蝦 OpenClaw+finlab
操作方式 在固定欄位打勾、設參數 用聊天視窗講白話需求
選股彈性 只能用內建條件組合 任意組合因子、自訂排名與權重
回測真實性 多半只給篩選結果,少含成本 finlab 實跑,內扣手續費與證交稅
結果可驗證 數字封閉在軟體裡 產出程式碼與資料,可自己重跑
自動通知 多半要手動查 可請它把清單傳到 Telegram

關鍵在最後幾列。看盤軟體給你一個篩選結果就結束了,龍蝦+finlab 給你的是「可驗證的研究流程」:策略邏輯用中文講、程式由 AI 產生、數字由 finlab 實跑、結果可下載重跑。這也是為什麼這篇能放上真實回測數字:它們不是 AI 憑記憶講的,是回測引擎跑出來的。想先補一下選股的整體脈絡,可以讀台股選股方法總整理;想理解「回測」到底在做什麼,回測是什麼有完整說明。

招牌用法:像傳訊息一樣,請龍蝦跑高股息選股回測

龍蝦的招牌用法,就是把一段白話需求貼進聊天視窗,剩下交給它。下面這段提示詞你可以直接複製,貼給已經裝好 finlab 的龍蝦:

幫我從台股挑「殖利率高、公司有賺錢(ROE 高)、股價有起色(近半年動能)、
股價平穩(波動低)」的 15 檔,做成每月再平衡的回測,跟 0050 含息比。
殖利率、ROE、120 個交易日動能、120 個交易日波動率四個因子各自做百分位排名
(波動率越低排名越前),分數相加後取總分前 15 名,依分數加權買入。
請告訴我年化報酬、最大回撤、夏普、月索提諾與年化波動,並附上程式碼。

貼進去之後,一輪對話大概像這樣:

💬 你問龍蝦:

幫我從台股挑「殖利率高、公司有賺錢(ROE 高)、股價有起色(近半年動能)、股價平穩(波動低)」的 15 檔,每月再平衡回測,跟 0050 含息比,並附程式碼。

🤖 龍蝦回覆:

已用 finlab 完成回測,區間 2018-01 到 2026-07,含手續費與證交稅:

  • 策略年化報酬 18.6%,最大回撤 -27.3%,年化波動 14.4%,總報酬 +323%
  • 日夏普 1.30,月索提諾 2.06,平均持有 15 檔
  • 對照 0050 含息:年化 25.1%、回撤 -34.0%、日夏普 1.22、月索提諾 1.92、年化波動 21.0%

年化報酬輸 0050,但日夏普、月索提諾、最大回撤、年化波動四項都優於 0050。補充:如果只用「殖利率最高」這一個條件,同期年化會掉到 -4.4%、回撤 -57.4%。下面是完整程式碼,你可以自己重跑。

注意龍蝦在最後主動補了一句對照,這正是這篇要講的教訓,我們接著用真實數字把它攤開。

naive 做法為什麼賠錢:只追高股息踩進價值陷阱

先看最直覺、也最多新手會做的版本:每個月把全市場殖利率最高的 15 檔買下來,等權持有。直覺上「股息高=便宜=穩」,但回測結果完全相反。

💬 你問龍蝦:

用白話講,為什麼「只買殖利率最高的股票」在 2018 到 2026 這段期間反而會賠錢?

🤖 龍蝦回覆:

因為殖利率是「每股股息 ÷ 股價」。股價跌得越凶,分母越小,殖利率就越高。所以「殖利率排行榜的前幾名」常常不是穩定配息的好公司,多半是股價正在崩、市場已經在預期它減資或減配的公司。回測裡這 15 檔的年化是 -4.4%、最大回撤 -57.4%,等於本金一度腰斬還倒賠,這就是典型的「價值陷阱」。

把這段話換成數字:naive 做法(只挑殖利率最高)在這 8 年多裡淨值越走越低,最後總報酬 -31%;加上品質與動能兩道條件後,同一段期間翻成 +423%(見文首淨值曲線圖的橘線與紫線)。

學術上,這個現象不是新發現。Asness、Frazzini 與 Pedersen 在 Quality Minus Junk (2019) 指出,市場長期對「高品質公司」給的溢價並不足,而單純的便宜(低估值、高股息)若不搭配品質篩選,很容易買到基本面正在惡化的「垃圾」。換句話說,高股息只是入場券,真正要避開的是「便宜但爛」的公司,而判斷「爛不爛」要看獲利能力。

第一輪迭代:加品質(ROE)與動能(120 日)後翻正

修法很白話:在「殖利率高」之外,再要求「公司有在賺錢」和「股價最近半年有起色」。具體做法是把三個因子各自在候選池內做百分位排名,分數相加,取總分前 15 名。這三個因子各自都有扎實的學術根據:

  • 品質/獲利能力Novy-Marx (2013) 證明獲利能力強的公司,即使估值不便宜,長期報酬仍系統性較高。他用毛利率,本文用 ROE,同屬獲利能力家族但口徑不同,效果不能直接畫等號;用意是把「正在虧錢或獲利惡化」的高股息股先擋掉。
  • 價格動能Jegadeesh & Titman (1993) 發現過去數月的贏家股票,後續一段時間平均仍持續跑贏輸家。本文用 120 個交易日(約半年)報酬當動能指標,把「股價還在破底」的便宜貨往後排。
  • 高股息需搭配品質:呼應前一段引用的 Asness、Frazzini 與 Pedersen (2019),純高股息容易踩價值陷阱,必須用品質因子過濾。

兩道條件加上去,同一段期間的年化從 -4.4% 翻成 21.7%,最大回撤從 -57.4% 收斂到 -34.6%。到這裡為止,這是一個「把賠錢起點救成正報酬」的成功故事。

但把它放到 0050 含息旁邊,就沒那麼好看了:年化 21.7% 對 25.1%、日夏普 1.14 對 1.22、月索提諾 1.64 對 1.92、最大回撤 -34.6% 對 -34.0%,四項全部落後。也就是說,一個人費工挑了 15 檔高股息股票、每月換股,波動和回撤跟大盤差不多,報酬還比較低,那他為什麼要做這件事?這個問題,就是下一輪迭代的起點。

再讓龍蝦跑一輪:第四個因子「低波動」,回撤變得比 0050 淺

高股息組合的天性是低 beta、偏防禦,照理說它該贏在「跌得少、走得穩」,上一版卻連這點都沒做到。所以我們把這個觀察丟回給龍蝦:

💬 你問龍蝦:

這個三因子版本的年化、夏普、索提諾、回撤全都輸 0050 含息。高股息組合理論上該比較抗跌,幫我往「降波動、降回撤」的方向再設計幾個版本,同一段期間、同樣成本假設實測,把每個版本的結果都列出來,包括比較差的。

🤖 龍蝦回覆:

試了五個設計,全部同視窗、同成本實測。年化報酬沒有任何版本贏過 0050 的 25.1%,但風險面出現明顯分化,下面是全部結果:

設計 年化報酬 日夏普 月索提諾 最大回撤 年化波動
A. 三因子+第四因子「低波動排名」(⭐ 採用) 18.6% 1.30 2.06 -27.3% 14.4%
B. 三因子選股,改波動率倒數加權+單檔上限 10% 21.2% 1.17 1.75 -33.2% 18.5%
C. 先剔除波動率較高的一半,再跑三因子 19.3% 1.26 2.00 -28.9% 15.4%
D. 連續三年有配息+四因子 16.5% 1.20 2.07 -27.5% 14.1%
E. D 的選股,改波動率倒數加權+單檔上限 10% 16.0% 1.23 2.03 -26.6% 13.2%
0050 含息(對照) 25.1% 1.22 1.92 -34.0% 21.0%

五個版本的分歧很有資訊量:B 只動權重不動選股,波動和回撤的改善最小,日夏普還是沒贏 0050;A、C、D、E 四個把「低波動」放進選股邏輯的版本,日夏普、月索提諾、回撤、波動全面改善。最後採用 A,理由有兩個:它改動最小(在原本三個因子旁邊多加一個排名,程式碼只多三行),而且在贏過 0050 風險指標的四個版本裡年化報酬最高。D 和 E 的「連續三年配息」濾網把回撤再壓低一點,但多犧牲約 2 個百分點的年化,取捨後沒有採用。

「低波動的股票長期反而不輸高波動股票」這件事,學術上叫低波動異常:Baker、Bradley 與 Wurgler (2011) 整理了美股數十年的證據,發現低波動組合的風險調整後報酬長期優於高波動組合。我們在台股單獨測過這個因子,結論類似:純低波動輸大盤,但把它當「風險調整」的配料加進多因子組合就很有用,完整實驗在低波動策略的台股實測

龍蝦 OpenClaw 台股高股息選股風險指標長條圖:四因子日夏普 1.30、月索提諾 2.06、年化波動 14.4%,三項都優於 0050 含息

四因子版的年化報酬是 18.6%,低於 0050 含息的 25.1%;換到的是日夏普 1.30、月索提諾 2.06、最大回撤 -27.3%、年化波動 14.4%,四項都優於 0050。完整互動式回測報告(月報酬熱力圖、權益曲線、年度績效都在裡面)可以在這裡操作:

下面是這個策略的核心程式碼。它是龍蝦產出、由 finlab 實跑的版本,一行一個動作,非工程背景也能逐步看懂:

顯示程式碼
import finlab
from finlab import data
from finlab.backtest import sim
 
# 首次取資料時 finlab 會自動引導登入
finlab.login()
 
# 1) 載入資料:收盤價、成交股數、殖利率、ROE
close = data.get("price:收盤價")
volume = data.get("price:成交股數")
dividend_yield = data.get("price_earning_ratio:殖利率(%)").reindex(close.index, method="ffill")
roe = data.get("fundamental_features:ROE稅後").index_str_to_date()
roe = roe.reindex(close.index, method="ffill")
 
# 2) 流動性過濾 + 殖利率門檻(殖利率 > 3% 才納入候選)
amount = (close * volume).rolling(20).mean()
candidates = (amount > 10_000_000) & close.notna() & (dividend_yield > 3)
 
# 3) 四個因子各自在候選池內做百分位排名(0~1,越高越好)
#    低波動用 120 個交易日的日報酬標準差,波動越低排名越前
volatility = close.pct_change().rolling(120).std()
rank_yield = dividend_yield.where(candidates).rank(axis=1, pct=True)
rank_quality = roe.where(candidates).rank(axis=1, pct=True)
rank_momentum = close.pct_change(120).where(candidates).rank(axis=1, pct=True)
rank_low_vol = volatility.where(candidates).rank(axis=1, pct=True, ascending=False)
score = rank_yield + rank_quality + rank_momentum + rank_low_vol
 
# 4) 取總分前 15 名,依分數加權,每月再平衡
top15 = score.rank(axis=1, ascending=False) <= 15
weight = score[top15].fillna(0)
weight = weight.div(weight.sum(axis=1), axis=0)
 
report = sim(weight, resample="M", name="高股息品質動能低波動")
report.display()

低波動因子的效果,在回撤圖上最一目了然:三因子版最深跌 -34.6%、0050 含息最深跌 -34.0%,四因子版控制在 -27.3%,而且 2022 年空頭那段(圖中最深的谷)明顯比另外兩條淺。

龍蝦 OpenClaw 台股高股息選股回撤曲線:四因子含低波動最大回撤 -27.3%,比三因子 -34.6% 與 0050 含息 -34.0% 都淺

回測方法與限制

這些數字是怎麼算出來的,逐項交代清楚:

項目 本文設定
回測區間 2018-01 到 2026-07,資料快照日 2026-07-09
交易成本 finlab sim() 台股預設值:手續費 0.1425%(未打折)、賣出證交稅 0.3%,已內扣
滑價 未另行假設;實際衝擊取決於資金規模與個股成交量,本文未估算策略容量
股票池 全上市櫃,finlab 資料含已下市股票,無生存者偏誤;未刻意排除金融股、KY 股或 ETF
流動性過濾 近 20 日平均成交金額大於 1,000 萬
因子對齊 季財報(ROE)用 index_str_to_date 對齊公布時點,再向後填值到日頻;殖利率向後填值;動能與波動率只用已實現的收盤價報酬
因子排名口徑 四個因子都在「流動性過濾+殖利率 > 3%」的候選池內做百分位排名,與文末可下載的 strategy.py 逐行一致
權重 分數加權後正規化(總分越高、權重越大),每月再平衡;naive 基準為等權
周轉率 每月再平衡會換股,高周轉的成本已反映在績效中
樣本內外 全段樣本內(in-sample),未做樣本外測試;持股數敏感度是穩健性參考,不是樣本外證據
0050 基準 etl:adj_close 還原價含息買進持有,純指數算術、不含交易成本;基準不扣成本而策略扣,比較口徑對策略偏保守

持股數敏感度:結論對「挑幾檔」不敏感

只挑 15 檔,會不會剛好是運氣?我們把持股數從前 15、前 20 測到前 30,年化報酬都落在 18% 到 20% 區間,最大回撤都在 -27% 到 -29% 之間,年化波動都在 14% 上下,沒有因為換個數字就翻盤。這說明風險輪廓的改善來自「加了低波動這道條件」這個框架,而不是剛好挑中 15 這個數字。

龍蝦 OpenClaw 台股四因子選股持股數敏感度:前 15、前 20、前 30 檔年化報酬都在 18% 到 20% 之間

持股數 年化報酬 最大回撤 日夏普 月索提諾 年化波動
前 15(本文採用) 18.6% -27.3% 1.30 2.06 14.4%
前 20 19.1% -28.3% 1.35 2.03 14.2%
前 30 19.5% -28.3% 1.40 1.84 13.9%

三組數字很接近,差異在小數點層級;要挑毛病的話,前 30 的月索提諾 1.84 低於 0050 的 1.92,是三組中唯一輸掉這項的設定,其餘指標三組都維持與前 15 相同的相對優劣。敏感度表的正確用法,是確認「結論對參數不敏感」,而回頭挑最漂亮的那一格等於用同一段歷史既調參又驗證,Bailey、Borwein、López de Prado 與 Zhu (2014) 對這種做法的結論很明確:回測過擬合會讓樣本外績效系統性低於回測值。本文一開始就把前 15 定為主設定,再把另兩組列出來佐證,順序不能反過來。

把 finlab 裝進龍蝦:一句話完成設定

要讓龍蝦能抓台股資料、跑回測,需要先幫它裝上 finlab 的能力。finlab skill 是一份 SKILL.md,同一份能裝進 Claude Code、Codex CLI、Cursor、Pi、Hermes、OpenClaw(龍蝦)等支援 Agent Skills 的工具,裝一次到處能用。安裝指令(所有工具通用):

npx skills add https://github.com/koreal6803/finlab-ai --skill finlab

如果你完全不想安裝任何東西,也有零設定的瀏覽器版:直接打開 FinLab Studio,輸入選股條件就能跑回測。想用 AI app 路徑,可以用 Codex app 或 Claude cowork。設定好之後,把下面這句任務貼給龍蝦,它會依流程完成:

免費試用

用 AI 開始 FinLab

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

告訴你的AI:

幫我設定 FinLab,做高股息加品質動能加低波動的台股選股回測,請讀:https://finlab.finance/setup?relatedUrl=/blog/openclaw-lobster-finlab-stock-screening

首次取資料時 finlab 會自動引導你登入,照套件指示操作即可,不需要在程式碼裡填任何金鑰。設定完成後,前面那段招牌提示詞就能複製貼上開跑。想看更多現成的台股選股提示詞與它們的真實回測表現,可以參考 AI 選股提示詞與真實回測;想了解 AI agent 怎麼一步步把一句話變成可回測的策略,AI Agent 量化交易實戰有完整三段對話示範。

進階用法:請龍蝦每週把選股清單傳到 Telegram

龍蝦的另一個強項是「自動化通知」。因為它本來就以通訊軟體當介面,你可以請它把每週的最新選股清單,整理成一段話傳到你的 Telegram,省去每週手動重跑的功夫:

每週把最新選股清單整理成一段話,傳到我的 Telegram。
內容包含日期、15 檔股票代號與名稱,以及一句話提醒這是回測規則的機械輸出、
不是投資建議。

這類自動化要注意:清單是「回測規則在當下的機械輸出」,每月再平衡都會換掉一部分持股,它是研究與追蹤用的參考,不是叫你照單全收。真正要下單前,部位控管、實單滑價、流動性與風控,都還是你自己要把關的事。

適合誰、不適合誰

適合: 完全不會寫程式、但想認真做台股選股的新手;想以「領股息+避開地雷」為核心邏輯,且在意淨值路徑平不平穩的人(本文推薦版年化波動 14.4%,比 0050 的 21.0% 低了約三分之一);喜歡用聊天視窗操作、不想碰終端機的人;想把選股清單自動化通知到通訊軟體的人。

不適合: 想要「贏過大盤絕對報酬」的人,因為本文策略年化 18.6% 仍輸 0050 含息的 25.1%;完全不在意波動、只求長期報酬最大化的人(那直接持有 0050 更省事);想要全自動下單、把研究結果直接接券商 API 的人(那需要額外的下單與風控層,本文不涵蓋)。

和一般看盤軟體相比,龍蝦+finlab 的差異在於它把「資料、因子、回測、成本」整套打通,而且可以用對話迭代、結果可下載驗證。如果你想比較市面上不同的台股回測工具,台股回測工具怎麼選有六種主流工具的逐項對照,與 XQ 的單獨比較另見比較頁

常見問題

龍蝦 OpenClaw 是什麼?跟一般 AI 聊天機器人有什麼不同?

龍蝦(OpenClaw)是開源的自主 AI agent,用聊天/通訊軟體當操作介面。和一般聊天機器人最大的差別是:它會「動手執行」,包括規劃步驟、跑程式、抓資料、回傳結果,而不只是回答你問的那一句。配上 finlab 後,它能真的跑台股回測,數字來自回測引擎而非語言生成。

「只挑殖利率最高的股票」真的會賠錢嗎?

在本文設定、2018 到 2026 這段期間,只挑全市場殖利率最高的 15 檔、每月再平衡,年化報酬是 -4.4%、最大回撤 -57.4%。原因是殖利率=股息 ÷ 股價,股價先跌會讓殖利率虛高,排行榜前幾名常是基本面正在惡化的公司。加上 ROE 與 120 日動能後同期年化翻成 21.7%;再加上低波動因子後年化 18.6%,但最大回撤縮到 -27.3%、年化波動降到 14.4%。

低波動因子是什麼?為什麼加了它,回撤反而比 0050 淺?

本文的低波動因子=過去 120 個交易日的日報酬標準差,排名時波動越低分數越高,效果是把「殖利率高但股價暴上暴下」的標的往後排。學術上這叫低波動異常(Baker、Bradley & Wurgler 2011):低波動股票的風險調整後報酬長期不輸高波動股票。在本文回測中,這一個條件把最大回撤從 -34.6% 縮到 -27.3%、年化波動從 19.5% 降到 14.4%,日夏普與月索提諾也雙雙超過 0050。

年化 18.6% 還是輸 0050 的 25.1%,那這個策略贏在哪?

輸的是報酬:年化 18.6% 對 25.1%,總報酬 +323% 對 +573%。贏的是風險:日夏普 1.30 對 1.22、月索提諾 2.06 對 1.92、最大回撤 -27.3% 對 -34.0%、年化波動 14.4% 對 21.0%。0050 的高報酬要用超過三成的帳面回撤去換,抱不住就會在低點出場;這個組合給的是較平穩的淨值路徑,適合把「睡得著」看得跟報酬一樣重的人。

我完全不會寫 Python,也能用龍蝦跑這個回測嗎?

可以。龍蝦的招牌用法就是讓你用聊天視窗講白話,程式由 AI 產生、資料與回測由 finlab 處理。你只要把本文的招牌提示詞貼進去即可。看得懂基本程式對你有利,因為你能檢查 AI 有沒有用到未來資料、成本有沒有扣,但不是必要條件。想補底子可讀 Python 量化交易教學

殖利率、ROE、動能、低波動這四個因子是隨便挑的嗎?

不是。四個都有實證金融的研究支撐:獲利能力(Novy-Marx 2013)、價格動能(Jegadeesh & Titman 1993)、「高股息需搭品質」(Asness、Frazzini & Pedersen 2019),以及低波動異常(Baker、Bradley & Wurgler 2011)。本文用 ROE 代表品質、120 日報酬代表動能、120 日報酬標準差代表波動,把純高股息容易踩的價值陷阱與暴漲暴跌股一起濾掉。

這個策略要多少資金才能跑?

學習與回測完全免費,不需要投入資金。實際執行面,策略持有 15 檔依分數加權,台股以張為單位(零股交易亦可),數十萬以上比較能貼近配置;策略持股可能偏中小型股,資金規模大到單筆買賣會影響股價時(流動性門檻 1,000 萬日均成交金額下),回測與實單的差距會擴大。

選股清單可以照抄嗎?

不建議。清單是回測規則在快照日的機械輸出,每月再平衡都會換掉一部分持股,等你讀到本文時持股可能已經不同。正確用法是跑一次文末的 strategy.py(或請龍蝦重跑)取得當下清單,而不是抄某個時間點的快照。

這個策略未來還會有效嗎?

沒有人能保證。本文是全段樣本內回測,這段期間的優勢可能因市場結構改變、因子擁擠而衰減。我們能做的是每季用新資料重跑、數據惡化就如實更新。讀者自己驗證最新數據最快的方法,就是跑一次重現腳本,幾分鐘就有答案。

下載與重現

  • strategy.py:高股息+品質+動能+低波動四因子完整原始碼,可直接執行取得最新選股清單
  • data.csv:naive、三因子、四因子與 0050 含息四條每日淨值曲線
  • metrics.json:全部指標的機器可讀快照(含五個迭代設計的完整結果)
  • 互動式回測報告:高股息品質動能低波動策略

想看更多 AI agent 怎麼用對話做量化研究與選股,可延伸閱讀 AI 量化研究怎麼做量化交易完整指南;要把 finlab skill 裝進你的 AI 工具,從 AI skill 安裝頁 開始最快。


投資警語:本文僅供教學參考,不構成投資建議。文中全部回測數據(四因子年化 18.6%、最大回撤 -27.3%,三因子年化 21.7%、回撤 -34.6%,以及 naive 基準年化 -4.4%、回撤 -57.4% 等)為 2018-01 至 2026-07 的歷史模擬,已含 finlab 預設交易成本,但未含滑價與容量限制;過去績效不代表未來表現。本文推薦策略最大回撤 -27.3%,代表 100 萬可能一度縮水至約 73 萬,naive 高股息做法更深達 -57.4%;請依個人風險承受度審慎評估,僅使用虧損不影響生活的閒置資金。

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

FinLab AI

想建立自己的策略?

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

免費開始

更多價值與基本面研究

查看全部