跳至主要內容

回測視窗 2018-01-31 〜 2026-08-20 · 資料截至 2026-08-20

自由現金流多因子(現金流報酬率+營收+動能)

自由現金流除以投資資本(股東權益+長短期借款)排名全市場前 30%,同時要求月營收年增率為正、近三個月股價動能站上,每月等權換股,把「會產生現金的公司」加上成長與價格確認。2018 年至 2026 年台股回測年化報酬 24.5%、日夏普 1.31、最大回撤 -30.9%;同視窗 0050 含息年化 24.5%、最大回撤 -34.0%。

投資警語:本文僅供教學參考,不構成投資建議。過去績效不代表未來表現,投資有風險。

回測績效

年化報酬率
24.5%
日夏普
1.31
最大回撤
-30.9%
總報酬率
550%
平均持股
163.5 檔

回測含手續費 0.1425% 與賣出證交稅 0.3%(finlab 套件 sim() 預設成本),日夏普未扣無風險利率。策略淨值自資料可得日(2018-01-31)起算。

淨值曲線(對數座標)

自由現金流多因子(現金流報酬率+營收+動能) vs 0050 買進持有(含息)
1x2x3x5x2018-01-312019-07-102020-12-092022-05-192023-10-232025-04-022026-08-20
自由現金流多因子(現金流報酬率+營收+動能)0050 買進持有(含息)

與 0050 含息買進持有對照

對象年化報酬率日夏普最大回撤統計視窗
自由現金流多因子(現金流報酬率+營收+動能)24.5%1.31-30.9%2018-01-31 〜 2026-08-20
0050 買進持有(含息)24.5%1.17-34.0%2018-01-01 〜 2026-08-20

持股樣本

代號名稱
1216統一
1259安心
1268漢來美食
1319東陽
1464得力

完整策略程式碼

安裝 finlab 套件後即可直接執行重現(finlab.login() 會自動引導登入,不需手動填 token)。想用 AI 輔助安裝與跑第一次回測,可以走 安裝教學

展開程式碼(strategy.py)
# ============================================================================
# 自由現金流多因子策略(finlab.finance/strategies/fcf-multifactor 頁面數字來源)
# ----------------------------------------------------------------------------
# 三個條件同時成立才買進,每月等權換股:
#   1. 自由現金流報酬率(自由現金流 ÷ 投資資本)排名全市場前 30%
#   2. 月營收年增率 > 0
#   3. 近三個月(60 個交易日)股價動能 > 1(價格站上三個月前)
# Benchmark:0050 含息(etl:adj_close,純算術買進持有,不經 sim、不含成本)。
# 執行:安裝 finlab 後直接跑(finlab.login() 會自動引導登入)。
# 回測區間:2018-01-01 ~ 2026-08-20;sim() 已內扣手續費 0.1425% 與證交稅 0.3%。
# ============================================================================
import numpy as np
import finlab
from finlab import data
from finlab.backtest import sim

finlab.login()

# ---- 載入資料 ---------------------------------------------------------------
fcf = data.get('fundamental_features:自由現金流量')
equity = data.get('financial_statement:股東權益總額')
short_debt = data.get('financial_statement:短期借款')
long_debt = data.get('financial_statement:長期借款')
rev_yoy = data.get('monthly_revenue:去年同月增減(%)')
close = data.get('price:收盤價')

# ---- 因子一:自由現金流報酬率 = 自由現金流 ÷ 投資資本 ------------------------
# 投資資本 = 股東權益 + 短期借款 + 長期借款
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)

# ---- 因子二、三:營收成長與價格動能(與現金流體質低相關的確認訊號)------------
momentum = close / close.shift(60)

# ---- 三個條件同時成立才持有(布林部位,等權重)-------------------------------
position = (
    (fcf_yield.rank(axis=1, pct=True) > 0.7)
    & (rev_yoy > 0)
    & (momentum > 1)
)

# ---- 回測:月換股,finlab 預設已含手續費 0.1425% 與賣出證交稅 0.3% -----------
report = sim(position.loc['2018':], resample='M', name='自由現金流多因子', upload=False)
report.display()

下載 strategy.py 下載 data.csv(淨值曲線)

到 FinLab Studio 重現這支策略

在 Studio 裡用同一套真實資料調整條件、重跑回測。

本頁策略與回測結果僅供教學與研究用途,詳見服務條款