跳至主要內容
財經知識

回測入門:驗證策略的科學方法

回測是用歷史資料驗證交易策略可行性的核心工具,能在投入真實資金前評估策略的勝率、盈虧比與最大回撤。本文從回測基本流程到常見陷阱,輔以台股實例,帶你建立嚴謹的策略驗證方法,避免用「看起來很美的歷史曲線」騙自己。

股票分析

回測入門:驗證策略的科學方法

「這個策略很厲害,我看圖看出來的!」這是台股討論區最常出現的句子。但「看出來」和「統計驗證」之間,有一道深深的鴻溝。人類的大腦極擅長在雜訊中找到「規律」,即使那個規律根本不存在——心理學家稱之為模式識別偏差(Pattern Recognition Bias)

回測(Backtesting) 就是為了解決這個問題而存在的。它的核心思想非常簡單:用過去的歷史資料,模擬你的策略如果在當時被執行,結果會是如何。如果策略在過去有效,那麼(在一定假設下)它在未來也可能有效;反之,如果策略在過去就表現欠佳,那麼拿真錢去賭它,大概率是賠錢的。

然而,回測並不是萬靈丹。許多投資人做了回測,卻因為方法不當、陷入各種統計陷阱,最終得出誤導性的結論。本文將帶你從零開始理解回測的正確做法,以及那些你必須避開的致命坑洞,讓你的策略驗證過程真正有意義。


回測的基本流程

一個嚴謹的回測過程包含以下六個步驟:

步驟一:明確定義策略規則

在開始任何回測之前,你必須把策略「完全書面化」,也就是用清晰、無歧義的語言或程式碼描述每一個決策點:

  • 進場條件:什麼時候買進?(例如:5 日均線向上穿越 20 日均線,且成交量為前五日均量的 1.5 倍以上)
  • 出場條件(停利):什麼時候獲利了結?(例如:股價上漲 8% 後出場)
  • 出場條件(停損):什麼時候認輸出場?(例如:股價下跌 4% 後出場)
  • 部位規模:每次買多少股?固定金額還是固定比例?
  • 同時持有股數上限:最多持有幾支股票?
  • 是否考慮除息日、停牌日等特殊情況?

關鍵原則:規則必須在回測開始前就全部定義好,不能在看到回測結果後再回頭修改。這是最常見的「事後偏差」來源。

步驟二:準備乾淨的歷史資料

資料品質直接決定回測結果的可信度。台股回測常用的資料來源包括:

資料來源 特色 適用情境
台灣證券交易所(TWSE)官網 免費,有日 K 資料 初階回測
Yahoo Finance Taiwan 免費,Python 可直接抓取 個人研究
財報狗、CMoney API 付費,資料較完整 進階回測
TEJ 台灣經濟新報 學術級資料,最完整 機構/學術研究

資料清洗要點

  • 處理股票分割、配股除息的還原(調整後收盤價)
  • 排除已下市股票(避免倖存者偏差,詳見後文)
  • 確認節假日、停牌日的處理方式

步驟三:選擇適當的回測期間

回測期間的選擇至關重要。太短的回測期間樣本數不足,統計意義低;太長的期間可能包含市場結構已根本改變的時代。

建議

  • 至少涵蓋 一個完整的多空循環(台股大約 3-7 年)
  • 盡量包含至少一次大幅修正行情(例如 2008 金融海嘯、2020 新冠急跌、2022 熊市)
  • 若策略是日線操作,至少需要 3-5 年資料,取得 100 筆以上有效交易

步驟四:執行回測並記錄每筆交易

回測工具的選擇因技術能力而異:

  • Excel / Google Sheets:手動計算,適合簡單策略,耗時但直觀
  • Python(backtrader, zipline, vectorbt):自動化回測,靈活強大,需要程式基礎
  • TradingView Pine Script:在圖表上直接回測,視覺化效果好
  • 專業平台(如 MetaTrader、QuantConnect):功能完整,學習曲線較高

每筆交易記錄應包含:進場日期、進場價格、出場日期、出場價格、獲利/虧損金額、獲利/虧損百分比、持有天數。

