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

現金股利調高選股:加進月營收動能,
7 年年化 59.9%、夏普 1.83

現金股利調高的股票值得買嗎?單獨買進董事會調高現金股利的公司,2019 年起日夏普 0.92,輸同期 0050 的 1.29;把「近 60 個交易日調高股利」當成月營收動能選股的優先條件,年化 59.9%、日夏普 1.83,原版 54.3%、1.52,回撤 -35.5% 縮到 -27.8%,附程式碼與驗證。

免安裝,用 AI 重跑這篇的策略

在瀏覽器開啟 FinLab Studio,AI 依本文的條件重跑回測,接著可以改條件再測。

在 Studio 重跑
股利調高優先 CAGR 59.9% Sharpe 1.83

現金股利調高選股回測:月營收動能加上股利調高優先、原版月營收動能與 0050 含息 2019-2026 累積淨值,年化分別為 59.9%、54.3%、28.5%

依本文重跑

執行這個策略

複製提示詞,讓 AI 依照上方證據的資料、條件與風險檢查重跑一次。

告訴你的AI:

幫我設定 FinLab,重跑月營收動能加上現金股利調高優先的策略,請讀:https://finlab.finance/setup?relatedUrl=/blog/cash-dividend-increase-stock-selection

免安裝,開啟 FinLab Studio

董事會決議的每股現金股利比去年同期多 10% 以上,之後 60 個交易日內,這家公司在月營收動能選股裡優先入選;其他規則跟站上公開的原版完全相同。 2019 年 2 月到 2026 年 10 月回測,年化報酬 59.9%、日夏普 1.83、最大回撤 -27.8%;原版月營收動能是 54.3%、1.52、-35.5%,同期 0050 含息是 28.5%、1.30、-34.0%。

現金股利調高本身不是一個好用的買進訊號。同一段期間,把每一家董事會調高現金股利 10% 以上的公司都買進、持有 60 個交易日,日夏普只有 0.92,輸同期 0050 的 1.29。調高股利有用的地方,是在已經有營收動能、股價趨勢向上的候選股裡,幫忙決定先買哪幾檔。這是我們這一輪除權息與股利研究 14 個事先寫定的設計裡,唯一三項驗證都過、而且明顯比原版好的一個;其他 13 個的結果整理在除權息全攻略。

關鍵數字:本文策略、原版與 0050

2019-02-11 至 2026-10-30 年化報酬 日夏普 月索提諾 最大回撤 年化波動 最差單一年
現金股利調高優先(本文) 59.9% 1.83 4.11 -27.8% 28.9% -10.4%(2022)
原版月營收動能 54.3% 1.52 2.78 -35.5% 33.1% -5.6%(2019)
0050 含息買進持有 28.5% 1.30 2.44 -34.0% 22.0% -21.4%(2022)

本文策略在年化報酬、日夏普、月索提諾、最大回撤與最差單一年都勝過 0050 含息,年化波動則比 0050 高。7 年 8 個月淨值成長為約 37 倍,原版約 28 倍,0050 含息約 6.9 倍。所有數字都用 finlab 2.2.24、資料截至 2026-10-30,在 2026-10-31 實際跑出,手續費 0.1425% 與證交稅 0.3% 用 sim() 預設值扣除。

現金股利調高代表什麼

台股公司每年由董事會決議(或擬議)要發多少股利,季配息、半年配息的公司每一期各決議一次。決議公告寫在公開資訊觀測站,FinLab 整理成 board_dividend_announcement,每一期一列,包含董事會決議日、股東會日期、每股現金股利(盈餘分配加上公積發放)、本期淨利與可分配盈餘。這份資料的董事會決議日從 2019 年開始收錄,更早的年度只有股東會日期,所以本文從 2019 年起算。

「調高」在本文的定義是:這一期的每股現金股利,比去年同一期(年度對年度、上半年對上半年、同一季對同一季)多 10% 以上。2019 年以來符合這個條件的董事會決議共 4,675 筆。2019 年以來的年度股利,有 85% 在 2、3 月的董事會決議(3 月就占 72%),季配息公司全年都有,所以這個條件在每年 3 到 7 月最常出現。

