2026年九月27日 · 研究

回測通過了,紙上策略卻漏掉 37% 的委託

回測通過了,紙上策略卻漏掉 37% 的委託

我們的回測將送出的 100 筆委託中,91 筆計為成交。紙上交易中,同一套策略只成交 63 筆。從訊號到委託確認的時間中位數為 84 毫秒,而漏掉的紙上成交中,有 12 筆限價單是回測假設價格一觸及就會成交。

這 28 個百分點的落差,起初看起來像是策略出了問題,直到我們把委託決策和成交決策分開檢視。兩次執行中,策略選擇的方向、數量和價格幾乎相同。不同的是執行流程:有些委託送達太晚,有些仍掛單中,還有些送達時市場已經變動。

回測與紙上交易的委託一致性是什麼?

一致性表示,回測和紙上交易系統根據相同的可用資訊做出可比較的決策,並明確納入兩者執行模型的差異。這不代表每筆模擬成交都應與紙上交易成交相符。歷史 K 線無法還原排隊位置,而紙上交易場域採用的撮合模型也可能與實際交易所不同。

真正有用的問題更明確:對於策略打算送出的每筆委託,你能否說明接下來發生了什麼?交易筆數和最終報酬掩蓋了太多細節。請為每個決策保留一筆可串接的紀錄,並讓穩定的策略決策 ID 貫穿訊號、委託、確認、取消和成交事件。

比較項目可發現的問題範例
決策時間與方向輸入資料或排程不同紙上交易訊號晚一根 K 線才觸發
要求的數量與價格四捨五入、風險控管或場域規則回測送出 0.013 BTC;紙上交易則四捨五入為 0.01
委託狀態轉換送出、拒絕和取消方面的落差回測把取消請求視為已完成
成交數量與價格成交模型過於樂觀或市場已變動限價觸及時,回測記為全數成交,紙上交易卻沒有成交

為什麼觸及限價的委託占了這麼多漏單?

我們的回測使用 1 分鐘 K 線。只要限價落在某根 K 線的高低價範圍內,就會將委託標記為成交。這條規則只能說明市場在那 1 分鐘內的某個時刻曾以該價格成交,卻無法說明當時我們的委託是否已生效、是否排在隊伍前面,或委託送達後是否有足夠的成交量。

紙上交易紀錄揭露了時機上的問題。策略在 12:03:00.000 計算出訊號,但市場資料事件晚了 31 毫秒才抵達委託處理程序。風險檢查又花了 22 毫秒,之後場域模擬器再過 31 毫秒才確認委託。市場快速變動時,歷史 K 線可能讓人以為價格還有機會成交,但限價單送達時,市場早已離開該價位。

還有另一個問題:回測已經進入下一步時,紙上交易中仍有 12 筆委託掛單。模擬器把取消請求當成委託立即消失處理。紙上交易系統則是在稍後才收到取消確認;這段期間有 3 筆委託成交,因此下一個訊號看到的持倉也變了。

如何衡量落差,才不會誤導自己?

先依委託意圖建立一份簡單的對帳報告,並清楚呈現分母。「成交率」可能指每筆送出委託的成交數、成交數量除以要求數量,或到達場域的委託中已成交的比例。這些指標回答的是不同問題。

  1. 使用決策 ID 或用戶端委託 ID 串接事件,別事後猜測時間戳來配對。
  2. 先比較決策:訊號時間、方向、要求數量、委託類型和限價。
  3. 對於相符的決策,比較確認延遲、拒絕、掛單時間、取消時間、成交數量和成交量加權價格。
  4. 依委託類型和市場狀況呈現比率。整體成交率 63%,可能掩蓋了市價單 90%、被動限價單 35% 的差異。

分類時要把各種狀況清楚區分。遭拒的委託不等於未成交委託;部分成交不等於全數成交;而部分成交後才取消的委託,仍然改變了持倉。委託筆數和要求數量都要納入統計,避免一批小額委託讓結果看起來比實際情況更好。

91%回測委託成交率
63%紙上交易委託成交率
28 個百分點待調查的差異

回測應該怎麼調整?

採用符合資料解析度和預期委託行為的成交規則。使用 K 線資料時,限價觸及代表可能成交的跡象,並非成交證明。你可以保守地模擬部分成交、要求價格穿越限價,或排除無法估算排隊狀況的被動委託。每種選擇回答的問題都不同;請記錄所採用的規則,並以多種合理規則比較結果。

也要模擬委託狀態。收到終止事件前,委託都仍然有效;取消請求也不會讓曝險憑空消失。如果策略能在第一筆委託待處理時再送出第二筆,回測就必須呈現這種競態,或透過設計避免它。

成交模型代表你對委託可能成交方式的判斷。為它訂定一條你能說清楚的規則,再用紙上交易紀錄檢查這條規則。

對我們遇到的 28 個百分點落差來說,令人意外的不是分鐘 K 線回測高估了被動成交,而是因為漏掉取消時機,策略在下一次決策前持倉就已經分歧。修正委託狀態模型,並停止把每次限價觸及都當成成交後,紙上交易的比較結果雖然沒那麼好看,卻更有參考價值。

這就是委託一致性在實務上的標準:模擬和紙上交易行為之間每個重要差異都有記錄可查,而回測不會在資料無法提供確定答案的地方妄下定論。

紙上交易委託管理回測執行交易系統
← 所有文章