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

執行這個策略
複製提示詞,讓 AI 依照上方證據的資料、條件與風險檢查重跑一次。
告訴你的AI:
回測台股短期反轉策略,並親手檢查回測報告的實際起始日與平均持股數,識破視窗不對齊與訊號稀疏兩個回測陷阱,請讀:https://finlab.finance/setup?relatedUrl=/blog/reversal-strategy
圖 1:純抄底策略 vs 0050 含息(2007~2026,對數座標)。買跌最多的股票,年化 -7.5%。
前言:你也有過這種衝動嗎?
每次股票大跌,你是不是也想撿便宜?
「跌這麼多了,應該會反彈吧?」
這個想法非常普遍。在 PTT 股票版上,「抄底」永遠是熱門話題,有人說「跌深就是買點」,也有人警告「100 個抄底的人,99 個都是接到滿手血」。
到底誰說的對?我們用台股 2007~2026 年的資料實際回測:
純粹「買跌最多的股票」,年化報酬是 -7.5%。
買便宜還虧錢。我們接著逐步加上各種篩選條件,看能不能把它救回來;結果連看起來成功翻正的版本,都藏著更值得學的陷阱。這篇文章會用數據回答三件事:
- 為什麼「跌深反彈」會虧錢?
- 加上篩選條件之後能改善多少?
- 為什麼很多「優化後翻正」的抄底回測,其實是統計幻覺?
一、什麼是「均值回歸」?彈簧理論
在解釋數據之前,先聊聊「跌深反彈」背後的學術理論:均值回歸(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 鄉民說得好:「跌深不一定反彈,可能是跌到破產。」
跌深的股票有兩種:
- 錯殺股:因為市場恐慌被錯殺,基本面沒問題 → 會反彈
- 真爛股:基本面惡化、營運出問題 → 繼續跌
問題是,純粹看跌幅無法區分這兩種股票。如果你買到的是「真爛股」,那不是抄底,是接刀。
三、加上三道防線:能少虧,但翻不了正
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 |
圖 2:同視窗公平對決(2020-03 起,對數座標)。優化版年化 30.9%,仍輸 0050 同視窗的 34.5%。
三項指標全輸。從疫情低點起算的 6.3 年是台股罕見的大多頭,隨便一個做多策略都會有漂亮的絕對數字;30.9% 放在那個視窗裡,只是一個跑輸大盤的成績。
4.3 兩個讓回測「看起來會賺」的陷阱
這個結果比「找到聖杯」更有教學價值,因為它示範了兩個最常見的回測陷阱:
| 陷阱 | 本文案例 | 怎麼識破 |
|---|---|---|
| 視窗不對齊 | 策略從 2020 疫情底部起算,基準卻從 2007 起算,兩個數字直接放同一張表 | 永遠檢查報表的實際起始日,把基準對齊到同一視窗再比較 |
| 訊號稀疏 | 條件成立時平均只有 1.7 檔持股,等於單押一兩檔個股,不是投資組合 | 檢查平均持股數;條件用 AND 疊得越多、持股越少,越可能是過擬合 |
「營收爆發+品質閘」的選股直覺本身未必是錯的,但在這組參數下,它稀疏到只剩個股賭注,而它「翻正」的表象完全來自視窗錯位。很多策略文的驚人報酬,就是這兩個陷阱的產物。
圖 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 日跌幅最大的股票, 但要符合以下條件:
- 流動性在市場前 50%
- 本益比 0-25
- 股價淨值比 0-4
- ROE > 5%
用表格列出前 10 名的代號、跌幅、PE、PB、ROE。
把你的結果截圖分享到社群,看看大家找到的股票有沒有不一樣!
延伸閱讀
- 動能策略:追漲停真的能賺錢嗎?:與抄底相反的「追強勢股」策略與它的改良路徑
- 創新高策略:年化 48% 的動能選股系統:用營收篩選配合價格動能,更穩健的進場方式
- 營收陷阱分析:每 3 檔就有 1 檔地雷:學會辨別真正的營收成長股
- 用大盤濾網把策略最大回撤從 -60% 降到 -30%:抄底之外,先學會避開系統性大跌
- 分散風險不是越多越好:弱策略混進組合會拖垮整體,疊加前先單獨驗證每條腿
- 台股選股方法完整指南
參考資料
| 來源 | 內容 |
|---|---|
| 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 自動驗證、回測、給你答案
免費開始