學術研究對股利變動的看法有兩派。Michaely, Thaler & Womack (1995) 追蹤美國公司首次配息與停發股利,宣布之後一年內股價仍朝同一方向漂移,代表市場對股利消息的反應不夠完整。Benartzi, Michaely & Thaler (1997) 則發現調高股利的公司,盈餘成長主要發生在調高的當年與前一年,之後幾年沒有比較好:股利變動比較像在確認過去的獲利,不太能預測未來。

這兩件事放在一起,比較能解釋本文的結果。很多台股公司在通過年度財報的同一次董事會決議股利,調高股利多半代表剛過去的一年賺得比較多;Bernard & Thomas (1989) 描述的盈餘公告後漂移也是同一類現象:好消息公布後,股價沒有一次反映完。但如果只看股利,買到的很多是獲利已經見頂、營收開始轉弱的公司。月營收動能的條件剛好補上這一塊:它要求近三個月營收高於近十二個月,股價也站在均線之上。本文沒有另外驗證這個解釋,上面是對結果的推論。

策略規則:沿用原版,只加一條優先順序

基底策略是站上的月營收動能選股,參數在 2026 年初就公開,這次完全不動。原版從 2015 年起算(重跑到 2026-10-30 年化 45.9%、日夏普 1.42);本文受限於董事會決議日的資料起點,從 2019 年起算,所以本文裡原版與 0050 的數字跟那篇不同。

  1. 月營收動能:近三個月平均營收高於近十二個月平均營收。月營收用公布後可取得的日期。
  2. 股價趨勢:收盤價同時站上 20、60、120 日均線。
  3. 現金股利調高優先:董事會決議日起 60 個交易日內,每股現金股利比去年同期多 10% 以上的候選股排在最前面。決議日是假日的話,算前一個交易日;決議日當天收盤後才算知道,sim() 在隔天收盤成交。
  4. 選股與換股:先在調高股利的候選股裡依五日平均漲跌幅取前幾名,不足 10 檔再用其他候選股依五日平均漲跌幅補滿,10 檔等權持有。每月營收公布後(月初第 11 天)換股,單檔跌 10% 停損。

下面是完整程式碼,邏輯跟文末下載的 strategy.py 相同(下載檔多了註解與 print):

顯示程式碼
import numpy as np
import pandas as pd
from finlab import data
from finlab.backtest import sim
 
close = data.get("price:收盤價")
rev = data.get("monthly_revenue:當月營收")
board = pd.DataFrame(data.get("board_dividend_announcement"))
 
# 月營收動能與股價趨勢(原版條件)
rev_up = rev.average(3) > rev.average(12)
trend = (
    (close > close.average(20))
    & (close > close.average(60))
    & (close > close.average(120))
)
 
# 每股現金股利,跟去年同一期(年度、上下半年或同一季)比
period = board["股利所屬年(季)度"].astype(str)
board["year"] = period.str.extract(r"^(\d+)年")[0].astype(float)
board["part"] = period.str.replace(r"^\d+年", "", regex=True)
board["cash"] = (
    board["盈餘分配之現金股利(元/股)"].fillna(0)
    + board["法定盈餘公積發放之現金(元/股)"].fillna(0)
    + board["資本公積發放之現金(元/股)"].fillna(0)
)
board = board.dropna(subset=["year"]).sort_values("key_date")
board = board.drop_duplicates(["stock_id", "股利所屬年(季)度"], keep="last")
last_year = board.set_index(["stock_id", "year", "part"])["cash"]
board["last_year_cash"] = last_year.reindex(
    list(zip(board["stock_id"], board["year"] - 1, board["part"]))
).to_numpy()
decided = board["董事會決議(擬議)股利分派日"]
raised = board[(decided >= "2019-01-01") & (board["last_year_cash"] > 0)
               & (board["cash"] > board["last_year_cash"] * 1.1)]
 
