4 個數字可能道出一個令人不安的狀況:Walk-Forward Sharpe 為 1.4、歷史交易 312 筆、模擬交易 46 筆,而模擬交易與回測的成交價格相差 18 個基點。Sharpe 值最吸睛,但在模擬交易歷史還不夠長、無法判斷績效之前,18 個基點的差距或許更能解釋為什麼策略看起來不太一樣。
Walk-Forward 測試要回答的是:研究流程能否運用過去資料選出策略,並在之後的資料上評估它。模擬交易要回答的則是:正在運作的系統,使用目前的資料、時鐘、下單邏輯與成交條件時,表現是否和受測流程一致。這兩個問題彼此相關,但第一個問題的答案不會自動回答第二個。
Walk-Forward 驗證究竟能證明什麼?
假設你用 6 個月資料訓練或挑選策略,再用接下來 1 個月進行評估。接著往前移動時間窗,重複這個流程。如果每個測試月份都沒有納入對應的策略挑選流程,這項測試就能提供證據,說明策略在一系列歷史條件下的表現。
但它無法證明模擬交易會重現相同的決策或成交。歷史測試可能使用已完成的 K 線、固定的費用表,以及簡化的市價單模型;實際運行的模擬流程則接收陸續到達的資料,並透過另一套流程送出模擬委託。一邊可能設計完善,另一邊卻仍有不一致之處。
因此,模擬交易有 46 筆,Walk-Forward 樣本有 312 筆,光憑這點還不能下結論。請檢查比較區間、訊號頻率、區間起訖時的未平倉部位,以及兩邊是否使用相同的交易筆數定義。只跑 6 週的模擬交易,不可能在交易筆數上追上 1 年的滾動測試。
為什麼成交差距特別值得注意?
在解讀模擬交易的權益曲線之前,應先拆解平均 18 個基點的差距。這是用回測假設的成交價和模擬器的成交價相比,還是用決策當下的中間價和模擬成交價相比?兩種量測反映的事情不同。請分別記錄決策價格、委託到達價格、模擬成交價、費用,以及任何資金費用。
| 觀察到的差異 | 優先檢查項目 | 重要原因 |
|---|---|---|
| 模擬交易筆數較少 | 訊號時間戳記與觸發資格規則 | 輸入資料缺漏或延遲可能導致系統不做決策 |
| 交易相同,成交價格較差 | 委託類型、價差、衝擊成本與費率等級 | 回測可能假設了成本較低的執行方式 |
| 部位大小不同 | 現金、合約乘數與進位方式 | 細微的單位不一致會隨委託逐漸累積 |
| 重新啟動後出現偏差 | 還原後的部位與待成交委託 | 模擬交易流程恢復時,狀態可能不同 |
例如,回測若假設在下一根 K 線開盤時買進,對流動性高的商品來說,結果可能接近模擬市價單。但如果模擬委託在價格急漲或急跌後才送達,差距就同時包含時機與市場波動的影響,以及執行成本。把全部 18 個基點都稱為「滑價」,會掩蓋真正原因。
如何比較模擬交易與 Walk-Forward 測試?
先比決策,再比委託,最後比成交。對每一筆模擬決策,使用相同的策略版本重播同一段輸入歷史,並比較策略在當下掌握的資訊。適合用來比對的紀錄包括:
- 策略版本與參數,包括產生這些設定的挑選區間。
- 輸入值,以及事件時間與資料可用時間。
- 訊號、目標部位、目前部位與預計委託。
- 委託限制、費用、資金費用與模擬成交細節。
- 執行前後的現金與部位狀態。
如果訊號不同,請檢查資料時間與程式碼版本。如果訊號一致但委託不同,請檢查部位計算、交易場所規則與投資組合狀態。如果委託一致但成交不同,請檢查執行假設。請分開檢視這幾個環節,否則單一績效數字可能會讓你往錯的方向追查。
什麼情況下,偏差代表策略出了問題?
確認整個流程一致後,再針對有意義的共同期間比較結果,並檢視策略預期的行為。少數幾筆模擬交易就可能很快揭露錯誤的時間戳記或委託流程,但無法可靠地判斷策略的平均報酬是否改變。這需要足夠的觀察資料,而所需數量取決於報酬的波動程度與群聚情形。
市場狀況也可能改變。即使每一筆決策都一致,價差擴大或資金費用持續轉為不利,仍可能傷害策略表現。這代表交易條件確實改變,而非驗證流程有誤。請一併記錄成本與曝險,並與報酬對照,才能看清兩者的差異。
Walk-Forward 驗證提供的是策略挑選流程在歷史期間的證據;模擬交易提供的則是系統在實際觀察到的條件下運作的證據。兩者結果出現偏差時,先找出紀錄最早開始不一致的地方。令人意外的往往不是 Sharpe,而是那個細微的執行或資料差異,讓兩場實驗回答了不同的問題。
← 所有文章


