
回測是將交易規則套用至歷史資料,觀察策略過去表現的方法。本文將從回測步驟、回測指標談起,說明股市回測的應用情境,並提供股票回測工具推薦方向、解析回測常見問題,協助投資人更精準評估策略風險。
Table of Contents
面對市場資訊,投資人很容易受到近期漲跌或個人經驗影響。回測的作用,是先把想法改寫成可執行、可重複的規則,再用同一套標準檢驗歷史結果。它不能預測未來,卻能幫助研究者看清策略曾經如何獲利、在什麼環境下失效,以及可能承受多大的風險。
回測(Backtesting,也可稱回溯測試)指的是把預先定義的交易策略套用到歷史市場資料中,模擬當時若依規則進出場,可能產生的結果。簡單來說,就是「用過去的資料驗證現在想使用的方法是否可行」。
只要是在金融市場交易商品,都可以使用回測。股票回測意思指的就是先設定選股條件、買賣時點、持有期間、資金配置與再平衡頻率,再以歷史股價、成交量、財務資料或事件資料進行模擬。例如「每季買進低本益比且獲利成長的股票,持有 3 個月後重新篩選」,就是可以回測的規則。
重要的是,歷史資料只能呈現過去在特定假設下的情況,無法完整複製未來,因此回測的結果不能視為獲利承諾,而是確認策略邏輯能否被明確執行、穩定性的研究證據。
無論是金融機構、量化研究團隊或個人投資人,在投入資金前,都應先透過回測,用歷史數據檢驗策略,減少單憑直覺做決策的情況。回測的價值可歸納為以下 6 點:
可靠的回測不是把價格資料丟進系統後等待答案,而是從問題定義、資料處理到結果解讀逐步建立。以下帶你認識 3 個回測步驟,三者彼此相連,若第一步的規則含糊或第二步的資料有誤,第三步得到再漂亮的數字也將缺乏參考價值。

先把投資想法轉換成程式或平台能判斷的條件,明確定義標的範圍、進場與出場訊號、持有期間、部位大小、再平衡頻率、停損停利及風險限制。以台股為例,還要決定是否排除流動性不足的股票、如何處理漲跌停與停牌,以及同一天出現多個訊號時如何配置資金。這些條件越清楚,回測結果才越能被重複驗證。
以 TEJ 的 TQuant Lab 回測系統來說,內建 Python 套件「Zipline-tej」的事件驅動型回測可高度模擬真實市場進出的情況,提供多樣的動態與靜態滑價模型,諸如固定的點滑價成本、成交量驅動的動態滑價成本。TQuant Lab 內建台灣市場獨有的手續費成本模型以及成交訂單遞延機制,搭配 TEJ 資料庫提供的交易日註記,避免出現漲跌停還能順利買進的回測前視偏誤。
延伸閱讀:TEJ TQuant Lab回測系統|建立你的交易回測系統,打造專屬投資研究金鑰
接著,你可以將策略套用至過去市場資料,模擬不同時間點執行交易的結果。測試期間應足夠長,並盡量涵蓋多頭、空頭、盤整與高波動等不同市場環境,避免單一行情造成判斷偏誤。除了股價與成交量,使用財務指標時更要確認資料在當時是否已公開,而不是直接使用現在資料庫裡的最終版本;若某季財報尚未公告就提前拿來選股,就會產生前視偏誤。
這也是 TEJ 資料的價值。其 Point-in-Time(PIT)架構保留資料版本與公告時間,使每個回測日期只使用當時可得資訊;再搭配 TQuant Lab回測系統 的策略參數、交易成本與市場限制設定,可讓模擬條件更貼近現實,避免回測建立在過度理想化的假設上。
為避免同一份資料同時用來設計與證明策略,可將期間分成樣本內與樣本外。前者用來建立規則,後者用來檢查未參與調整的資料是否仍有一致表現。搭配 TEJ 的 PIT 資料與一致化研究環境,能減少資料版本、欄位定義或工具切換造成的落差,使不同策略結果更容易比較與追溯。
延伸閱讀:拒絕「偷看答案」的回測:TEJ Point-in-Time 投資用財務資料庫
想了解 Point-in-Time 資料如何降低回測偏誤?
完成模擬後,不要只比較最終資產,應同時查看累積報酬、年化報酬、波動、最大回撤等指標,要與合適的基準比較,才能判斷超額報酬是否足以補償額外風險與交易成本。TEJ TQuant Lab 回測系統可透過 Pythoni套件-Pyfolio工具,視覺化呈現策略成果與交易紀錄,並支援因子檢測所需的分組報酬、資訊係數(IC)、週轉率及期間走勢等分析,方便評估策略表現與風險,找出可優化之處,作為後續投資決策參考。
最後仍要進行敏感度與壓力測試,例如將持有期從 20 天改成 18 或 22 天、提高交易成本、延後一天成交,或改用不同樣本期間。合理策略通常不會因參數小幅變動,就從獲利大幅翻轉為虧損;若結果只在單一精確參數成立,就應視為警訊。
不同回測指標回答的問題不同:報酬率說明成長速度,最大回撤呈現曾經歷的壓力,夏普比率比較風險調整後效率,勝率與盈虧比則揭示每筆交易的結構。閱讀報告時應綜合判斷,不能只挑對策略最有利的數字。

