回測:驗證你策略的完整指南
一個在理論上看似出色的策略,可能在實盤中崩潰。回測能將好想法從幻覺中分離出來,前提是必須嚴謹地進行。本指南為你提供完整方法:資料選擇、關鍵指標、需避免的陷阱以及能夠帶來差異的工具。

一個在理論上看似出色的策略,可能在實盤中崩潰。回測能將好想法從幻覺中分離出來,前提是必須嚴謹地進行。本指南為你提供完整方法:資料選擇、關鍵指標、需避免的陷阱以及能夠帶來差異的工具。
一句話總結
回測是將策略應用於歷史資料,以估計其穩健性的過程。做得好,它能揭示真實回撤、風險/收益比,以及策略失效的條件。做得糟,它會產出在歷史上"完美",但在實盤中撐不過一個月的策略。兩者的差別,取決於大多數業餘交易者忽視的5到6條方法論原則。
部署前為何必須回測
三個根本原因:
- 過濾掉無價值的想法。 一個在10年中產生60%回撤的策略不具備可行性,無論收益率多高。回測在5分鐘內就能揭示這一點。
- 校準資金管理。 瞭解交易的真實分佈(平均盈利、平均虧損、連續虧損長度)可以讓你正確地確定倉位大小。
- 建立必要的信心。 在沒有看過策略歷史表現的情況下交易,會導致你在首次回撤時放棄。嚴謹的回測提供堅持下去所需的背景。
回測並不保證未來表現。恰恰相反:它是過濾錯誤"好想法"的篩子。一個在回測中失敗的策略,在實盤中成功的可能性極低。
一份穩健回測的組成部分
資料
| 資料型別 | 典型粒度 | 應用場景 |
|---|---|---|
| OHLC日線 | 每日1根K線 | 波段、持倉交易 |
| OHLC日內 | 1分鐘到1小時 | 日內交易 |
| Tick資料 | 每筆成交 | 高頻、剝頭皮 |
| 訂單簿 | 盤口快照 | 做市、套利 |
對大多數交易者而言,乾淨的日線或H1資料已足夠。可靠來源:Bloomberg、Refinitiv、Polygon.io、Alpaca、EODHD,以及券商自身(Interactive Brokers、MetaTrader)。避免使用從大眾網站爬取的資料,這類資料往往不完整。
三項預處理不可或缺:
- 對股票的股息和拆分進行調整。
- 在不進行粗糙插值的情況下填補缺口(節假日、停牌)。
- 檢查異常值(從未存在過的50%影線)。
規則
要無歧義地記錄每條規則。"RSI低時買入"無法執行。"日線RSI 14跌破30時收盤買入,突破70時賣出"才可測試。
四類規則:
- 入場:帶有水平和時機的精確條件。
- 出場:止損、止盈、條件出場。
- 資金管理:倉位大小、單筆風險、最大並行數。
- 過濾器:趨勢、波動率、時段、日期、新聞。
成本
這是最常被忽視的元素。一個每年100筆交易的策略,若回測不計入成本,會高估5%到15%的表現。
需要納入的構成部分:
- 佣金:每筆交易0.5至5美元,因券商和品種而異。
- 點差:主要外匯1-2點,流動性高的期貨1個tick,小盤股可高達0.5%。
- 滑點:日內通常0.5至2個tick,新聞觸發的止損會更多。
- 隔夜融資費:槓桿CFD和加密貨幣。
關鍵指標
毛收益率並不夠。六個指標用於誠實的評估:
| 指標 | 定義 | 最低可接受門檻 |
|---|---|---|
| 夏普比率 | 收益 / 波動率(年化) | > 1.0(理想 > 1.5) |
| 最大回撤 | 期間最壞累積虧損 | 通常 < 20-25% |
| 卡瑪比率 | 年化收益 / 最大回撤 | > 0.5(理想 > 1) |
| 勝率 | 盈利交易% | 視R/R而定,通常35-60% |
| 平均R/R | 平均盈利 / 平均虧損 | 通常 > 1.5 |
| 盈虧比 | 盈利總和 / 虧損總和 | > 1.5(理想 > 2) |
如果平均R/R為3:1,30%勝率的策略也可以非常盈利。反過來,R/R為0.3:1的80%勝率策略是危險的(一筆差交易就能毀掉一長串連勝)。
需要警惕的陷阱
1. 過擬合
這是最陰險的陷阱。你測試了200種引數組合,留下最好的那個,策略在歷史上顯示出夏普3.5。三個月後實盤虧損15%。
症狀:
- 在最佳化期內表現出色,其他時期平庸。
- 對引數極度敏感:EMA 21有效,EMA 22卻炸。
- 可調引數數量 > 4-5個。
- 表現好到不真實(簡單策略夏普 > 3)。
應對方法:
- 分割資料:70%訓練,30%驗證。在前者上最佳化,在後者上驗證。
- 滾動前向分析:在滑動視窗上最佳化,在下一段上驗證。
- 優先考慮簡潔:最多2-3個引數。
- 在多個標的上測試:在EUR/USD上有效的策略,也必須能撐住GBP/USD。
2. 倖存者偏差
在當前的標普500成分上回測會忽略已被剔除的公司(常因破產)。結果會高估當時的實際表現。對個股策略,使用歷史成分庫(Compustat、CRSP)。
3. 前視偏差
使用決策時刻無法獲得的資訊。常見示例:在當前K線尚未結束時,就在該K線上計算移動平均。這種偏差會人為抬高表現。
4. 不具代表性的市場環境
僅在2017-2021年上回測會忽視一個持續上漲的環境。到2022年,許多此類"無敵"策略爆掉了。至少覆蓋一個完整週期(包含2008或2020年在內的10-15年)。
一個僅覆蓋近期牛市的回測不是回測,而是幻覺。一項測試的價值在於揭示策略在市場對你不利時的表現。
2026年可用的工具
| 工具 | 優勢 | 劣勢 | 價格 |
|---|---|---|---|
| TradingView(Pine Script) | 龐大社群,上手快 | 免費版有回測時長限制 | 免費 + 15-60美元/月 |
| MetaTrader(MQL4/5) | 外匯標準,券商免費 | 專有語言,除錯痛苦 | 免費 |
| Python(Backtrader、vectorbt、zipline) | 完全靈活,資料科學生態 | 學習曲線,基礎設施 | 免費 + 資料費用 |
| QuantConnect | 雲端,多資產,龐大資料宇宙 | 高階功能需訂閱 | 免費 + 25-200美元/月 |
| Obside | 無需程式碼,20年回測 < 1分鐘,AI副駕 | 面向自主-系統化混合策略設計 | 免費增值 |
選擇取決於你的技術水平和目標。追求速度和易用性:Obside或TradingView。追求最大靈活性:配合vectorbt或Backtrader的Python。
三種方式:手動、程式碼化、自動化
手動回測。 你在歷史圖表上手工應用規則。對理解你的策略有教學價值。對認真的驗證而言太慢且易受認知偏差影響(通常3年資料需50-100小時)。
程式碼化回測。 你編寫實現規則的程式碼(Python、Pine、MQL)。精確、可重現,但需要開發者技能。簡單策略預計3-15小時。
AI輔助回測。 你用自然語言描述策略,AI生成程式碼並執行測試。總耗時數分鐘。這是自2024年以來隨著先進語言模型而普及的方法。
從回測到上線
經過驗證的回測是必要條件,而非充分條件。部署前還有四個步驟:
- 模擬交易:30-90天的實時模擬,以驗證執行延遲並確認表現。
- 滾動前向實盤:用象徵性資金(賬戶的1-5%)執行1-3個月。
- 漸進放量:若表現符合預期,每30天將規模翻倍。
- 持續監控:出現異常回撤或與預期偏離時發出告警。
這種遞進方式可降低令人不快的意外風險(實際滑點比預期更糟、券商延遲、回測未覆蓋的事件)。
用Obside在幾分鐘內測試你的策略
傳統回測要花數天:資料採集、寫程式碼、除錯、分析。藉助Obside,你用自然語言描述策略,在20年多資產歷史資料上啟動回測,在1分鐘內得到夏普、回撤與穩健性。AI副駕解釋結果並給出情境化的改進建議。免費建立你的Obside賬戶,今晚就驗證你的第一個策略。
僅供教育用途。不構成投資建議。交易存在風險,包括可能的本金損失。
常見問題
可靠回測最少需要多少年資料?
理想情況下10到15年,至少包含一次重大危機(2008、2020)。5年可以用於快速概念驗證,但在此範圍內不要得出強結論。日內策略所需絕對年數較少,但需要更細的資料(分鐘或tick粒度)。
回測結果好就保證策略能行嗎?
不能。回測過濾掉差想法並提供風險框架,但不是保證。即便是歷史上最優的策略,如果市場體制改變(長期低波動、央行大規模干預等),也可能失敗。
我可以最佳化多少個引數?
在能上線的策略中最多2-4個。超過這個數量,過擬合風險就變得嚴重。如果你的策略需要7個"最佳化過"的引數,它很可能在歷史上被曲線擬合。
是否需要在多個標的上回測?
需要,這是穩健性測試中最好的之一。一個只在EUR/USD上有效卻在GBP/USD上失敗的策略,很可能被曲線擬合。真正的策略至少能在3-5個同類品種上撐住。
滾動前向還是經典回測?
只要可行就選滾動前向。你在一個滑動視窗(例如12個月)上最佳化,在接下來的一段(3個月)上驗證,然後向前滑動並重復。這更貼近週期性調整策略的交易者的現實。
回測對期權也適用嗎?
適用,但有複雜性:正確建模隱含波動率、價差上的滑點、到期。對此類情境,專業平臺(CBOE LiveVol、OptionsAlpha)優於通用工具。