回測是什麼?回測報告怎麼看

Blave Agent 回測輸出的八個數字——各自代表什麼,哪些真正值得信賴。

最後更新 2026-09
重點整理
  • 回測是把一套交易規則套回歷史資料跑一遍,先看它過去會怎麼表現,再決定要不要投真錢。
  • 報酬要跟風險一起看:範例策略 btc_sma_cross 總報酬 +145.8%、買入持有 +68.2%,同一段期間最大回撤 −42.6%。
  • 這支範例沒有設回測結束日,每跑一次都跑到當天,上面是其中一次執行的快照——你現在自己跑會拿到不一樣的數字。
  • Sharpe 是每承擔一單位總風險換到多少報酬:0.5–1.0 對趨勢策略可接受;超過 1.5 而回測期不到兩年,要帶著懷疑看。
  • 成本會把薄的優勢吃光:同一支策略四年手續費付掉本金的 22%,Omega 只有 1.04。

你手上有一份回測報告,總報酬 +145.8%,而你不知道這個數字該讓你興奮還是警戒。回測是把一套交易規則套回歷史資料跑一遍,看它過去會怎麼表現;它給你的不是「會賺多少」的預測,而是一組可以用來判斷的數字:報酬、風險、成本。判斷的方法是三個一起看,不是只看第一個。

用一個真實範例來建立認知

btc_sma_cross 策略(BTCUSDT 1h,SMA45/SMA100,從 2022-01-01 起)的回測結果如下。這支範例沒有設回測結束日,每跑一次都跑到當天,所以下面是其中一次執行的快照,你現在自己跑會拿到不一樣的數字:

總報酬
+145.8%
Benchmark(買入持有)
+68.2%
最大回撤
−42.6%
Sharpe Ratio
0.77
Sortino Ratio
0.72
Omega Ratio
1.04

這個策略的報酬是買入持有的兩倍多——但期間也出現了 −42.6% 的最大回撤。能不能接受完全取決於你的風險承受度,以下的指標說明會幫你思考清楚。報告還有兩個成本相關的數字——Total Fees Paid(這個策略 4 年付掉本金的 22%)和交易筆數(Trades)——會在下面 Omega 的段落再次登場。

這是 Blave Agent 回測引擎跑出來的真實範例。如果你還沒有自己的策略、不知道從哪裡開始,不用從零寫程式做這件事——官方策略庫裡的策略每一個都附真實回測,你可以先看數字,再決定要不要部署。

Sharpe Ratio — 風險調整後報酬

Sharpe ratio = 年化報酬 ÷ 年化波動度(上行和下行都算)。它回答的問題是:每承擔一單位總風險,能換到多少報酬?

Sharpe解讀
< 0風險調整後虧錢
0 – 0.5偏弱,幾乎無法補償風險
0.5 – 1.0趨勢策略可接受(SMA 範例落在這裡)
1.0 – 1.5好
> 1.5強——若回測期短,要帶著懷疑去看
短期回測出現高 Sharpe 是紅旗。 6 個月回測顯示 Sharpe 3.0,實際上只有不到 130 個資料點,那是雜訊,不是訊號。超過 1.5 的 Sharpe 至少需要 2 年以上才能信任。

Sortino Ratio — 只懲罰下行風險

Sortino ratio 和 Sharpe 類似,但只把下行波動算作風險,上漲的波動不罰。它回答:每承擔一單位壞的波動,能換到多少報酬?

SMA Cross 的 Sortino(0.72)和 Sharpe(0.77)相近,代表這個策略的波動是對稱的。如果 Sortino 遠高於 Sharpe,代表策略有大幅獲利但回撤受控——這是更理想的分布。

Sortino 與 Sharpe 的關係意義
Sortino ≈ Sharpe報酬對稱,上行和下行波動相近
Sortino >> Sharpe報酬正偏——大幅獲利、小幅虧損(理想)
Sortino << Sharpe報酬負偏——小幅獲利、偶爾大幅虧損(危險)

最大回撤(MDD)— 最糟的那個時刻

最大回撤是整個回測期間,資產淨值從高點到低點最大的跌幅。淨值從 $100,000 跌到 $57,380 再回升,MDD 就是 −42.6%。

MDD 重要,是因為它衡量的是你需要承受多大的痛苦才能撐過去。現實中大多數人會在回升前就停掉策略。

永遠不要投入超過你心理上能承受虧掉兩次的金額。
如果 MDD 是 −42.6%,投入 $100 萬表示你可能面臨 $42 萬的帳面虧損。如果那會讓你停掉策略,就少投一點。

Omega Ratio — 完整的報酬分布

Omega ratio = 超過門檻(通常為 0)的總報酬 ÷ 低於門檻的總虧損。不像 Sharpe 只看均值和標準差,Omega 捕捉完整的報酬分布。

Omega解讀
< 1.0整體虧損
1.0 – 1.1微利——扣掉真實成本後很容易轉虧
1.1 – 1.3扎實
> 1.5強——或可能過度擬合

SMA Cross 的 Omega = 1.04,只比 1.0 略高。加上四年共支付了本金 22% 的手續費,真實世界的優勢相當薄。這對趨勢追蹤策略來說是正常的——這類策略的品質主要看 Sharpe 和 Sortino,Omega 偏低不代表策略有問題。

回測最常見的五個錯誤

1

前視偏差(Lookahead Bias): 在決策時用了當時不存在的資料。Blave Agent 預設用下一根開盤執行來防止這個問題(例外是策略自己標記 exec_at_close 的那幾根 K 棒——例如台指期換月結算,會在當根收盤成交),但自訂指標計算還是可能引入——例如用整段歷史資料的平均值來計算 Z-score。

2

忽略熱身期(Warm-up Period): SMA(100) 這樣的指標需要 100 根 K 棒才有意義。前 100 根應該排除在績效計算之外。Blave Agent 的 WARMUP 參數會自動處理這件事。

3

在全部資料上最佳化: 如果你用所有可用資料掃描參數,再回頭用同一段資料報告績效,你報告的是訓練誤差,不是泛化能力。至少留 20–30% 的資料做樣本外驗證。(在 Blave 上實際怎麼做,見〈樣本外驗證怎麼做〉。)

4

忽略手續費: btc_sma_cross 四年下來支付了本金 22% 的手續費。頻率更高的策略,手續費很容易吃掉所有 alpha。費率要照你真的要下的市場填:FEE = 0.0005 對應的是 Binance U 本位合約 VIP0 的 taker 0.05%(maker 是 0.02%);Binance 現貨最低階的 maker、taker 都是 0.1%,現貨策略照 0.0005 寫就是低估成本。

5

把總報酬和風險調整後報酬混為一談: MDD −80%、報酬 200% 的策略,不比 MDD −15%、報酬 80% 的策略「更好」。前者大多數真實用戶會在最低點附近恐慌出場。

這些數字不會告訴你的事

  • 這幾個數字全部是從同一段歷史算出來的。期間換了,數字就換——上面那組是一次執行的快照,不是這支策略的固定成績。
  • 期間越短,每個數字的不確定性越大。6 個月的 Sharpe 3.0 是雜訊不是訊號;同樣的懷疑也要用在 Sortino 和 Omega 上,它們吃的是同一段報酬序列。
  • 把上面五個錯誤全部避開,你得到的是一份誠實的回測,不是一個會賺錢的策略。誠實之後的下一個問題是「這個成績是不是運氣」,那要另外驗。