# 決議日起 60 個交易日內算「近期調高股利」
recent = np.zeros(close.shape, dtype=bool)
start = close.index.searchsorted(raised["董事會決議(擬議)股利分派日"], side="right") - 1
for stock_id, i in zip(raised["stock_id"], start):
    if stock_id in close.columns and i >= 0:
        recent[i:i + 60, close.columns.get_loc(stock_id)] = True
recent = pd.DataFrame(recent, index=close.index, columns=close.columns)
 
# 五日平均漲跌幅排名,近期調高股利的候選股排前面,取前 10 檔
momentum = (close / close.shift() - 1).rolling(5).mean()
score = momentum + recent * 1000
position = score[trend & rev_up].is_largest(10).loc["2019-01-01":]
 
report = sim(position, resample="M", resample_offset="11D",
             stop_loss=0.1, upload=False)

recent * 1000 的作用是讓調高股利的候選股一定排在其他股票前面;五日平均漲跌幅遠小於 1000,加上去之後兩群不會交錯,同一群裡仍照五日動能排。計算「去年同期」時,要用「年度、上半年、第 1 季」這種期別對齊,季配息公司才不會拿第 1 季去比去年全年。

回測結果:夏普提高、回撤變淺

加上股利調高優先之後,年化報酬從 54.3% 提高到 59.9%,日夏普從 1.52 提高到 1.83,月索提諾從 2.78 提高到 4.11,年化波動從 33.1% 降到 28.9%。最深的一段回撤發生在 2021-04-09 到 2021-05-17,跌了 27.8%,2021-12-06 回到前高;原版同一段跌了 35.5%,到 2023-03-03 才回到前高。單月最差是 2021 年 5 月的 -19.5%,最好是 2026 年 4 月的 +43.2%。

改變的到底是哪些持股?把本文策略 930 筆交易依進場訊號日分成兩群:471 筆(51%)是近 60 個交易日調高股利的公司,平均每筆報酬 4.98%、勝率 57%;其餘 459 筆平均 3.69%、勝率 42%。原版 929 筆交易裡,剛好買到近期調高股利公司的只有 75 筆,平均每筆 5.54%。也就是說,原版本來就偶爾會選到這類股票、而且表現較好,本文策略把這群股票從 8% 的交易提高到一半。這是平均值的差異,本文沒有做顯著性檢定。

現金股利調高選股的 930 筆交易:近 60 日調高現金股利的 471 筆平均報酬 4.98%、勝率 57%,其他 459 筆平均 3.69%、勝率 42%

股利調高優先只在一年中的某幾個月發揮作用。3 月換股選進的股票有 93% 是近期調高股利的公司,4 到 6 月是 100%,7 月 88%;8 月到隔年 2 月只剩一到三成,這段時間本文策略幾乎就是原版。

每月換股選進的股票裡近期調高現金股利的占比:3 月 93%、4 到 6 月 100%、7 月 88%,8 月到隔年 2 月約 10% 到 32%

逐年看,8 個年度裡本文策略有 7 年贏 0050 含息(2019 年從 2 月 11 日起算,2026 年只算到 10 月 30 日),輸的是 2019 年:3.2% 對 30.1%。跟原版比則是 4 勝 4 敗:2019、2021、2023、2025 年本文較高,2020、2022、2024、2026 年原版較高,本文策略多賺最多的是 2021 年(68.7% 對 29.2%),原版多賺最多的是 2024 年(86.7% 對 63.4%)。日夏普的提高主要來自波動變小、回撤變淺,不是每一年都賺得比較多。

現金股利調高選股每年報酬:本文策略、原版月營收動能與 0050 含息 2019-2026 年報酬比較

現金股利調高選股、原版月營收動能與 0050 含息的回撤曲線,本文策略 2021 年最深回撤 -27.8%

三項穩健性驗證:鄰近參數、前後兩段、交易成本

三項檢查的「贏」是同一個意思:日夏普高於同一段期間的 0050 含息買進持有。0050 用 etl:adj_close 還原價純算術計算、不扣成本;兩邊的日夏普都用日報酬平均除以標準差、乘上 √252,不扣無風險利率。參數範圍與判定標準在看結果之前就寫好,之後沒有改。