步驟五:分析回測績效指標

單看「總報酬率」是不夠的,必須評估多個面向:

指標 說明 參考標準
年化報酬率 平均每年報酬 >15% 算良好
勝率 獲利交易佔比 因策略而異,不是越高越好
盈虧比 平均獲利/平均虧損 >1.5 為佳
最大回撤(MDD) 峰值到谷底的最大跌幅 <20% 為佳
夏普比率 超額報酬/波動度 >1.0 算合理
卡爾瑪比率 年化報酬/最大回撤 >1.0 算合理
交易筆數 足夠的樣本數 至少 50-100 筆

步驟六:進行樣本外驗證

這是最關鍵也最常被忽略的步驟。將歷史資料分成兩段:

  • 樣本內資料(In-Sample):用來開發和優化策略(例如 2015-2020 年的資料)
  • 樣本外資料(Out-of-Sample):保留起來,等策略定稿後才用來驗證(例如 2021-2024 年的資料)

如果策略在樣本外資料上仍然表現良好,可信度大幅提升;若樣本外表現遠遜於樣本內,則很可能是過度最佳化(詳見後文的「過擬合」問題)。


台股回測實例:20 日均線穿越策略

讓我們用一個具體例子走過完整回測流程。

策略定義

  • 標的池:台灣 50 成分股
  • 進場:5 日均線向上穿越 20 日均線(黃金交叉),且當日成交量 > 10 日均量
  • 停利:股價上漲 10%
  • 停損:股價下跌 5%
  • 部位規模:每筆投入資金 5%(20 等分)
  • 同時最多持有 5 支股票

回測期間:2018 年 1 月 ~ 2023 年 12 月(含 2020 年新冠崩盤、2022 年熊市)

假設回測結果如下:

指標 結果
總交易筆數 187 筆
勝率 43%
平均獲利 +9.2%
平均虧損 −5.1%
期望值/筆 +1.04%
年化報酬率 14.7%
最大回撤 −18.3%(2022 年)
夏普比率 0.93

這個策略整體表現合格——勝率不高但期望值為正,最大回撤在可接受範圍,年化報酬超過大盤長期平均。但在下結論之前,我們還需要進行樣本外驗證,並且仔細檢查是否存在以下常見陷阱。


回測常見陷阱:讓你的結論失真的六大元凶

陷阱一:前視偏差(Look-Ahead Bias)

定義:在回測中使用了「當時不可能知道」的未來資訊。

台股常見範例

  • 用「當日收盤價」決定當日進場,但實際上收盤才知道收盤價,無法在收盤時同時成交
  • 用「當日最高價」或「當日最低價」決定停損,但日內無法精確在最高/最低點操作
  • 財報數據在公告後才能使用,但回測卻用了「公告前」就已知道的財報數字

修正方式:使用「下一日開盤價」進出場,模擬「看到訊號後隔天才能執行」的真實情境。

陷阱二:倖存者偏差(Survivorship Bias)

定義:只用「現在還存在」的股票做回測,忽略了在回測期間已經下市、合併或重組的股票。

影響:現在還存在的股票,往往是表現較好的股票。如果只對這些股票回測,會人為地拉高策略的勝率和報酬,因為你排除了所有最終消滅的輸家。

台股現實:台灣每年都有若干股票下市(財務危機、主動申請下市、SPAC 合併等)。2015 年台灣上市公司家數約 860 家,如果只用 2024 年現有的 970 家公司去做 2015 年的回測,就已經排除了那些在這 9 年間倒閉的公司。

修正方式:使用包含已下市股票的完整歷史股票池,或者至少只對大型績優股(倒閉風險較低)進行回測,並在解讀結果時承認此限制。

陷阱三:滑價與交易成本未計入

定義:真實交易中,進出場的實際成交價通常與你預期的「訊號觸發價」有所差距(稱為滑價),加上手續費和交易稅,實際報酬低於回測結果。

