
執行這個策略
複製提示詞,讓 AI 依照上方證據的資料、條件與風險檢查重跑一次。
告訴你的AI:
幫我設定 FinLab,重跑美股除息捕捉回測,請讀:https://finlab.finance/setup?relatedUrl=/blog/dividend-capture-strategy-backtest
除息捕捉是在除息日前買進股票、除息後賣出。我們在美股普通股上測 2016 年 7 月到 2026 年 11 月,9 組參數、31,843 次除息日。這些日子股價的跌幅小於股利,中位數約為股利的 76% 到 93%,所以單次股利中等的配息,買一天平均賺 0.17% 到 0.18%。這比來回 0.2% 的成本還小。除息前 3 日買進、單次股利至少 1% 的原設定,零成本年化 8.6%、夏普 0.75,QQQ 是 20.0% 和 0.93;收每邊 0.1% 成本後年化剩 2.7%,還沒算股利的稅。
這個想法很簡單,算式卻容易看錯。股票配息給你,除息日股價大約跌同樣的金額,等於把股價換成現金。除息捕捉只有在股價跌得比股利少時才賺錢。這個樣本平均來說確實如此,本文要回答的是這個價差大到能不能留得住。
除息捕捉策略關鍵數字
| 除息前買進 | 殖利率下限 | 零成本夏普 | 零成本年化 | 每邊 0.1% 夏普 | 每邊 0.1% 年化 | 交易數 | 勝率 | 平均每筆 |
|---|---|---|---|---|---|---|---|---|
| 1 日 | 0.5% | 1.11 | 10.7% | -0.51 | -5.1% | 17,527 | 54.6% | 0.16% |
| 1 日 | 1% | 0.66 | 3.6% | -0.33 | -2.0% | 5,849 | 53.8% | 0.14% |
| 1 日 | 2% | 0.08 | 0.1% | -0.44 | -0.9% | 1,097 | 53.5% | 0.03% |
| 3 日 | 0.5% | 0.80 | 12.8% | -0.04 | -2.1% | 17,505 | 54.5% | 0.24% |
| 3 日 | 1% | 0.75 | 8.6% | 0.29 | 2.7% | 5,830 | 55.0% | 0.37% |
| 3 日 | 2% | 0.33 | 1.3% | 0.08 | 0.2% | 1,089 | 53.1% | 0.25% |
| 5 日 | 0.5% | 0.78 | 14.0% | 0.18 | 1.7% | 17,023 | 55.2% | 0.37% |
| 5 日 | 1% | 0.76 | 11.9% | 0.43 | 6.0% | 5,644 | 56.5% | 0.61% |
| 5 日 | 2% | 0.54 | 3.7% | 0.40 | 2.7% | 1,032 | 57.1% | 0.78% |
同一段區間,含息 QQQ 夏普 0.93、年化 20.0%(3 組較晚開始的參數對應的區間是 0.91 到 0.92)。粗體是原設定。SPY 夏普 0.86,等權 S&P 500 的 RSP 是 0.72。平均每筆是每筆交易報酬的算術平均。
除息捕捉規則怎麼寫
- 哪些股利。 日均成交值至少 2,000 萬美元的美股普通股,每一筆現金股利,且在訊號日當天或之前已經宣告。沒有宣告日的配息事先無從規劃,略過不做。
- 何時買。 除息日前 1、3 或 5 個交易日的再前一天算訊號,隔天收盤成交,所以實際上是除息日前 1、3 或 5 個交易日買進。
- 何時賣。 除息日收盤,這時領息資格已經確定。
- 股利多大。 單次股利至少佔訊號日股價的 0.5%、1% 或 2%。
- 部位。 目前持股等權,單檔上限帳戶的 5%,其餘留現金。
價格有還原股利,持有者的報酬會包含配息。我們抽查 3,810 筆配息,有 3,806 筆的還原因子就落在除息日,交易在正確的那天領到股利。這項檢查很重要:還原如果早一天或晚一天,回測就可能算進根本沒領到的股利。
除息日股價會跌滿股利嗎?
| 單次配息占前一日收盤比例 | 事件數 | 除息日跌幅 ÷ 股利(中位數) | 平均單日報酬 | 平均減 QQQ | 打平的每邊成本 |
|---|---|---|---|---|---|
| 0.5% 以下 | 14,393 | 0.77 | +0.04% | -0.04% | 0.02% |
| 0.5%~1% | 11,622 | 0.76 | +0.17% | +0.06% | 0.08% |
| 1%~2% | 4,737 | 0.88 | +0.18% | +0.03% | 0.09% |
| 2% 以上 | 1,090 | 0.93 | +0.02% | -0.14% | 0.01% |
「平均單日報酬」是除息日前一天收盤買進、除息日收盤賣出,用還原價計算。打平的每邊成本是這個報酬除以二,包含當天的大盤報酬;旁邊一欄扣掉當天 QQQ 的報酬,標準更嚴。