檢查 標準 結果
鄰近參數 「近期」的交易日數(20、60、120)乘上持股檔數(8、10、12),9 組至少 7 組贏 9/9 組贏,過
前後兩段 2019-02-11 到 2022-12-21、2022-12-21 到 2026-10-30 兩段都贏 前段 1.42 對 0.77,後段 2.27 對 1.74,過
交易成本 原參數、sim() 預設手續費與證交稅 1.83 對 1.30,過;不扣成本時 2.07

現金股利調高選股鄰近參數 9 組日夏普熱圖:9 組都高於同期 0050 含息 1.30,原參數 1.83

9 組的日夏普介於 1.45 到 1.92。底策略本身就贏 0050,所以這三項只能說明組合版沒有變差;股利條件有沒有貢獻,要跟原版比。我們事先定的標準是原參數的日夏普要高於同期原版,結果 1.83 對 1.52。另外也把每一組跟持股檔數相同的原版比:9 組都比較高,提高幅度從 +0.02(「近期」20 日、持股 12 檔)到 +0.36(60 日、12 檔)。前後兩段也都比原版高:前段原版 1.15、本文 1.42,後段原版 1.89、本文 2.27。

加上股利調高優先之後 9 組日夏普的變化:9 組都比同持股數的原版高,提高 0.02 到 0.36

持股檔數\「近期」交易日數 20 60 120
8 檔 1.37 → 1.45 1.37 → 1.71 1.37 → 1.64
10 檔 1.52 → 1.67 1.52 → 1.83 1.52 → 1.69
12 檔 1.56 → 1.58 1.56 → 1.92 1.56 → 1.67

表內是日夏普「原版 → 加上股利調高優先」,粗體是本文參數。

現金股利調高選股前後兩段日夏普:前段 2019-2022 本文策略 1.42、原版 1.15、0050 含息 0.77;後段 2022-2026 分別為 2.27、1.89、1.74

2019 年以前沒有董事會決議日,我們改用除權息公告日做同樣的優先條件(年度股利的除權息公告比董事會決議晚,2019 年以來中位數 104 天),2010 到 2018 年日夏普 1.18,原版 1.16,幾乎沒有差別。公告日太晚,可能已經錯過股價反應最集中的時候;但這也表示本文的結果只有 2019 年以後約 7 年 8 個月的資料支撐,沒有更早的年份可以交叉確認。

同一批研究的其他股利訊號

這一輪我們事先寫定了 7 個除權息與股利訊號,每個都做單獨版與疊在月營收動能上的組合版,共 14 個設計:股利月溢酬、搶息前行情、填息快的公司、董事會調高股利、首次或恢復配息、股利成長股、配發率穩定的存股型。單獨版 7 個、63 組參數全部輸 0050;組合版裡,另外有三個在原參數比原版高 0.002 到 0.04,但鄰近 9 組只有 3 到 6 組比原版高,前後兩段也各有一段輸原版,所以沒有開策略頁。完整結果與每個訊號為什麼不成立,寫在除權息全攻略的七個訊號驗證段。

本文策略是 14 個設計裡挑出來的一個,就算每個設計都在看結果前寫定,同時測很多個也會提高碰巧過關的機率。要了解這類風險,可以看回測過度擬合的機率。

回測方法與限制

項目 本文做法
交易成本 sim() 預設手續費 0.1425%(買賣各一次)與證交稅 0.3%(賣出),未打折
滑價 未另外假設,以收盤價成交
股票池 finlab price:收盤價 裡有月營收的上市櫃股票,含已下市股票
流動性過濾 沒有,沿用原版
排除類別 未排除金融股、KY 股或全額交割股,沿用原版
前視偏差 月營收用公布可取得日;董事會股利決議以決議日為可取得日,sim() 在隔天收盤成交;去年同期的股利在決議當時已公布
資料限制 董事會決議日在 2023 年 11 月以前的列,79% 是 2023-12-01 一次寫入的回補資料,金額是最後確定的版本;股東會若修改董事會擬議的金額,本文看到的是修改後的數字,本文沒有統計這種情況有多少
權重 10 檔等權,沒有單檔上限,單檔跌 10% 停損
周轉率 930 筆交易,每年約 120 筆,平均持有約 26 個日曆天,勝率 50%
樣本內外 全段樣本內;基底參數沿用 2026 年初公開的原版,股利條件的門檻與期間在看結果前寫定