台股交易成本(以日線交易為例):

  • 買進手續費:約 0.1425%(券商可打折至 0.05% 左右)
  • 賣出手續費:約 0.1425%
  • 證券交易稅(賣出時):0.3%
  • 單次來回總成本:約 0.6%(含折扣手續費)

如果你的策略每筆平均獲利只有 2%,交易成本就佔了 30%,實際獲利大幅縮水。短線策略(幾天就進出一次)受交易成本影響最大。

修正方式:在回測程式中明確加入交易成本,包括手續費、交易稅,以及每筆設定 0.1-0.3% 的滑價假設。

陷阱四:流動性假設問題

定義:回測中假設你能在任何時間以任何數量成交,但現實中小型股的流動性有限,大量買進會推高股價,大量賣出會壓低股價。

台股情境:某支市值 10 億元的小型股,日成交量只有 500 萬元。如果你的策略要投入 200 萬元買這支股票,相當於買進該股四成的日成交量,市場衝擊成本極高,回測中的「漂亮進場價」根本無法在現實中實現。

修正方式:限制策略只交易流動性足夠的股票(例如每日成交金額 > 5,000 萬元),或者設定每筆投入金額不超過標的股日均成交量的 10%。

陷阱五:過度配適歷史(Over-fitting,過擬合)

這是最嚴重也最常見的問題,重要性足以單獨成文(本系列下一篇將詳述),在此簡要介紹:

當你對策略參數反覆調整,讓它完美「符合」歷史資料,你可能只是在「描述過去」而不是「預測未來」。例如,你不斷嘗試各種均線組合(3/15、5/20、8/21、10/30……),直到找到在歷史資料上表現最好的那組,但這組參數可能只是巧合地「記住」了歷史,在未來的新資料上效果可能很差。

陷阱六:心理執行差距(Implementation Gap)

即使回測完美,真實交易中你還面臨一個無法在電腦上模擬的挑戰:你的心理狀態

回測中的「停損」是自動執行的,但真實交易中,當你看著股票跌到停損點時,「再等一下」的念頭會無比強烈。這種差異會讓真實交易的平均虧損遠大於回測中的數字,嚴重侵蝕期望值。


如何進行有效的前向驗證(Walk-Forward Testing)

比單純的樣本外測試更嚴謹的做法是滾動式前向驗證(Walk-Forward Optimization)

  1. 取前 3 年資料(樣本內)優化策略參數,找出最佳設定
  2. 用接下來 1 年資料(樣本外)驗證這組參數的真實表現
  3. 滾動往前一年,重複步驟 1-2
  4. 比較每段樣本外期間的表現,評估策略的穩健性

這個方法能更真實地模擬「邊學邊用」的真實投資過程,也能發現策略是否只在特定市場環境(如大多頭)才有效。


台股回測的實用工具推薦

免費工具

  • TradingView(免費版):圖表回測,Pine Script 可寫自動策略,適合技術分析策略
  • Python + yfinance + pandas:免費抓取台股歷史資料,程式化回測
  • FinLab(台灣,有免費方案):專為台股設計的回測平台,內建財報資料

付費工具

  • Tejwin(台灣經濟新報):學術級資料,含已下市股、財報資料,適合嚴謹研究
  • FinMind(台灣開源,部分付費):API 形式提供台股資料,CP 值高
  • CMoney:散戶常用,有視覺化回測功能,資料較完整

結語:回測是起點,不是終點

回測是把交易從「憑感覺」提升到「有依據」的重要工具,但它永遠只是決策的參考,而不是保證獲利的保證書

一個好的回測告訴你:「在過去的歷史條件下,這個策略大概能賺多少、風險大約多大。」但未來的市場環境永遠和過去不完全相同——新的監管政策、市場結構變化、流動性條件改變,都可能讓一個「完美」的回測策略在現實中失靈。

因此,正確的態度是:用嚴謹的回測排除明顯不可行的策略,再以小部位真實驗證,觀察實際績效是否接近回測預期。只有當模擬與現實相符,才算是真正通過考驗、值得加大規模的策略。在台股市場中,這份嚴謹的態度,是散戶投資人與專業機構之間最核心的差距之一。