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

跌深反彈真的能賺錢嗎?用 AI 回測揭開抄底策略的殘酷真相

純粹買過去 20 日跌最多的 30 檔,台股 2007~2026 年化 -7.5%、最大回撤 -87%。看似翻正到 30.9% 的優化版,實際只從 2020 年 3 月起交易、平均持股 1.7 檔,同視窗仍輸 0050 的 34.5%。教你識破視窗不對齊與訊號稀疏兩個回測陷阱。

抄底真相揭密 CAGR -7.5% Sharpe -0.22

「跌深會反彈」是最流行的進場直覺,但台股 2007~2026 的回測說:純粹買跌最多的股票,年化報酬是 負 7.5%、最大回撤 -87%。更殘酷的是:連看起來翻正到年化 30.9% 的優化版本,攤開在同一個視窗下公平比較,也輸給 0050。這篇文章給你完整數據,以及兩個讓回測「看起來會賺」的常見陷阱。

純短期反轉策略 vs 0050 淨值曲線對照

依本文重跑

執行這個策略

複製提示詞,讓 AI 依照上方證據的資料、條件與風險檢查重跑一次。

告訴你的AI:

回測台股短期反轉策略,並親手檢查回測報告的實際起始日與平均持股數,識破視窗不對齊與訊號稀疏兩個回測陷阱,請讀:https://finlab.finance/setup?relatedUrl=/blog/reversal-strategy

免安裝,開啟 FinLab Studio

圖 1:純抄底策略 vs 0050 含息(2007~2026,對數座標)。買跌最多的股票,年化 -7.5%。

前言:你也有過這種衝動嗎?

每次股票大跌,你是不是也想撿便宜?

「跌這麼多了,應該會反彈吧?」

這個想法非常普遍。在 PTT 股票版上,「抄底」永遠是熱門話題,有人說「跌深就是買點」,也有人警告「100 個抄底的人,99 個都是接到滿手血」。

到底誰說的對?我們用台股 2007~2026 年的資料實際回測:

純粹「買跌最多的股票」,年化報酬是 -7.5%。

買便宜還虧錢。我們接著逐步加上各種篩選條件,看能不能把它救回來;結果連看起來成功翻正的版本,都藏著更值得學的陷阱。這篇文章會用數據回答三件事:

  1. 為什麼「跌深反彈」會虧錢?
  2. 加上篩選條件之後能改善多少?
  3. 為什麼很多「優化後翻正」的抄底回測,其實是統計幻覺?

一、什麼是「均值回歸」?彈簧理論

在解釋數據之前,先聊聊「跌深反彈」背後的學術理論:均值回歸(Mean Reversion)

均值回歸:當資產價格偏離長期平均值太多時,會有回歸均值的傾向。簡單說,就是「漲太多會跌、跌太多會漲」。

想像股價就像彈簧:你把它壓下去(股價大跌),壓得越深,理論上彈回來的力道越大。這就是很多人相信「跌深反彈」的原因。

這個想法在學術上被稱為「短期反轉因子」(Short-term Reversal),最早由 Jegadeesh(1990)系統性研究:在美股市場上,過去 1 個月表現最差的股票,在接下來 1 個月往往表現較佳。

聽起來很棒,但問題來了:這個策略在台股有效嗎?

二、抄底策略實測:「跌深反彈」的殘酷真相

2.1 策略設計

我們設計了一個最簡單的「跌深反彈」策略:

參數 設定
選股條件 過去 20 日跌幅最大的 30 檔
流動性篩選 20 日均成交額 > 市場中位數
換股頻率 每月調整
持股權重 等權重,單檔上限 10%

邏輯很簡單:找出最近跌最慘的股票,期待它們反彈。

2.2 回測結果

策略 年化報酬 最大回撤 日夏普比率
純短期反轉 -7.5% -87.0% -0.22
0050 含息買進持有 14.5% -55.8% 0.72

你沒看錯:純粹買跌最多的股票,不只沒賺,還虧了 7.5%/年!

而且最大回撤高達 87%,意味著你的本金可能會縮水到只剩 13%。

2.3 為什麼會虧錢?

PTT 鄉民說得好:「跌深不一定反彈,可能是跌到破產。」

