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

自由現金流選股 13 年實測:經典螺絲輸 0050,
多因子 FCF 才贏(年化 24%)

把財報狗策略狗的「自由現金報酬率」寫成可重現策略,用 finlab 實測 2013–2026 共 13 年:經典 FCF+本益比+股價淨值比螺絲只有年化 14.22%、夏普 0.94,跑輸含息 0050(21.01%)。真正贏過大盤的是把自由現金報酬率、營收成長、價格動能三個低相關因子疊起來,年化 24.18%、夏普 1.28、回撤還更淺,附可下載 strategy.py 與回測數據。

很多存股教學都推「自由現金報酬率」這個冷門又迷人的指標,說它能幫你挑到體質好的績優股。我們直接把它寫成可重現的選股策略,用 finlab 把 2013-04 到 2026-06 共 13 年的台股資料跑一次回測,結果跟多數教學講的不太一樣。

一句話結論: 教科書版本的自由現金報酬率價值螺絲(自由現金報酬率前 30%+本益比 < 25+股價淨值比 < 1.5)13 年只有年化 14.22%、夏普 0.94,跑輸同期含息 0050 的 21.01%。真正贏過大盤的,是把自由現金報酬率、營收成長、價格動能這三個低相關因子疊起來:年化 24.18%、夏普 1.28、最大回撤 -30.90%(比含息 0050 的 -33.96% 還淺)。

策略(2013-04~2026-06,月調倉) 年化報酬 夏普 最大回撤
含息 0050(大盤基準) 21.01% -33.96%
經典自由現金報酬率螺絲(FCF+本益比+股價淨值比) 14.22% 0.94 -31.08%
多因子版本(FCF+營收成長+動能) 24.18% 1.28 -30.90%

下面這張是多因子版本、經典螺絲與含息 0050 的權益曲線,全部用 finlab 真實回測、等權重、月調倉:

多因子自由現金流策略、經典 FCF 螺絲與含息 0050 的權益曲線比較,2013 到 2026

想自己改因子、換條件即時重算,可以用 AI 輔助安裝流程把 finlab 裝起來:

免費試用

用 AI 開始 FinLab

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

告訴你的AI:

幫我設定 FinLab,重現這篇文章,請讀:https://finlab.finance/setup?relatedUrl=/blog/strategy-dog-free-cash-flow-stock-screen-backtest

自由現金報酬率是什麼?

財報狗的「策略狗」公開了一個比較少見的指標:自由現金報酬率。它的算法直接引用策略狗的教學定義。

名詞 計算方式
投資資本 股東權益 + 短期借款 + 長期借款
自由現金流 營業現金流 - 資本支出
自由現金報酬率 自由現金流 ÷ 投資資本

關鍵差別在分子。一般人看獲利只盯每股盈餘或帳面盈餘,但盈餘是會計數字,可以靠認列方式美化;自由現金流是公司真正收進來、扣掉維持營運與擴張所需資本支出之後,還能自由運用的現金。一家公司就算帳面有獲利,若現金都被應收帳款或設備投資吃光,自由現金流仍可能很薄。用自由現金流當分子、再除以投資資本,等於在問:這家公司每投入一塊錢資本,一年能擠出多少自由現金?比率越高,代表把資本轉成真現金的效率越好,通常也就是體質越穩健的公司。這類財務名詞可以對照量化投資詞彙表釐清。

第一個發現:單獨用自由現金報酬率,贏不了大盤

我們先照教學把它寫成最直覺的價值螺絲:自由現金報酬率全市場前 30%、本益比小於 25、股價淨值比小於 1.5,每月調倉、等權重、滿足條件就買進。13 年下來它的年化只有 14.22%、夏普 0.94,落後含息 0050 將近 7 個百分點。

不死心,我們又試了幾種常見的變形,包括把它集中到少數幾檔、加上價格動能。為了不挑數字,五種版本全部列出來:

五種自由現金流選股法的真實年化報酬比較,只有多因子版本贏過含息 0050

版本 選股邏輯 平均持股 年化報酬 夏普 索提諾 最大回撤
V1 自由現金報酬率前 30%+本益比+股價淨值比 118 14.22% 0.94 1.30 -31.08%
V2 集中買自由現金報酬率最高 30 檔+本益比 16 10.65% 0.60 0.90 -36.73%
V3 前 50 高自由現金報酬率+本益比+動能 15 16.24% 0.82 1.27 -37.26%
V5 集中買自由現金報酬率最高 30 檔+動能 12 19.84% 0.92 1.46 -32.76%
V4 自由現金報酬率前 30%+營收成長+動能 155 24.18% 1.28 1.88 -30.90%

兩個反直覺的觀察:第一,把策略集中到少數幾檔(V2、V5)反而更差,夏普掉到 0.6~0.9,回撤更深。自由現金報酬率比較像一個讓整體勝率往上偏的廣度因子,硬要押在最高的幾檔身上,個股波動會把優勢吃掉。第二,唯一明顯贏過含息 0050 的是 V4:它不靠集中,而是靠疊加。

第二個發現:三個低相關因子疊起來才贏

V4 的選股邏輯是同時要求三件事:自由現金報酬率全市場前 30%(體質)、月營收年增率為正(成長)、近三個月股價站上(動能)。這三個因子看的是不同面向,彼此相關性低,失靈的時機也不同步,疊在一起時一個拉回、另一個還撐得住,整體波動就被壓下來。這也是為什麼它的夏普 1.28 與索提諾 1.88 明顯高過任何單一版本。其中價格動能這個因子的長期有效性,最早由 Jegadeesh & Titman (1993) 在美股實證提出,後續也在台股反覆被驗證,把它和價值體質因子搭配,正是經典的低相關組合。

