每季挑美股「庫藏股殖利率」最高的 30 檔等權持有(每檔買一樣多錢),2017-04-03 到 2026-11-10 年化 15.4%、日夏普 0.67,贏過它的股票池(成交額前 1,000 檔等權,11.0%、0.61),但輸 QQQ 含息(追蹤那斯達克 100 指數的 ETF,以美國大型科技股為主;19.3%、0.88)。12 組參數全部輸 QQQ,五項驗證一項都沒過。
買回最多的公司跌起來也比較重。從 2020 年 2 月的高點到 3 月的低點,這組股票跌了 50.0%,QQQ 從自己的高點跌 28.6%。它表現最好的是 2026 年,漲 35.0%、QQQ 只漲 10.2%;拿掉這一年,日夏普只剩 0.59。
本文提供研究結果,沒有推薦這些買賣規則。想自行重跑,可先 設定 FinLab 環境,再 下載研究程式(.py);其他檔案見 研究下載區。
美股的庫藏股和殖利率
庫藏股 是公司用自己的現金從市場買回自家股票,美國稱為 stock buyback 或 share repurchase。買回的股票註銷或留在公司,剩下的每一股代表的公司比例就變大。買回和發股利一樣是把現金還給股東,差別是只有賣股的人拿到現金,而且公司隨時可以停手,不像減發股利那樣被市場解讀成壞消息。
台股的庫藏股要先公告買回期間、數量與價格區間,庫藏股是什麼與公告後買進的台股實測 測的就是公告這個事件。美國公司通常只宣布一個總額度,實際買多少要看每季財報。美國公司每一季都會在現金流量表揭露買回股票花的錢,FinLab 的 us_cash_flow:common_stock_repurchased 以負數記錄這筆金額,common_stock_issuance 記錄發行新股(包含員工認股)收到的錢。兩個欄位可以算出兩種買回金額:
- 買回毛額: 近四季或近八季買回股票花掉的現金。
- 扣掉發行的淨額: 毛額減去同期發行新股收到的現金。只為了抵銷員工股票酬勞而買回的公司,毛額大、淨額小。
把金額除以公司市值,就是 庫藏股殖利率(buyback yield),讀法和現金殖利率一樣:5% 表示公司這段期間花了相當於市值 5% 的錢買回自家股票。
這個題目有兩篇代表性的研究。Ikenberry、Lakonishok 與 Vermaelen(1995) 發現宣布公開市場買回計畫的美國公司,之後四年比同類公司多賺約 12%,價值股更明顯。Boudoukh、Michaely、Richardson 與 Roberts(2007) 發現把買回算進去的發放殖利率,預測個股報酬的能力比只看現金殖利率好;扣掉發行的淨額,則更能預測整體市場的報酬。本文用的是實際花掉的現金,不是宣布計畫的消息,要回答一個實際的問題:過去十年,照庫藏股殖利率排名選股,能不能贏過 QQQ?
開跑前寫定的規則
在起始日與每季最後一個交易日,從成交額最大的 1,000 檔美股普通股中,挑庫藏股殖利率最高的 30 檔等權持有(每一檔買一樣多錢)。只算殖利率大於零的公司,超過 50% 的當成資料錯誤略過。參數網格與過關條件在算任何報酬以前就寫定。
| 變動的參數 | 測試的參數 |
|---|---|
| 買回期間 | 近 |
| 金額 | 毛額/ |
| 持股 |
20/30/50 |
共 12 組。「贏 QQQ」指日夏普高於同期 QQQ 含息。
回測結果
| 項目 | 庫藏股殖利率前 |
對照: |
QQQ |
|---|---|---|---|
| 結論 | ✗ 沒通過 | 對照 | 基準 |
| 年化報酬 | 15.4% | 11.0% | 19.3% |
| 日夏普 |
0.673 | 0.606 | 0.880 |
| 最大 |
-50.0% | -40.9% | -35.1% |
| 贏 |
12 組中 0 組 | — | — |
年化報酬是平均每年的成長率。日夏普衡量每承擔一分日常波動換到多少報酬:每日報酬平均除以標準差再乘以 252 的平方根,不扣無風險利率,定義參考 Sharpe(1994)。前半段到 2022-01-18,後半段從 2022-01-19 開始。
下面嵌入的 FinLab 互動報告是原參數。報告裡的對照線是不含息的標普 500,比本文用的 QQQ 含息容易贏,報告內的評等也是對這條對照線,不代表通過本文驗證;報告的夏普也用自己的算法,和表格略有不同。
鄰近參數
最接近的格子也比 QQQ 低 0.14:近八季、持有 50 檔,日夏普 0.74。用近八季時,持股越多越好(0.69 到 0.74);用近四季時反而變差(毛額 0.69 到 0.64)。扣不扣發行沒有一致的影響,毛額和淨額最多差 0.053,有高有低。
驗證項目
BIL 是 1–3 個月美國國庫券 ETF,扣掉它的報酬,看的是比放現金多賺多少。
| 檢查 | 庫藏股殖利率前 |
QQQ |
|---|---|---|
| 七成 |
12 組中 0 組 ✗ | — |
| 前後半 |
0.654/0.696 ✗ | 1.087/0.677 |
| 每邊 |
0.659 ✗ | 0.880 |
| 扣掉 |
0.582 ✗ | 0.776 |
| 拿掉 |
0.590 ✗ | 0.904 |
只有後半段領先 QQQ,差 0.019,而且這段包含 2026 年。FinLab 在美股的預設成本是零手續費;每邊 0.1% 是另外加的價差與滑價假設。每季換股約換掉 38% 的權重,加上成本後年化少 0.4 個百分點。
這組股票買了什麼
排名挑到的是買回力道極大的公司。持股的庫藏股殖利率中位數是 15.8%;股票池裡平均約 72% 的公司近四季有買回,這些公司的中位數只有 1.8%。股價下跌時,同樣金額的買回會讓殖利率變高,所以排名也可能挑到剛跌過的公司。
非必需消費(零售、汽車、旅遊、建商)與金融合計占持有檔次的 45%,科技只有 12.8%。產業分類來自目前的公司資料,後來換過產業的公司會顯示現在的分類。QQQ 追蹤那斯達克 100 指數,集中在大型科技股,傾向正好相反。
逐年來看,這組股票 10 個年度有 7 個贏同池等權(2017、2026 年不滿一年)。對 QQQ 只有 2017、2022、2026 年領先,科技股領漲的年份落後很多:2019 年 21.6% 對 39.0%、2020 年 20.6% 對 48.6%、2023 年 31.2% 對 54.9%、2024 年 4.8% 對 25.6%。
為什麼庫藏股殖利率高還是輸 QQQ
庫藏股殖利率這個訊號有用:在同一個股票池裡,它讓年化報酬多了約 4 個百分點,日夏普從 0.61 提高到 0.67,和上面兩篇研究的方向一致。問題在起點。成交額前 1,000 檔美股等權持有,這段期間年化 11.0%,比 QQQ 少 8 個百分點;在這個池子裡挑得再好,離 QQQ 還有一大段距離。
風險也集中在 2020 年的崩跌,這組股票跌掉一半。它 50.0% 的最大回撤,比股票池的 40.9%、QQQ 的 35.1% 都深。
用實際花掉的現金排名,和 Ikenberry 等人研究的宣布效果不同,他們從公司宣布買回計畫那天起算報酬。本文沒有測宣布事件;美股公司行動事件回測 測了配息調升、拆股等其他公司事件。
回測方法
- 股票池: 美股普通股,包含已下市公司,每家公司只留一檔,不含 ETF、基金與 ADR。換股日收盤價高於 5 美元、近 60 日平均成交額超過 500 萬美元、近一年沒有單日漲跌 50% 以上,再取成交額前 1,000 檔。金融股保留,這是和其他規則一起事先寫定的選擇。
- 前視偏差: 買回金額從季報申報日起才使用,FinLab 的美股財報已依申報日對齊。市值用 FinLab 的
etl:us_market_value:最近一次季報的股數乘以收盤價,並扣除之後的拆股。換股日的下一個交易日收盤成交。 - 生存者偏誤: 已下市公司保留到最後一個價格。產業分類用目前的公司資料,是今天的快照。
- 權重與周轉: 30 檔等權,每季換股,每次約換掉 38% 的權重,整段共 1,170 筆交易。
- 成本與滑價: 預設零手續費,另跑每邊 0.1%。沒有估算資金容量與市場衝擊。
- 資料: 從 2017-04-03(八季買回資料最早湊齊的日子)算到 2026-11-10,2026-11-12 用 finlab 2.3.8 跑完。公司資料每天更新,之後重跑,數字可能略有不同。
- 限制: 全段樣本內,沒有樣本外期間。Bailey 等人(2017) 說明單次回測為什麼容易高估,本文沒有估算過度擬合機率。
用 AI 代理重跑
照 FinLab 安裝流程 幫 Claude Code、Codex 或 Gemini CLI 裝好 FinLab 技能,AI 代理使用說明 介紹代理能做的事。直接安裝的指令是:
顯示程式碼
npx skills add koreal6803/finlab-ai --skill finlab -g -yFinLab Studio 在瀏覽器也能做同樣的研究。第一句可以這樣問:「下載庫藏股研究程式,跑原參數,列出最近一次換股持有的 30 檔和它們的庫藏股殖利率。」
把 研究程式 存成 research.py 放在同一個資料夾;它同時包含逢低買進與 Altman Z 的測試。下面這段用它的股票池函式重建原參數,登入由 FinLab 自動引導。
顯示程式碼
import finlab
from finlab import data
from research import use, liquidity, most_traded, on_rebalance, rebalance_days, backtest
finlab.login()
use("us")
# 近四季買回股票花掉的現金,除以市值
repurchased = -data.get("us_cash_flow:common_stock_repurchased")
last_year = repurchased.rolling(4, min_periods=4).sum()
buyback_yield = on_rebalance(last_year / data.get("etl:us_market_value"))
# 通過價格與流動性門檻、成交額前 1,000 檔
eligible, _ = liquidity()
pool = most_traded(eligible, 1000)
# 持有殖利率最高的 30 檔,等權、每季換股
candidates = buyback_yield.where(pool & (buyback_yield > 0) & (buyback_yield <= 0.5))
position = candidates.rank(axis=1, ascending=False, method="first") <= 30
report = backtest(position, rebalance_days())美股庫藏股常見問題
美股公司買回股票,對股東好嗎? 買回是把現金還給股東。這十年買回最多的公司,表現贏過成交額前 1,000 檔等權。單一筆買回好不好,要看買的價格;公司用高價買回,等於把價值轉給賣股的人。
美股公司買回股票,股價就會漲嗎? 股數變少會讓每股盈餘變高,但股價不會自動上漲:這次測試中買回最多的公司,在 2020 年崩跌時跌了 50.0%。台股的情況可以看 庫藏股是什麼 一文。
毛額和淨額差在哪? 淨額扣掉發行的新股,大多是員工認股。這次 6 格中有 4 格淨額較低(其中一格差不到 0.001)、2 格較高,最多差 0.053,沒有一致的方向。
台股的庫藏股策略比較有效嗎? 台股研究測的是公告事件,庫藏股公告後買進 十九年年化 25%,但近三年輸 0050;庫藏股實施家數抄底訊號 則把全市場實施庫藏股的家數當成大盤訊號。兩者和本文的美股殖利率排名是不同的機制。
為什麼不只用 S&P 500 成分股? 本文用成交額定義股票池,讓每一年都有同樣 1,000 檔可選。S&P 500 納入與剔除回測 測過成分股變動本身的效果。
還有哪些美股選股法測過? 美股選股法回測 測了神奇公式、葛拉漢數等方法,美股學術因子回測 測了十個經典因子。
想看已驗證與未通過的美股規則,可以讀 美股量化交易策略比較。同一批研究還有 Altman Z 分數濾網 與 QQQ 逢低買進;F-Score 美股回測 也是用財報挑股。回測方法 說明財報申報日與生存者偏誤。
研究下載
| 檔案 | 內容 |
|---|---|
| 開啟 |
瀏覽器直接開啟,不需安裝:原參數的每日淨值、每筆交易與逐年報酬 |
| 下載 |
規則、股票池、QQQ 與 BIL 的每日淨值,可用試算表開啟 |
| 下載 |
每組參數、每項檢查與產業比例,供 AI 或程式讀取 |
| 下載 |
給 AI 代理或會寫程式的人;這批三項研究共用一支程式 |
投資有風險,過去績效不代表未來表現。本內容僅供教學與研究,不構成投資建議,請依個人風險承受度審慎評估。本文沒有推薦買賣任何個股,公司過去買回也不代表之後會繼續買回。
最後更新:2026-11|回測區間:2017-04-03 至 2026-11-10|作者:FinLab 量化研究團隊。團隊以 FinLab 資料維護台股、美股的可重跑研究。
FinLab AI
想建立自己的策略?
用自然語言描述你的選股想法,AI 自動驗證、回測、給你答案
免費開始