跌深的股票有兩種:

  1. 錯殺股:因為市場恐慌被錯殺,基本面沒問題 → 會反彈
  2. 真爛股:基本面惡化、營運出問題 → 繼續跌

問題是,純粹看跌幅無法區分這兩種股票。如果你買到的是「真爛股」,那不是抄底,是接刀。

三、加上三道防線:能少虧,但翻不了正

3.1 逐步加上防線的真實結果

既然純跌深策略會虧錢,那加入篩選條件可以改善多少?Blitz 等人(2023)的研究指出,現代的短期反轉策略必須搭配其他訊號使用才有效。我們在同一套策略上逐步加防線:

策略變體 年化報酬 最大回撤 日夏普比率
純短期反轉 -7.5% -87.0% -0.22
+估值防線(0 < PE < 25) -2.3% -61.0% -0.07
+財務防線(0 < PB < 4,三道防線齊) -1.3% -61.4% -0.02

三道防線能把年化虧損從 -7.5% 收斂到 -1.3%、回撤從 -87% 收斂到 -61%,但依然是虧的。基本面篩選只能幫你「少接一點刀」,沒辦法把接刀變成賺錢。第四節會示範一個看起來成功翻正的版本,以及它藏著的兩個陷阱。

3.2 三道防線

防線 篩選條件 目的
第一道:流動性 日均成交額 > 市場中位數 排除小型股,確保能順利買賣
第二道:估值合理 0 < 本益比 < 25 排除虧損股和高估股
第三道:財務健全 0 < 股價淨值比 < 4 排除財務異常公司

這三道防線的邏輯是:只在「好公司」中找跌深的,而不是盲目撿便宜。就像買二手車,你不會只因為便宜就買,你會先驗車、看里程數、檢查有沒有泡水。

3.3 為什麼只靠基本面篩選不夠?

回到彈簧的比喻:

  • 好彈簧(好公司):壓下去會彈回來
  • 壞彈簧(爛公司):壓下去直接斷掉

估值與財務防線能挑掉最明顯的壞彈簧,但它們都是「靜態」條件:不知道彈簧現在還在被壓、還是已經開始回彈,也不知道公司的營運是正在惡化、還是正在爆發。把這兩個資訊加進來之後,會得到一個表面上翻正的版本,這正是第四節要拆解的案例。

四、看似翻正的優化版:一個更重要的教訓

4.1 追加條件

條件 設定 作用
極端跌深 60 日跌幅 > 30% 只做「重挫」而非普通回檔
觸底確認 5 日報酬 > 0 等開始反彈再進場,不接下落中的刀
營收爆發 月營收年增率 > 50% 營運正在爆發、股價卻重挫 = 可能錯殺
品質閘 ROE > 5% 排除「營收衝但不賺錢」的地雷

在符合條件的股票中取 60 日跌幅最大的 10 檔,每季換股。核心程式碼如下(完整可執行版見文末下載):

顯示程式碼
from finlab import data
from finlab.backtest import sim
 
close = data.get("price:收盤價")
roe = data.get("fundamental_features:ROE稅後")
rev_yoy = data.get("monthly_revenue:去年同月增減(%)")
 
# 價格條件:極端跌深 + 開始反彈
ret60 = close / close.shift(60) - 1
ret5 = close / close.shift(5) - 1
crashed = ret60 < -0.30
turning_up = ret5 > 0
 
# 基本面條件:營收爆發 + 基本品質
revenue_burst = rev_yoy > 50
quality = roe > 5
 
# 取 60 日跌幅最大的 10 檔,每季換股
condition = crashed & turning_up & revenue_burst & quality
position = ret60[condition].is_smallest(10)
 
report = sim(position, resample="Q", name="極端反轉+營收爆發")
report.display()

4.2 表面數字很漂亮,但只要多問一句

跑完回測,報表印出:年化報酬 30.9%、日夏普 0.96、最大回撤 -45.0%。對照全視窗 0050 的 14.5%,看起來翻正而且大勝。2026 年 1 月本文的初版,就是這樣呈現這個策略的。

但這次刷新重跑時,我們多問了一句:這個策略實際上從什麼時候開始交易?