年化報酬率指的是將策略測試期間的總報酬換算為平均每年的收益表現,可用於判斷策略長期累積資產的能力。簡單來說,就是將投資結果換算成「平均每年成長多少」。例如投入 100 萬元,2 年後變成 121 萬元,代表平均每年的年化報酬率為 10%,而不是將總報酬率 21% 直接除以 2。
要注意的是,年化報酬率只是一個長期平均值,不代表每年都能穩定賺到相同的比例。策略可能第一年賺錢、第二年虧損,最後算出的年化報酬率仍是正數。因此,不能只看平均賺多少,還要搭配最大回撤等指標,了解過程中可能出現多大的虧損。
最大回撤可以理解成:投資金額從歷史最高點往下跌時,最嚴重曾經虧損多少。假設資產從 100 萬元漲到 120 萬,之後跌到 84 萬元,代表從最高點回落 36 萬元,最大回撤就是 30%。
這個指標可以幫助投資人判斷,自己是否承受得住策略最難熬的時期。除了下跌幅度,也要看花多久才能回到原本高點。例如兩個策略的最大回撤都是 20%,但一個 3 個月後就恢復,另一個過了 3 年仍未回到高點,實際持有感受會有很大差異。
夏普比率用來衡量「為了得到這些報酬,承擔的價格波動是否值得」。如果兩個策略的年化報酬率相同,但其中一個漲跌較小、表現較穩定,它的夏普比率通常會比較高。
簡單來說,夏普比率越高,代表策略在承擔相同波動的情況下,取得的報酬越多。不過,它不能呈現所有風險。例如某個策略平時看起來很穩定,偶爾卻出現一次巨大虧損,單看夏普比率可能看不出來,因此仍要搭配最大回撤與每筆交易損益一起判斷。
勝率是賺錢的交易次數占所有交易次數的比例。例如進行 100 次交易,其中 60 次賺錢,勝率就是 60%。這項指標容易理解,但勝率高不代表最後一定賺得比較多。
假設一個策略 9 次各賺 1,000 元,卻有 1 次虧損 2 萬元,即使勝率高達 90%,整體仍然虧錢。相反地,有些策略雖然成功次數較少,卻能在抓到行情時賺取較大的報酬。因此,判斷策略表現時,還要一起查看盈虧比、交易次數與連續虧損情況。
盈虧比是比較「平均每次賺多少」與「平均每次賠多少」。例如平均獲利為 2,000 元、平均虧損為 1,000 元,盈虧比就是 2:1,代表平均賺一次的金額是賠一次的 2 倍。
盈虧比需要和勝率一起看。勝率較低的策略,如果每次賺錢的金額明顯高於虧損金額,整體仍可能獲利;勝率很高的策略,如果每次只賺一點、虧損時卻賠很多,最後也可能虧錢。此外,還要檢查績效是否只靠少數幾筆大獲利撐起來,以免誤判策略的穩定性。
| 回測指標 | 白話意思 | 判讀重點 |
| 年化報酬率(CAGR) | 平均一年賺多少 | 越高代表長期成長越快,但不表示每年都能賺到相同比例 |
| 最大回撤(MDD) | 從最高點最多曾跌多少 | 數值越小通常越好,也要觀察花多久才能回到原本高點 |
| 夏普比率(Sharpe Ratio) | 承擔這些波動,換到的報酬划不划算 | 在相同條件下,數值越高,通常代表風險調整後的表現越好 |
| 勝率(Win Rate) | 每 100 次交易有幾次賺錢 | 勝率高不代表一定獲利,必須搭配盈虧比一起判斷 |
| 盈虧比(RR) | 平均賺一次和賠一次差多少 | 數值越高,代表平均獲利相對較大,但仍要確認是否只靠少數交易支撐績效 |
股市回測的應用範圍相當廣泛,可以用來驗證個股選股條件、比較不同資產配置方式、測試交易策略,也能觀察財報公布、除權息或政策消息等事件對股價的影響。不同情境需要使用相應的歷史資料與評估指標,以下將分別說明 4 種常見應用方式。
個股選股策略回測,是透過歷史股價、財務指標、籌碼資料或技術訊號,檢驗特定選股條件過去是否能穩定找到表現較好的股票。常見的測試方向包括低本益比、高股息、營收成長、獲利能力、股價動能及成交量變化等。
例如,投資人想知道「每季挑選營收成長且本益比較低的 10 檔股票,持有 3 個月後重新選股」是否有效,就能將這套規則套用到不同年份,觀察組合的報酬率、最大回撤、勝率及換手率。
進行選股回測時,除了比較策略與大盤的表現,也要納入過去已下市或被併購的公司,並確認財務資料在當時是否已經公布,避免因存活者偏差或前視偏誤,讓回測結果看起來比實際情況更好。
大盤與資產配置回測,是將股票、ETF、債券、現金或其他資產依不同比例組成投資組合,再套用歷史行情,觀察各種配置方式的報酬與風險。
例如,投資人可以比較「全部投入股票」與「60% 股票、40% 債券」兩種配置,了解它們在多頭、空頭與市場劇烈波動期間的差異。也能進一步測試每月、每季或每年再平衡,是否有助於控制風險或維持原定配置。
這類回測不能只看哪個組合賺得最多,還要比較波動度、最大回撤與回復時間。若某個組合的報酬略低,卻能明顯減少下跌幅度,對重視資產穩定性或長期規劃的投資人來說,可能反而更適合。
交易策略回測是先設定明確的買進、賣出及持有條件,再透過歷史資料模擬每次交易,檢驗策略在不同市場環境下的勝率、報酬與最大回撤。
例如,投資人可以測試「短期均線向上突破長期均線時買進,向下跌破時賣出」,或「股價突破近期高點後買進,跌破停損價格時出場」等規則。只要條件能被清楚量化,就可以透過回測比較不同參數與持有期間的結果。
交易策略回測特別需要考慮手續費、交易稅、買賣價差與滑價。如果策略頻繁進出,即使回測中的毛報酬看起來不錯,扣除交易成本後仍可能失去優勢。也要避免假設每次都能以理想價格成交,否則回測結果容易與實際交易產生落差。
事件驅動型投資回測,是針對特定事件發生前後的股價變化進行分析,了解市場是否會出現較一致的反應。常見事件包括除權息、財報公布、法說會、庫藏股、併購消息及政策調整等。
例如,研究者可以觀察公司公布優於預期的財報後,股價在接下來 5 天、20 天或 60 天的平均表現,並與未發生相同事件的股票比較,判斷市場反應是否具有規律。
事件日期的認定是這類回測的重要環節。若消息在收盤後才公布,就不能假設投資人能在當天收盤前完成交易;財報資料也應以實際公告時間為準,而不是直接使用資料所屬季度。只有使用當時真正可取得的資訊,才能避免回測提前「看到答案」。
回測常見問題往往不在公式,而在資料與假設。績效曲線越漂亮,越需要追問資料是否可在當時取得、交易是否真的能成交,以及規則是否只是在記住歷史。以下整理常見迷思,協助你判斷報告可信度。
不代表。回測只說明策略在指定資料、期間和假設下的歷史表現。市場制度、參與者、流動性與價格關係都會改變,過去有效的因子也可能因擁擠或環境轉換而失效。較合理的用法,是把回測當成篩選與理解策略的工具,再配合樣本外測試、模擬交易與風險控管。
過度擬合是策略過度貼合歷史雜訊,像是背下考古題答案,換一份資料就失效。常見跡象包括參數過多、只有單一數值有效、反覆測試後只呈現最佳版本,以及樣本外績效明顯惡化。可透過簡化規則、保留測試集、檢查參數敏感度與限制反覆嘗試次數降低風險。
會高估可實現報酬,尤其是短線、高週轉或交易冷門標的的策略。歷史報價不等於實際成交價,大額委託也可能影響市場。回測應加入佣金、稅費、買賣價差與合理滑價,並測試成本提高後的結果;若微幅成本就讓策略失去優勢,實盤可行性通常有限。
存活者偏差是研究樣本只包含目前仍存在的公司,漏掉歷史上已下市、破產或被併購的標的。這些公司往往表現較差,排除後可能讓策略看起來更穩健。因此,股票回測應使用當時的市場名單與完整公司歷史,而不是用今天的成分股回推過去。
前視偏差是回測使用了當時尚未公開的資訊。財報有資料期間、公告日與可能的更正版本;除權息也有董事會決議、股東會與實際發放等不同日期。若只依資料所屬季別或最終版本回填,模型可能提前知道答案。Point-in-Time 資料會保留版本與可得時間,有助於還原歷史當下。
兩者常被交替使用,但範圍可略有不同。股票回測通常聚焦個股、選股條件或股票交易策略;股市回測可以廣義涵蓋大盤、產業、ETF、資產配置及市場事件。實際研究時,應直接說明標的範圍、資料頻率與基準,避免只靠名稱推測方法。
不建議只憑一次回測直接投入。可先進行樣本外驗證、不同期間壓力測試與模擬交易,確認訊號、資料更新和下單流程均能正常運作。若進入實盤,也應從可承受的小部位開始,設定風險上限與停止條件,並持續比較實際成交和回測假設的差距。
想進一步建立可追溯的量化研究流程?
選擇股票回測網站或工具時,不能只看平台能否算出報酬率,還要確認歷史資料是否完整、資料在當時是否已經公開,以及回測條件能否貼近真實市場。若資料版本或公告時間有誤,即使策略績效再漂亮,也可能只是提前「看到答案」的結果。
TQuant Lab 一站式的量化研究平台,提供全台最完整的 PIT 量化資料庫和資料歸納工具(TEJ Tool API),搭配專業的因子分析工具、全方面的策略回測引擎和詳細的可視化報表呈現,通通一站式解決,劍指成為使用者在量化投資之路上的一大利器。
TQuant Lab 具備 3 大核心優勢:
如果你希望回測不只停留在策略試算,而是進一步建立可重複驗證、能追溯資料來源的投資研究流程,TQuant Lab 可從資料取得、策略建構、績效分析一路串接,減少自行整理資料與整合不同工具的時間,透過一致的資料與回測環境進行驗證,讓回測結果更具參考價值。
建立你的交易回測系統
打造專屬投資研究金鑰