FinLab

技術分析 vs 基本面分析:台股 15 年回測的終極對決

February 16, 2026

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


技術分析 vs 基本面分析:到底誰贏?

這是投資界最經典的爭論:

「技術分析就是看線圖算命!」 「基本面分析太慢了,等你看完財報股價早就漲完了!」

兩派各有擁護者,但很少有人用數據來驗證

今天,我們用 15 年的台股回測數據(2010-2025),一次搞清楚:

  • 純技術分析策略能賺多少?
  • 純基本面分析策略能賺多少?
  • 兩者結合又會如何?

結果可能出乎你的意料。


什麼是技術分析?什麼是基本面分析?

技術分析(Technical Analysis)

核心理念:價格反映一切。

技術分析不看財報、不管營收,只看股價和成交量的走勢。常用工具包括:

  • 均線(MA):趨勢方向
  • RSI:超買超賣
  • MACD:動能變化
  • KD 隨機指標:短期轉折

白話比喻: 技術分析就像看天氣預報——不管為什麼會下雨(氣壓、氣流),只看雲層和濕度來預測。

基本面分析(Fundamental Analysis)

核心理念:股價終究會回歸企業價值。

基本面分析看的是公司的財務數據:

  • 營收成長:公司賺的錢有沒有變多
  • 本益比(PE):股價相對於獲利是否合理
  • ROE:股東權益報酬率
  • 現金流:公司有沒有真的賺到現金

白話比喻: 基本面分析就像買房——你會看坪數、地段、屋齡,不會只看最近成交價的漲跌。


回測設計:公平對決

為了公平比較,我們設計了三組策略,回測條件統一:

設定 數值
回測期間 2010-2025(15 年)
流動性篩選 20 日均量 > 300 張
持股數量 10 檔
換股頻率 月度
單一持股上限 12%

策略 A:純技術分析

建立純技術分析策略:RSI > 50、MACD 黃金交叉、股價在 60 日均線之上

顯示程式碼
from finlab import data
from finlab.backtest import sim
 
# 取得數據
close = data.get('price:收盤價')
volume = data.get('price:成交股數')
 
# 技術指標
rsi = data.indicator('RSI', timeperiod=14)
macd, macd_signal, _ = data.indicator('MACD', fastperiod=12, slowperiod=26, signalperiod=9)
sma60 = close.average(60)
 
# 技術分析條件
cond_rsi = rsi > 50                    # RSI 多頭
cond_macd = macd > macd_signal         # MACD 在信號線之上
cond_trend = close > sma60             # 價格在 60 日均線上
vol_filter = volume.average(20) > 300 * 1000
 
# 選出動能最強的 10 檔(用 RSI 排序)
cond = cond_rsi & cond_macd & cond_trend & vol_filter
position = rsi[cond].is_largest(10)
 
# 回測
report = sim(position.loc['2010':], resample='M', position_limit=0.12, upload=False)

策略 B:純基本面分析

建立純基本面策略:營收年增 > 15%、營收創 12 月新高、ROE > 8%

顯示程式碼
from finlab import data
from finlab.backtest import sim
 
# 取得數據
rev = data.get('monthly_revenue:當月營收')
rev_yoy = data.get('monthly_revenue:去年同月增減(%)')
roe = data.get('fundamental_features:ROE稅後')
volume = data.get('price:成交股數')
 
# 基本面條件
rev_ma3 = rev.average(3)
rev_new_high = (rev_ma3 == rev_ma3.rolling(12).max())  # 營收創新高
rev_growth = rev_yoy > 15                                # 營收年增 > 15%
roe_good = roe > 8                                       # ROE > 8%
vol_filter = volume.average(20) > 300 * 1000
 
# 選出成長最強的 10 檔(用營收年增率排序)
cond = rev_new_high & rev_growth & roe_good & vol_filter
position = rev_yoy[cond].is_largest(10)
position = position.reindex(rev.index_str_to_date().index, method='ffill')
 
# 回測
report = sim(position.loc['2010':], resample='M', position_limit=0.12, upload=False)

回測結果:兩者勢均力敵

指標 純技術分析 純基本面分析 差距
年化報酬率 17.7% 16.5% +1.2%
夏普比率 0.66 0.61 +0.05
最大回撤 -54.7% -48.8% 基本面較好

結果出乎意料:兩者差距很小!技術面略高,但基本面回撤更小。

兩者各有優勢

技術分析的強項:

  • 進場時機:等 RSI > 50 再買,避免接下墜刀
  • 趨勢確認:均線多頭排列才進場,過濾假突破
  • 反應速度快:每天都有新信號

基本面分析的強項:

  • 營收是硬數據:股價可以被短期情緒影響,但營收是真金白銀
  • 回撤較小:選到好公司即使短期下跌也會回來
  • 適合長期持有:不需要頻繁操作

想建立自己的策略?

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

免費開始