答案是 2020-03-31,疫情崩盤的谷底。ROE 資料自 2013 年第一季才開始,而「重挫 30%+反彈+營收年增 50%+ROE>5」四個條件同時成立的股票極少(條件成立時平均只有 1.7 檔),在每季換股的設定下,2020 年 3 月之前沒有任何一個換股日湊得出持股。所以這個「19 年策略」,實際只跑了從疫情底部起算的 6.3 年。

把 0050 放到同一個視窗(2020-03-31~2026-07-23)再比一次:

同視窗(2020-03-31 起) 年化報酬 最大回撤 日夏普比率
極端反轉+營收爆發(ROE>5) 30.9% -45.0% 0.96
0050 含息買進持有 34.5% -34.0% 1.47

極端反轉加營收爆發策略與同視窗 0050 公平對決 圖 2:同視窗公平對決(2020-03 起,對數座標)。優化版年化 30.9%,仍輸 0050 同視窗的 34.5%。

三項指標全輸。從疫情低點起算的 6.3 年是台股罕見的大多頭,隨便一個做多策略都會有漂亮的絕對數字;30.9% 放在那個視窗裡,只是一個跑輸大盤的成績。

4.3 兩個讓回測「看起來會賺」的陷阱

這個結果比「找到聖杯」更有教學價值,因為它示範了兩個最常見的回測陷阱:

陷阱 本文案例 怎麼識破
視窗不對齊 策略從 2020 疫情底部起算,基準卻從 2007 起算,兩個數字直接放同一張表 永遠檢查報表的實際起始日,把基準對齊到同一視窗再比較
訊號稀疏 條件成立時平均只有 1.7 檔持股,等於單押一兩檔個股,不是投資組合 檢查平均持股數;條件用 AND 疊得越多、持股越少,越可能是過擬合

「營收爆發+品質閘」的選股直覺本身未必是錯的,但在這組參數下,它稀疏到只剩個股賭注,而它「翻正」的表象完全來自視窗錯位。很多策略文的驚人報酬,就是這兩個陷阱的產物。

同視窗回撤對照:優化版與 0050 圖 3:同視窗回撤對照。優化版最深 -45.0%,比 0050 同視窗的 -34.0% 更深:報酬較低、回撤反而較深。

想自己重跑或改條件,可以先用 FinLab Skill 把資料與回測環境裝好:

五、完整績效對照:六個變體一次看

反轉策略全視窗五個變體的年化報酬對照圖 圖 4:2007~2026 全視窗五個變體的年化報酬對照,綠虛線為 0050 含息(14.5%)。全部落後大盤。

策略變體 回測視窗 年化報酬 最大回撤 日夏普比率
純短期反轉(抄底) 2007~2026 -7.5% -87.0% -0.22
反轉+估值防線 2007~2026 -2.3% -61.0% -0.07
反轉+三道防線 2007~2026 -1.3% -61.4% -0.02
觸底反彈 2007~2026 0.5% -73.6% 0.14
觸底反彈+營收爆發(無 ROE 閘) 2007~2026 -4.1% -85.7% -0.07
0050 含息買進持有 2007~2026 14.5% -55.8% 0.72
極端反轉+營收爆發(ROE>5) 2020-03 起 30.9% -45.0% 0.96
0050 含息買進持有(同上視窗) 2020-03 起 34.5% -34.0% 1.47

把視窗對齊之後的結論很乾脆:六個變體,沒有任何一個在公平比較下贏過 0050。「跌深反彈」這個直覺,從最陽春到最複雜的實作,全部跑輸買進持有大盤。

六、風險提醒:為什麼不建議投入真金白銀

6.1 這個策略家族的根本問題

風險 說明
全家族輸大盤 視窗對齊後,六個變體沒有一個贏過 0050
訊號稀疏 優化版平均持股僅 1.7 檔,等於個股賭注;樣本外不確定性極高
深回撤 全家族最大回撤 -45%~-87%,多數人拿不住
接刀風險 即使篩選過,個別持股仍可能繼續跌

6.2 這篇文章的正確用法

適合 不適合
想練習驗證投資直覺的量化學習者 想找「照抄就能賺」策略的人
想學會識破回測陷阱的讀者 打算實際投入資金執行本文策略的人

6.3 更好的替代方案

如果你想用「便宜買進」的概念投資,有更穩健的方法:

