2026年八月24日 · 研究

為什麼我的回測交易次數比紙上交易策略更多?

為什麼我的回測交易次數比紙上交易策略更多?

回測常把交易視為訊號直接轉成部位。紙上交易則會在中間多出一張訂單。訂單可能掛在市場上、部分成交、遭到取消或拒絕,也可能在訊號改變後仍然有效。如果你的模擬策略略過這段生命週期,交易次數和曝險可能就和紙上交易帳戶的紀錄相去甚遠。

實際的作法是讓訂單成為具有狀態和時間戳記的持續性物件。訊號只是嘗試交易的指示,並不代表交易確實發生。

為什麼我的紙上交易策略比回測的交易次數少?

先看看從未成交的訂單。回測可能假設每當市場價格觸及限價,限價單就會成交。但在真實市場中,價格觸及並不能告訴你訂單是否排在隊列前面、成交量是否足夠,或訂單抵達交易場所時報價是否仍然有效。

假設某策略以 $100 掛買進限價單,並在 30 秒後取消。市場成交價來到 $100.00,但該價位的成交量很少,而且其他訂單排在前面。你的訂單可能只成交一部分,也可能完全沒成交。以觸價判定成交的回測會記錄完整部位;追蹤排隊假設的紙上交易帳戶則可能完全不記錄成交。

市價單的落差則有所不同。回測可能假設整筆數量都在下一根 K 棒開盤時成交,但紙上交易可能因數量超出交易所限制而拒單,或在委託簿變動時分批成交。K 棒只是交易的摘要,並不保證整筆訂單都能以同一價格成交。

如果訂單成交前訊號就改變了,回測應該怎麼處理?

在模擬器收到並處理取消之前,舊訂單都應維持有效。如果買進訂單仍掛在市場上時訊號反轉,策略可能會想取消它並送出賣單。但這個意圖不會立刻讓買單消失。取消指令送出途中,買單仍可能成交,讓帳戶在新訊號已轉為放空時仍持有多單。

將流程建模為一連串事件:訊號改變、策略送出取消請求、交易場所確認取消或回報成交,接著策略才能確認訂單的最終狀態。即使只是設定固定延遲,也能揭露即時取消的回測所掩蓋的競態情況。

若要採用刻意簡化的模型,設定 1 秒取消延遲並在下一個事件發生時處理,會比假設取消立即生效更有參考價值。適當的延遲取決於交易場所和系統;重點是要納入延遲。如果你的訂單是沒有取消時間窗的市價單,部分成交和延遲回報仍然是需要處理的問題。

紙上交易模擬器應該記錄哪些訂單狀態?

使用簡單的狀態機,並記錄每次狀態轉換及其時間。各交易場所使用的詞彙不盡相同,但核心區別都一致:

將已成交數量與委託數量分開記錄,並一併記下成交價格和費用。部分成交的訂單既代表已有交易,也代表剩餘數量仍是有效委託。若將它簡化為委託中或已完成,策略在決定下一步部位大小時就會缺少必要資訊。

訂單事件策略應掌握的資訊常見的回測簡化作法
部分成交已成交數量、剩餘數量、平均價格將整筆訂單視為以單一價格成交
取消請求請求時間,以及最終的取消或成交確認立即移除訂單
拒單拒絕原因,以及是否適合重試假設委託的交易已經發生
到期訂單不再符合成交條件的時間讓訂單維持有效,直到之後價格再次觸及

如何公平比較回測交易與紙上交易?

先比較訂單事件,再比較部位,最後才看損益。如果回測中的訂單成交了,紙上交易帳戶卻沒有,那麼後續的損益差異只是結果,並不是找出問題的起點。

為每筆預期訂單使用穩定的策略決策識別碼或訂單識別碼,將兩次執行的紀錄配對。接著檢查送出時間、委託價格和數量、有效時間、成交、取消、拒單、費用及最終部位。模擬中未成交的原因也要記下:價格從未觸及限價、假設中排在前面的隊列尚未成交,或訂單已到期。

簡單的例子能清楚呈現整個流程。訊號要求交易 10 單位。兩套系統都在 10:00:00 送出訂單。回測假設訂單在 10:00:01 全數成交。紙上交易在 10:00:01 成交 4 單位,於 10:00:02 收到取消請求,接著在 10:00:03 確認取消前又回報成交 2 單位。合理的比較方式是已成交 6 單位、未成交 10 單位中的 4 單位已取消。把兩者都平均成一筆「交易」,會掩蓋策略實際承受的曝險。

要做好這件事,需要完整的交易所模擬器嗎?

不需要。回測可以先明確設定幾項假設:限價觸及是否就算成交、價格需要有多少成交量穿越才能清空假設中排在前面的隊列、訂單會維持有效多久,以及取消延遲如何運作。用多組合理設定執行策略。如果績效仰賴每筆掛單限價單都能完全成交,你就從模型中得到了有用的資訊。

紙上交易也不是執行品質的絕對標準。它可能使用模擬成交,也可能沒有真實的排隊狀況。它在這裡的價值比較有限:隨著事件陸續發生,它能揭露策略和訂單管理器對待處理數量、取消、部位及重試行為的認知是否一致。

這項工作有個小小的樂趣:一份完善的訂單紀錄,能把原本令人摸不著頭緒的差異變得平淡無奇。「取消請求後,第二筆子訂單成交了」總比「紙上交易看起來怪怪的」更有幫助。回測和紙上交易帳戶出現差異時,先追蹤訂單生命週期,再去修改訊號。

紙上交易訂單管理回測執行策略研究
← 所有文章