2026年九月25日 · 研究

如何判斷回測使用的市場資料是否真的可交易?

如何判斷回測使用的市場資料是否真的可交易?

一筆市場資料即使完全正確,也可能無法作為回測的有效證據。交易確實發生了,價格也沒錯,時間戳記有效;但資料流可能延遲送達,供應商可能事後才修正資料,或者報價所屬的市場根本不是策略能接觸到的市場。

要判斷歷史資料是否可交易,稽核的不能只有事件時間戳記。你還需要知道資料列描述的是什麼、何時可供系統使用、代表哪個交易場所或金融商品,以及該報價或交易是否足以合理支持你的委託。

歷史價格正確,就足以用於回測嗎?

不夠。準確性回答的是:「來源最後記錄的價格是多少?」回測還得回答:「策略在做決策時能掌握哪些資訊?」以及「策略實際上能成交嗎?」這是兩個不同的問題。

假設某筆加密貨幣交易在 12:00:00.120 成交,但資料供應商的資料流直到 12:00:00.480 才把它送到你的程式。策略在 .200 做決策時,無法使用這筆交易,即使事件時間早於決策時間。如果歷史檔案只保留事件時間,回測可能在不知不覺中讓策略取得即時運作時尚未收到的資訊。

時間或欄位代表的資訊缺少時的回測問題
事件時間交易所所記錄的事件發生時間把市場時間誤當成策略可用時間
接收時間資料收集器收到訊息的時間把延遲資料當成即時送達
序號或更新 ID事件在資料流中的順序更新套用順序錯誤,或在沒有察覺的情況下漏掉更新
修訂時間修正後的歷史值開始可知的時間用原始資料流中不存在的數值進行回測

如果你的資料封存沒有接收時間,請如實說明這項缺漏。你可以測試一種延遲假設,或把研究結論限定在事件時間範圍內。你無法從從未儲存的時間戳記還原當時的確切資訊集合。

如何判斷報價是否能實際成交?

先確認你的委託會送達哪個市場。綜合最佳買價與賣價可能彙整了多個交易場所,但這並不能證明你的帳戶能取得顯示的數量、委託抵達時該報價仍然存在,或該交易場所會接受你的委託類型。

對市價單來說,以中間價成交通常只是虛構。較實用的估算方式是依照委託數量逐檔消耗可見掛單,再加上手續費和延遲或衝擊假設。如果你只有最佳買賣價資料,就要限制結論範圍:你可以估算第一檔,但無法推斷從未記錄的深度。

對限價單來說,價格觸及不代表成交。排在你前面的委託可能會先消耗可用數量。一般快照通常無法得知排隊位置,因此以價格觸及判定成交的規則,應視為樂觀情境,而非實際發生的事實。

1 分鐘 K 線可以告訴你,最低價曾跌破你的限價。它無法告訴你,低點出現前你的掛單是否已送達交易場所、當時成交了多少,或你前面排了多少數量。

信任一份市場資料封存前,應該檢查什麼?

我會先檢查那些基本項目。相較於在有問題的資料流上套用精密的執行模型,這些檢查更能找出研究中的錯誤。

最後一項聽起來簡單得不能再簡單。我曾經花了一個早上追查一個看似波動度狀態改變的現象,最後發現只是資料流遷移後,數量欄位的單位變了。圖表很漂亮,單位卻錯了。

如何測試資料可用性會不會改變結果?

針對策略的決策邊界做一組小型敏感度測試。按照合理的延遲調整資料可用時間,剔除序列連續性中斷的更新,並在有實際交易場所委託簿資料時,用它比較成交結果。回報原始結果與劣化後的結果。如果極短的延遲就讓效果消失,策略可能仰賴你的資料收集設定無法穩定提供的資訊優勢。

舉個具體例子,假設最佳買價上漲 1 個 tick 時就會觸發訊號。用交易所事件時間重播一次,再用資料收集器的接收時間重播一次。如果事件時間版本交易 40 次,而接收時間版本交易 27 次,這項差異就是策略證據的一部分。兩種重播各自的績效也是。不要因為較弱的重播看起來不夠漂亮,就把它藏起來。

模擬交易是很實用的下一步檢查,因為它能在研究系統使用的同一條作業流程中,揭露資料流延遲、過時報價、代號對應錯誤與交易場所的限制。它仍無法重現所有實際排隊情況或市場衝擊。要清楚標示這個界線。

實務上,「可交易資料」是什麼意思?

意思是,回測能說明觀測何時發生、策略何時能讀取、資料來自哪個市場,以及哪些執行證據支持假設的成交結果。乾淨的價格序列只是起點。當時間、存取權限與成交假設都經得起檢視,而且調弱這些假設後結果依然合理,研究才真正可信。

市場資料回測資料工程執行模擬交易
← 所有文章