核心程式碼:三個因子怎麼疊

整套策略的核心其實只有幾行。先算出自由現金報酬率,再把營收年增與三個月動能兩個條件疊上去,最後交給 finlab 的 sim 回測。完整可下載版見下方 strategy.py,這裡先看骨架:

顯示程式碼
import numpy as np
from finlab import data
from finlab.backtest import sim
 
# 自由現金報酬率 = 自由現金流 ÷ 投資資本(股東權益+短期借款+長期借款)
fcf = data.get("fundamental_features:自由現金流量")
equity = data.get("financial_statement:股東權益總額")
short_debt = data.get("financial_statement:短期借款")
long_debt = data.get("financial_statement:長期借款")
invested_capital = equity.fillna(0) + short_debt.fillna(0) + long_debt.fillna(0)
fcf_yield = (fcf / invested_capital).replace([np.inf, -np.inf], np.nan)
 
# 另外兩個低相關因子:營收成長與價格動能
revenue_yoy = data.get("monthly_revenue:去年同月增減(%)")
close = data.get("price:收盤價")
momentum = close / close.shift(60)
 
# 三因子同時成立才買進
position = (
    (fcf_yield.rank(axis=1, pct=True) > 0.7)
    & (revenue_yoy > 0)
    & (momentum > 1)
)
report = sim(position, resample="M", name="自由現金流多因子")

rank(axis=1, pct=True) > 0.7 的意思是每一天把全市場股票依自由現金報酬率排序、取前 30%;resample="M" 是每月調倉(本文開頭表格那組數字就是這個版本,每季再略好一點,見下一節)。你只要把這三個條件換成自己想驗證的因子,就能立刻重跑出一條新的權益曲線,這也是用真實資料做選股研究最有價值的地方:所有結論都可以自己復現、自己挑戰。

回撤的差距更直接。多因子版本 13 年最深只回 -30.90%,比含息 0050 的 -33.96% 還淺一些,等於用更高的報酬換到更小的痛苦。

多因子自由現金流策略與含息 0050 的回撤比較,多因子最大回撤更淺

完整的互動報告(可看每筆交易、年度報酬與部位明細)在這裡:

策略的完整程式碼可以直接下載重跑:strategy.py,回測權益曲線數據在 data.csv。想把多因子怎麼疊看得更完整,可以參考多因子選股實戰:年化贏過 0050

第三個發現:每年換一次股,其實太久了

很多存股教學會說「價值股每年換一次就好」。對多因子版本來說,這個結論並不成立。我們把同一套 V4 條件分別用每月、每季、每年三種換股頻率各跑一次:

多因子自由現金流策略在每月、每季、每年三種換股頻率下的年化報酬比較

換股頻率 年化報酬 夏普 最大回撤
每月 24.18% 1.28 -30.90%
每季 24.86% 1.30 -30.31%
每年 18.88% 1.02 -30.32%

每季與每月幾乎打平、每季略好,但拉長到每年,年化就掉到 18.88%、夏普掉到 1.02。原因在於這套策略含有動能因子,而動能的有效期本來就短;一年才換一次,等於讓動能訊號放到過期。所以這類含動能的多因子策略,每季調倉是比較合理的節奏。

幾個要老實講的限制

第一,這是 2013-04 到 2026-06 的樣本內結果,台股這段期間整體偏多頭,換到不同期間、不同參數,數字一定會變,不能當成未來保證。第二,V4 平均持有約 155 檔,它的本質是一個分散的因子組合,而不是少數幾檔的集中存股;想拿來當「只買十檔長抱」的清單並不適合。第三,回測未計交易成本與滑價,每季調倉的周轉雖然不算高,實單仍要把手續費與流動性算進去。把這三點放在心裡,這套策略真正的用途是:當一個有體質、有成長、有動能的分散選股框架,而不是一張穩賺的明牌。

常見問題

自由現金報酬率高的股票一定會漲嗎? 不一定。我們也做過自由現金報酬率與單月報酬的相關性檢查,短期幾乎看不出關聯,這是長期體質指標,醞釀不出一個月的漲跌。它的價值在於長期把勝率往上偏,而且高自由現金報酬率的股票短期波動通常較低、不易暴漲暴跌,比較適合當分散組合裡的體質濾網。

為什麼經典的自由現金報酬率螺絲會輸 0050? 因為它本質上是一個偏向深度價值的篩選(股價淨值比小於 1.5),而 2013 到 2026 這段期間,台股的權值與成長股表現強勁,純深度價值反而落後。把成長與動能因子補進來,才把這個缺口補上。

這套策略要多久換一次股? 以本文的多因子版本來說,每季調倉表現最好(年化 24.86%、夏普 1.30),每月幾乎一樣,但每年就明顯變差,因為動能訊號會過期。完整選股流程與其他面向,可參考台股選股完整指南,以及換股頻率的延伸實測績優股獵犬 2:多久換股一次最好。


延伸閱讀

本文由 FinLab 量化研究團隊撰寫。所有回測均以 finlab 套件在真實台股歷史資料上實證,程式碼與權益曲線數據皆可下載重跑,歡迎自行驗證與挑戰。

投資警語:本文所有回測數據來源為 finlab 真實實測(2013-04 至 2026-06),僅供教學與研究參考,不構成投資建議。過去績效不代表未來表現,投資有風險,請依個人風險承受度審慎評估。

FinLab AI

想建立自己的策略?

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

免費開始

更多價值與基本面研究

查看全部