每一組的股價跌幅都小於股利。中位數從最小配息的股利 77%,到最大配息的 93%。平均比值(極端值截在 -5 和 +5)從 0.47 到 0.95,最小的配息最低,因為股利很小時,一般的單日股價波動相對就很大。跌幅越接近股利,能捕捉的就越少,較大的配息正是如此:單日平均 +0.02%,還比當天 QQQ 少 0.14 個百分點。
這是很早就有的發現。Elton 與 Gruber(1970)發現除息日的股價跌幅小於股利,歸因於稅:投資人認為一元股利的價值低於一元資本利得。Frank 與 Jagannathan(1998)在股利與資本利得都不課稅的香港也看到同樣現象,指向市場微結構的原因。不論哪一種解釋,這個價差都是某種補償。

紅線是 0.2%,也就是每邊 0.1% 來回的成本,沒有一組過線。股利 0.5% 到 2% 的配息,單日平均 0.17% 和 0.18%,剛好在線下;扣掉當天 QQQ 的報酬後只剩 0.03% 到 0.06%。同一天的事件先取平均後,只有 0.5% 到 1% 那組的原始報酬穩定高於零(t = 4.26;1% 到 2% 那組 1.60)。相對 QQQ 沒有一組穩定高於零:0.5% 到 1% 的 t 值 1.56,1% 到 2% 是 0.02。
9 組參數:1 組贏 QQQ,而且只在扣成本前

零成本下 9 組裡只有 1 組贏 QQQ(這段區間 QQQ 為 0.91 到 0.93):除息前 1 日買進、殖利率下限 0.5%,夏普 1.11。這組十年做了 17,527 筆,一年約 1,700 筆,交易這麼多,來回 0.2% 的成本就把報酬吃光:年化從 10.7% 變成 -5.1%。其餘 8 組零成本夏普 0.08 到 0.80,殖利率下限 2% 的那幾組交易最少,在同一個提前天數裡分數也最低。
持有越久,交易就越像一般的多頭部位加上一筆股利,也會吃進大盤報酬。除息前 5 日買進的市場曝險較高,收每邊 0.1% 後表現較好(殖利率下限 1% 的組別 0.43),主要是相同持股時間下交易次數較少。這組仍然遠低於 QQQ 的 0.93。
原設定五項都沒過:零成本 0.75 對 0.93,每邊 0.1% 只剩 0.29;扣 BIL 後 0.57 對 0.83;前後兩段 0.70 和 0.86,QQQ 是 1.27 和 0.60;拿掉領先 QQQ 最多的 2022 年後 0.86 對 1.26。