每月只持有 10 檔,單一股票對結果影響很大,實際能放多少資金取決於這些股票的成交量,本文沒有估算策略容量。前視偏差與周轉率的定義在名詞解釋頁。

適合誰、不適合誰

適合:已經在用月營收或動能選股、想多一個簡單排序條件的人;能接受每月換股、單月可能大跌的人(最差的一個月是 2021 年 5 月的 -19.5%);每年 3 到 7 月有時間追蹤董事會股利公告的人。

不適合:想找高殖利率存股名單的人,本文選的是營收與股價都強、剛調高股利的公司,殖利率不一定高;資金很大、需要分散到幾十檔的人;只想長期持有、不想每月操作的人。

常見問題

公司調高現金股利,股價會漲嗎?

單看平均不一定。2019 年以來,把每一家董事會調高現金股利 10% 以上的公司都買進、持有 60 個交易日,平均每筆報酬約 8%,但同時要承擔大量持股的波動,日夏普 0.92,輸給同期 0050 含息的 1.29(這段從 2019-02-13 起算)。調高股利在本文策略裡的作用,是在營收與股價都轉強的候選股中決定優先順序。

為什麼用「比去年同期多 10%」,不是只要比去年多?

10% 是事先寫定的門檻,用來排除每股股利只多幾分錢的情況。鄰近參數裡我們也測了「只要比去年多」與「多 20%」:單獨買進這些公司時三種門檻的日夏普在 0.80 到 1.05 之間,都輸 0050;組合版只測了 10% 這個門檻。

季配息的公司怎麼算?

每一季各自跟去年同一季比。例如 2026 年第 1 季的股利跟 2025 年第 1 季比,不跟 2025 年全年比。半年配的公司也一樣,上半年比上半年、下半年比下半年。

為什麼只從 2019 年開始回測?

FinLab 的董事會股利決議日從 2019 年開始收錄,更早的年度只有股東會日期。我們用除權息公告日(比董事會決議晚,中位數 104 天)測過 2010 到 2018 年,股利條件幾乎沒有效果,所以本文只用有董事會決議日的期間,並把這個限制寫在結果裡。

怎麼查哪些公司剛調高股利?

公開資訊觀測站的「董事會決議(擬議)分配股利」公告會列出每股現金股利,FinLab 用 data.get("board_dividend_announcement") 可以一次取得全部公司的歷史。每年除權息的日期可以在除權息行事曆查。

本文策略跟高股息策略有什麼不同?

高股息策略選的是殖利率高的公司,例如站上的多因子高殖利率策略。本文不看殖利率高低,只看股利有沒有比去年多,而且要先通過營收動能與股價趨勢的條件,選出來的多半是成長中的公司。

這個策略可以直接照做嗎?

這是研究與回測結果,不構成投資建議。實際操作時要考慮滑價、成交量與資金規模,本文沒有估算容量;每月只持有 10 檔,單一股票的影響很大。想自己重跑或修改,可以下載文末的 strategy.py。

延伸閱讀

下載資源

檔案 內容
strategy.py 本文策略的完整程式碼
data.csv 本文策略、原版與 0050 含息的每日淨值
metrics.json 本文核心數字與三項驗證結果
report_strategy.html 本文策略的互動式回測報告
report_baseline.html 原版月營收動能的互動式回測報告

風險提示

本文所有策略與回測結果僅供教學與研究用途,不構成投資建議。過去績效不代表未來表現,本文策略最大回撤 -27.8%,回測只涵蓋 2019 年以後,單一年度也可能大幅落後大盤。投資一定有風險,請依自身風險承受能力審慎評估。

最後更新:2026-10|回測區間:2019-02 ~ 2026-10|作者:FinLab 量化研究團隊(經量化研究員審閱)

FinLab AI

想建立自己的策略?

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

免費開始

更多價值與基本面研究

查看全部