方法 說明
價值投資 用 PE、PB 等指標找長期低估股
定期定額 市場下跌時自動買更多
股債平衡 股市跌時用債券資金加碼

這些方法的共同點是:用時間換取價值,不需要預測短期反彈。

七、三個重點總結

重點 1:跌深反彈的直覺,直接照做會虧錢

純粹買跌最多的股票,19 年回測年化虧損 7.5%、最大回撤 -87%。「跌多會漲」不能當進場理由。

重點 2:基本面防線能少虧,不能翻正

流動性、估值、財務三道防線把年化從 -7.5% 收斂到 -1.3%,回撤從 -87% 收斂到 -61%,但仍然是負的。

重點 3:「優化後翻正」多半是回測幻覺

看似年化 30.9% 的優化版,實際只從 2020 年 3 月(疫情底部)起有交易、平均持股 1.7 檔;把 0050 對齊到同一視窗,它三項指標全輸。拿到漂亮回測時,先檢查兩件事:實際起始日有沒有跟基準對齊、平均持股有幾檔。

回測方法與限制

  • 交易成本sim() 內建手續費 0.1425% 與賣出證交稅 0.3%,全數內扣;未另外假設滑價。
  • 股票池與流動性:全上市櫃;反轉家族要求 20 日均成交額大於市場中位數;觸底反彈家族未另設流動性門檻,重挫股流動性通常偏低,實單衝擊會高於回測。
  • 前視偏差:月營收與 ROE 使用 finlab 資料的公告可得時點對齊。
  • 權重與換股:等權配置;反轉家族每月換股、單檔上限 10%;觸底反彈家族每季換股、約 10 檔。
  • 基準口徑:0050 含息以還原股價(etl:adj_close)買進持有計算,區間 2007-01-01~2026-07-23,年化 14.5%、最大回撤 -55.8%。
  • 視窗差異:ROE 資料自 2013 年第一季起;「極端反轉+營收爆發(ROE>5)」因條件稀疏,首筆實際交易為 2020-03-31,其績效視窗為 2020-03-31~2026-07-23,文中已附同視窗 0050 對照(34.5%)。
  • 樣本內外:全段 in-sample,未做樣本外切分;優化版訊號稀疏(平均持股 1.7 檔),絕對數字請保守看待。
  • 周轉率與容量:月換股 30 檔的反轉家族周轉率極高;策略容量未估算。

實作作業

想親自驗證這個策略嗎?試試這個 Prompt:

幫我找出過去 20 日跌幅最大的股票, 但要符合以下條件:

  1. 流動性在市場前 50%
  2. 本益比 0-25
  3. 股價淨值比 0-4
  4. ROE > 5%

用表格列出前 10 名的代號、跌幅、PE、PB、ROE。

把你的結果截圖分享到社群,看看大家找到的股票有沒有不一樣!

延伸閱讀

參考資料

來源 內容
Jegadeesh(1990) 短期反轉因子的原始研究
Blitz et al.(2023) 短期訊號需要搭配其他條件才能產生可用的超額報酬
finlab 回測引擎 本文全部台股回測數據(2007-01-01~2026-07-23)

投資警語:本文僅供教學參考,不構成投資建議。投資有風險,過去績效不代表未來表現。讀者應自行評估風險承受度,並在做出投資決策前諮詢專業顧問。

最後更新:2026-07|回測區間:2007-01-01~2026-07-23|作者:FinLab 量化研究團隊(經量化研究員審閱)

VIP 區域提供 AI 抄底選股實戰:兩個可直接貼上的 Prompt(跌深清單查詢、加上基本面三道防線的篩選清單,含 2026-01-16 實際執行結果示範)、Prompt 修改技巧,以及本文全部回測的重現素材:優化版互動回測報告(可親眼驗證 2020-03-31 的實際起始日與 1~2 檔持股)、重現程式碼 strategy.py(含陷阱說明)、六變體績效 data_strategy_comparison.csv 與逐日淨值 data_reversal_vs_0050.csv 下載。

VIP 區域包含策略細節

登入後可看策略優化、完整程式碼與互動式回測報告

FinLab AI

想建立自己的策略?

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

免費開始

更多價值與基本面研究

查看全部