FinLab

三項現金流全正 = 飆股?數據告訴你真相

January 10, 2026

三項現金流全正,真的是飆股嗎?

這是很多投資人相信的「常識」:

「營業現金流正、投資現金流正、融資現金流正 = 好公司 = 飆股」

但數據會說謊嗎?讓我們來驗證。

在 2015-2025 年的台股回測中:

  • 三項全正策略年化報酬:4.61%
  • 營業正+投資負策略:12.07%
  • 優化後策略:25.51%

結果令人驚訝:三項全正反而是最差的!

提醒:以下為歷史回測結果,不代表未來表現。


市場現象:不同現金流組合的績效差異

首先,我們測試所有可能的現金流組合:

請回測以下現金流策略,比較不同組合的績效:

  • 三項現金流全正
  • 營業現金流正
  • 營業正 + 投資負
  • 營業正 + 融資負
顯示程式碼
from finlab import data
from finlab.backtest import sim
import pandas as pd
 
# 取得現金流數據
營業現金流 = data.get('financial_statement:營業活動之淨現金流入_流出')
投資現金流 = data.get('financial_statement:投資活動之淨現金流入_流出')
融資現金流 = data.get('financial_statement:籌資活動之淨現金流入_流出')
vol = data.get('price:成交股數')
 
# 流動性篩選
vol_filter = vol.average(20) > 300 * 1000
 
# 策略 A:三項全正
三項全正 = (營業現金流 > 0) & (投資現金流 > 0) & (融資現金流 > 0) & vol_filter
 
# 策略 B:營業現金流正
營業正 = (營業現金流 > 0) & vol_filter
 
# 策略 C:營業正 + 投資負(成長股模式)
成長股模式 = (營業現金流 > 0) & (投資現金流 < 0) & vol_filter
 
# 回測比較
results = []
for name, position in [('三項全正', 三項全正), ('營業正', 營業正), ('成長股模式', 成長股模式)]:
    report = sim(position.loc['2015':], resample='M', position_limit=0.1, upload=False)
    stats = report.get_stats()
    results.append({
        '策略': name,
        '年化報酬': f"{stats['cagr']:.2%}",
        '夏普比率': f"{stats['monthly_sharpe']:.2f}"
    })
 
pd.DataFrame(results)

震驚發現:三項全正竟然墊底!

策略 年化報酬率 夏普比率 排名
營業正+投資負 12.07% 0.58 1
營業現金流正 12.03% 0.58 2
營業正+融資負 11.69% 0.57 3
自由現金流正 10.60% 0.53 4
投資現金流正 9.32% 0.46 5
融資現金流正 8.33% 0.41 6
三項全正 4.61% 0.23 7(墊底)

三項全正績效僅 4.61%,是所有策略中最差的!


為什麼三項全正反而不好?

從財務分析的角度,三種現金流的正負號有不同含義:

現金流 正號含義 負號含義
營業現金流 本業賺錢 ✓ 本業虧錢 ✗
投資現金流 處分資產/減少投資 ⚠️ 積極投資擴張 ✓
融資現金流 借錢/增資 ⚠️ 還債/配息 ✓

關鍵洞見:

  • 投資現金流正 = 公司在賣資產或減少投資,可能是衰退信號
  • 融資現金流正 = 公司在借錢或增資,可能是缺錢信號
  • 三項全正 = 本業賺錢,但在縮減規模、籌錢度日,不是成長股特徵!

真正的成長股應該是:營業正 + 投資負(賺錢並積極投資未來)


基礎策略:只看營業現金流

既然營業現金流最重要,我們先建立基礎策略:

建立一個「營業現金流正」的基礎策略:

  • 買進條件:營業現金流正
  • 流動性:20 日均量 > 300 張
  • 月度再平衡
顯示程式碼
from finlab import data
from finlab.backtest import sim
 
# 取得數據
營業現金流 = data.get('financial_statement:營業活動之淨現金流入_流出')
vol = data.get('price:成交股數')
 
# 條件
營業正 = 營業現金流 > 0
vol_filter = vol.average(20) > 300 * 1000
 
# 組合
position = 營業正 & vol_filter
 
# 回測
report = sim(position.loc['2015':], resample='M', position_limit=0.1, upload=False)
report.to_html('baseline_report.html')

基礎策略績效

指標 數值
年化報酬率 12.03%
夏普比率 0.58
最大回撤 -35.75%

績效中規中矩,但還有很大提升空間。

想建立自己的策略?

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

免費開始