除息日前後的路徑,每一組都是持平到略為下滑。除息日前後各 10 個交易日,單次股利 1% 以上的配息最後落後 QQQ 1.5 到 1.6 個百分點,沒有事前的上漲可以賺,也沒有除息後的反彈可以等。
在美國,稅負讓結果更差
回測沒有算稅,而這個交易的稅負很大。美國的股利要適用較低的合格股利稅率,必須在除息日前 60 天開始的 121 天內持有超過 60 天。持有幾天的除息捕捉一定不符合,股利要按一般所得課稅。非美國投資人的美股股息預設扣繳 30%,適用租稅協定才可能降低。
用兩組的平均配息來算。30% 的扣繳在 0.5% 到 1% 那組約佔部位的 0.22%,1% 到 2% 那組約 0.39%;扣成本與稅前的單日平均報酬只有 0.17% 和 0.18%。只要實際付稅,稅負就比全部的價差還大。文章開頭的淨值曲線是稅前的,和稅後的差距是回測看不到的部分。股利免稅的投資人(例如透過免稅帳戶)沒有這筆成本,但來回 0.2% 的成本還在。
和長期配息策略有什麼不同
長期持有配息股是另一種交易,賭的是配息公司本身;除息捕捉賭的是一天的定價價差,報酬來源幾乎不同。想看長期版本,可以參考美股知名選股公式回測的股利成長條件和道瓊狗股策略回測。
還有一個比較慢的相關效果。Hartzmark 與 Solomon(2013)記錄了配息月溢酬:在預期配息的月份,股票的異常報酬較高,除息後效果消退。本文沒有測整個月的溢酬。上面的路徑圖裡,只有最小的配息在除息前相對 QQQ 略為上升,約 0.1 個百分點。
台股的除權息討論在除權息全攻略,高股息 ETF 的總報酬比較在高股息 ETF 實測,兩篇的稅制和市場結構都和美股不同,數字不能直接對照。
程式碼
這段是原設定:除息前 3 日買進、單次股利至少 1%。用到 2026-11-06 的資料,它印出的日夏普是 0.75,FinLab 修訂資料時最後一位可能變動。完整的 research.py 另外跑其他 8 組參數、成本重跑和除息日研究。
顯示程式碼
import finlab
import numpy as np
import pandas as pd
from finlab import data
from finlab.backtest import sim
finlab.login()
data.set_market("us")
data.truncate_end = "2026-11-06"
LEAD_DAYS = 3
MIN_YIELD = 0.01
adj_close = data.get("us_price:adj_close")
raw_close = data.get("us_price:close")
volume = data.get("us_price:volume")
days = adj_close.index
# 美股普通股,含下市股票,一家公司留一個股別
profile = pd.DataFrame(data.get("us_company_profile")).astype({"stock_id": str}).drop_duplicates("stock_id")
keep = (
(profile["security_type"] == "common_stock")
& ~profile["is_etf"].fillna(False).astype(bool)
& ~profile["is_fund"].fillna(False).astype(bool)
& ~profile["is_adr"].fillna(False).astype(bool)
)
stocks = profile.loc[keep, ["stock_id", "company_name", "country"]].astype(str).sort_values("stock_id")
stocks = stocks.drop_duplicates("company_name")
stocks = stocks[stocks["stock_id"].isin(adj_close.columns)]
us_stocks = stocks.loc[stocks["country"].isin(["US", "nan"]), "stock_id"]
columns = sorted(stocks["stock_id"])
# 訊號日可交易:收盤高於 5 美元、日均成交值 2,000 萬美元、一年內沒有單日漲跌 50%
dollar_volume = (raw_close * volume).rolling(60, min_periods=20).mean()
daily_return = adj_close.pct_change(fill_method=None)
wild = (daily_return.abs() >= 0.5).astype(float).rolling(252, min_periods=1).max().shift(1).fillna(0) > 0
tradable = (raw_close > 5) & (dollar_volume > 20e6) & ~wild
tradable = pd.DataFrame(tradable).reindex(index=days, columns=columns).fillna(False).astype(bool).values
close = pd.DataFrame(raw_close).reindex(index=days, columns=columns).values
# 每筆現金股利的除息日與宣告日
actions = pd.DataFrame(data.get("us_corporate_actions")).astype({"symbol": str})
dividends = actions[(actions["dividend"] > 0) & actions["symbol"].isin(us_stocks)]
holding = np.zeros((len(days), len(columns)), dtype=bool)
column_of = {symbol: i for i, symbol in enumerate(columns)}
ex_rows = np.searchsorted(days.values, pd.DatetimeIndex(dividends["date"]).values)
for symbol, ex, dividend, declared in zip(
dividends["symbol"], ex_rows, dividends["dividend"], dividends["declaration_date"]
):
col = column_of.get(symbol)
signal = ex - LEAD_DAYS - 1 # 這天收盤算訊號,隔天收盤買進
if col is None or signal < 0 or ex >= len(days):
continue
if pd.isna(declared) or declared > days[signal] or not tradable[signal, col]:
continue # 股利必須在訊號日當天或之前已宣告
if dividend / close[signal, col] >= MIN_YIELD:
holding[signal:ex - 1, col] = True # 最後一個 True 在 ex - 2,所以在除息日收盤賣出
position = pd.DataFrame(holding, index=days, columns=columns).loc["2016-07-01":"2026-11-06"]
position = position.loc[:, position.any()]
report = sim(position, resample=None, position_limit=0.05, upload=False)
returns = report.creturn.pct_change().dropna()
print("日夏普:", round(returns.mean() / returns.std() * 252 ** 0.5, 2))不想自己寫也可以。照 AI 輔助安裝流程裝好 FinLab skill,或直接到 FinLab Studio 用白話請 AI 重跑,例如「除息捕捉只做 S&P 500 成分股,每邊收 0.05%」或「測試除息後持有一週」。
回測方法
| 項目 | 做法 |
|---|---|
| 回測區間 | 2016-07-01 至 2026-11-06。FinLab 美股價格與股利資料從 2016 年 1 月開始,前幾個月用來暖機流動性濾網 |
| 股票池 | 美股普通股,含下市股票,一家公司留一個股別,排除 ETF、基金、ADR,以及公司資料註明美國以外國家的公司 |
| 流動性 | 60 日平均(未還原收盤價 × 成交量)在訊號日高於 2,000 萬美元,收盤價高於 5 美元,過去一年沒有單日漲跌 50% 以上 |
| 訊號 | 股利必須在訊號日當天或之前已宣告,規則只用買進時已知的資訊(控制前視偏差)。來源沒有宣告日的配息不做,2016 到 2026 年約佔 16% |
| 成交 | 收盤算訊號,隔天收盤成交,除息日收盤賣出 |
| 權重 | 等權,單檔上限 5%,其餘留現金;原設定平均投入 32%。目標權重單邊週轉率一年 27.5 次 |
| 成本 | finlab sim() 美股預設 0,另跑每邊 0.1%。未另估滑價,未估容量 |
| 稅 | 未計,見上面的稅負段落 |
| 樣本 | 全段都是樣本內,前後兩段只檢查穩定度,沒有做樣本外驗證 |
這個結果能說明什麼
在這個測試裡,除息日股價平均跌得比股利少,所以除息捕捉過去有正的毛報酬。金額很小:單次股利 0.5% 到 2% 的配息,單日平均 0.17% 到 0.18%,這還沒扣大盤報酬、成本和稅;相對當天 QQQ,沒有一組穩定高於零。每邊 0.1% 下,9 組參數沒有一組贏 QQQ,報酬也遠低於持有 SPY 或 RSP。
這是美股高流動性個股在一段十年裡的結果。能用接近中價、成本極低成交的交易者(例如有券商回扣),比較接近零成本那一欄,而那一欄也有 8 組輸 QQQ。表格就是用來判斷你自己的成本能不能過關。
更多美股研究可以看美股公司行動事件回測(也涵蓋配息調升與首次配息)、Covered call ETF 比較、美股低波動股回測和美股量化交易策略比較。剛接觸規則化投資,可以先看量化交易入門。
常見問題
除息捕捉策略有用嗎?
扣成本前,平均來說有一點。這個樣本裡除息日股價跌幅小於股利,單次股利中等的配息,買一天約賺 0.17% 到 0.18%。收每邊 0.1% 後這個優勢就消失:原設定年化 2.7%、夏普 0.29。
除息日股價會跌多少?
這個樣本裡,中位數是股利的 76% 到 93%,依配息大小而定。配息越大越接近跌滿,最小的(低於股價 0.5%)中位數是 77%。
除息前一天買進能賺錢嗎?
零成本下,單次股利 0.5% 到 2% 的配息每筆約 0.17% 到 0.18%,只比當天 QQQ 多 0.03 到 0.06 個百分點。每邊 0.1% 下平均是虧錢的。除息前 1 日買進、殖利率下限 0.5% 的組別,零成本夏普 1.11,每邊 0.1% 下 -0.51。
除息捕捉比持有 QQQ 好嗎?
沒有。9 組零成本夏普 0.08 到 1.11,只有 1 組高於 QQQ 的 0.93。每邊 0.1% 下每一組都低於 QQQ 的 0.92,原設定年化 2.7%,QQQ 是 20.0%。
除息捕捉的稅怎麼算?
美國規定,持有幾天的股利不符合合格股利的持有期間,要按一般所得課稅。非美國投資人的美股股息預設扣繳 30%,適用租稅協定才可能降低。本文的測試沒有計入稅負。
在除息日前後持有久一點有幫助嗎?
除息前 5 日買進,零成本夏普 0.54 到 0.78,每邊 0.1% 下 0.18 到 0.43,主要因為相同持股時間下交易次數較少,所以扣成本後比較撐得住,但仍低於 QQQ。
可以自己重跑嗎?
可以。透過 AI 輔助安裝流程裝好 FinLab skill,下載下面的 research.py,執行 python research.py。
延伸閱讀
- 美股公司行動事件回測:六種事件訊號,同一套驗證。
- S&P 500 納入與剔除回測:指數變動事件的路徑與 18 組參數。
- 美股量化交易策略比較:站上美股研究的總整理。
下載資源
| 檔案 | 內容 |
|---|---|
| research.py | 完整研究:9 組參數、前後兩段、成本重跑與除息日量測 |
| data.csv | 除息捕捉原設定,加上 QQQ、SPY、RSP 的每日淨值 |
| metrics.json | 本文背後的統計,包含殖利率分組與 9 組參數 |
投資警語:本文僅供教學參考,不構成投資建議,也不推薦任何個股,亦非稅務建議。過去績效不代表未來表現,投資有風險。本文所有回測均為全段樣本內結果,前後兩段未經樣本外驗證。
最後更新:2026-11|回測區間:2016-07~2026-11|資料截至 2026-11-06,重跑日 2026-11-09|基準:QQQ 含息|作者:FinLab 量化研究團隊(經量化研究員審閱)
FinLab AI
想建立自己的策略?
用自然語言描述你的選股想法,AI 自動驗證、回測、給你答案
免費開始


