2026年十月18日 · 研究

如何回測以每日訊號交易的策略?

如何回測以每日訊號交易的策略?

以週一收盤價計算訊號的每日策略,無法在週一收盤時下單。它可以等該價格確定後再送單,並在之後可成交的價格交易。這個小小的時間設定,對結果的影響可能勝過精巧的指標。

進行每日回測時,先寫下事件順序,再寫訊號:K 線何時完成、策略何時計算、訂單何時送達市場,以及合理可能的成交價格。如果這些事件都發生在同一瞬間,回測就跳過了最棘手的部分。

可以用今天的收盤價在今天收盤時交易嗎?

通常不行。依賴最終收盤價的訊號,只有在收盤競價或最後一筆交易發生後才會出現。假設能以同一價格成交,就等於假設策略能及早得知結果,並以參與決定該結果的價格成交。

來看一個簡單規則:收盤價高於 20 日移動平均時買進。到了週一收盤,規則轉為成立。若回測在週一收盤買進,就等於用週一已完成的價格來決定訊號並成交。對基本的日 K 線模型來說,合理的近似方式是在週一 K 線完成後產生訂單,並且最早於週二開盤成交,同時計入適當成本。

有些策略會根據收盤競價截止前可取得的資訊送單參與收盤競價。這類策略可以回測,但訊號只能使用截止前的資料,成交也必須反映競價執行。「每日訊號」本身無法證明這兩個條件都成立。

每日回測應採用什麼成交價格?

沒有放諸四海皆準的正確價格。如果訊號由已完成的日 K 線形成,且之後才送單,下一個交易日的開盤價是明確的起始假設,但不代表一定能以此價格成交:隔夜跳空可能使市場價格變動,而市價單還要支付價差、手續費,並可能造成市場衝擊。

以剛才的週一訊號為例,假設週一收盤價是 $100,週二開盤價是 $103。假如回測假裝以 $100 買進,收盤到收盤的回測可能顯示小幅獲利;若在下一個開盤進場,起始價格則是 $103。這 $3 的差異不是可以調參消除的「滑價」,而是週一收盤後才得知訊號所帶來的價格結果。

訊號開始可用可能的執行時機模型假設
每日收盤後下一個交易日開盤訂單可在開盤前或開盤時送達市場
收盤競價截止前收盤競價訊號只使用截止前資訊;模型有納入競價成交
每日收盤後稍後的盤中價格策略等待;執行模型需要盤中資料和明確的執行時程

在加密貨幣市場,「每日收盤」是一種慣例,因為交易會持續跨越時間戳記的分界。策略仍可使用已完成的 UTC 日 K 線,但必須等 K 線完成且資料送達。如果你的資料管線晚了幾秒才定稿,想要在邊界價格下單就更難以合理辯護。

只有每日 K 線時,應如何建模訂單?

清楚說明 K 線能告訴你什麼、不能告訴你什麼。每日 OHLCV 可用於近似下一個開盤價成交,但無法揭示訂單抵達時的價差、當日價格走勢,或限價觸及時你的訂單是否已排入隊列。

對每日市價單,先從下一個開盤價開始,再向策略計入實際會承擔的成本:交易場所手續費、價差估計值,以及符合訂單規模的市場衝擊估計值。對這些成本進行情境壓力測試。如果結果仰賴零價差或可忽略的市場衝擊假設,每日 K 線資料就不足以支持這種信心。

對限價單,某日最低價觸及你的限價,不代表你一定成交。市場可能在你的訂單抵達前就已經以該價格交易,也可能有更多數量排在你前面,實際成交量卻不足。每日 K 線通常太粗略,無法支援可信的隊列模型。如果結論仰賴盤中執行,就使用更精細的資料;否則,請刻意採用保守的成交假設並清楚標示。

哪些時間檢查能抓出每日 K 線的前視偏誤?

我喜歡做幾項簡單直接的檢查,因為它們能迅速揭露假設:

往後挪一個交易日是一種診斷方式,不是通用的執行模型。低頻投資組合再平衡、收盤競價策略,以及持續交易的加密貨幣系統,需要不同的時間安排。重點是讓時間安排清楚可見。

每日資料會讓回測變得比較沒用嗎?

不會。若策略的決策週期和持有期間以天或週計算,每日資料完全可能很合適。它能幫助我們判斷一項概括性的規則是否值得進一步研究。當回測對 K 線無法呈現的成交細節做出精確主張時,每日資料才會造成誤導。

我看過不只一個策略,在有人把「收盤時產生訊號、收盤時成交」改成「收盤時產生訊號、下一個開盤時成交」後,績效大幅改善。這樣的結果或許令人失望,但很有價值:它告訴你這個想法能否在真正可以交易的時刻依然成立。請把時間假設寫在策略程式碼旁。否則,下次最佳化時,不可能的成交價格又會悄悄回來。

每日訊號執行時機回測市場資料
← 所有文章