即使市場上根本沒有可成交的機會,回測也可能讓你的限價單成交。如果一根 K 棒的最低價跌破你的買進限價,許多引擎就會計為成交。但最低價只表示至少有一筆回報的交易以該價格或更低價格成交,並未說明成交量有多少、你前面排了多少委託,或你的委託是否及時掛出。
當策略的優勢仰賴頻繁的被動成交時,這個差異尤其重要。若模型把每次價格觸及都當成全額成交,就可能把耐心等待的進場變成虛構的 alpha 來源。
K 棒觸及我的限價,是否代表委託成交?
不代表。這只表示該根 K 棒記錄的價格區間涵蓋你的限價。委託能否成交,取決於市場委託簿、成交流、你的排隊位置,以及委託送達的時間。
假設你掛出 $100.00 的買進限價單。K 棒開在 $100.20,最低來到 $99.98,收在 $100.10。市場上可能有一筆交易以比你限價低 2 美分的價格成交;但如果 $100.00 前面排了大量委託,而該價位的成交量很小,你的單可能完全沒成交。只有 OHLCV 資料時,你看不到這些排隊委託。
還有另一個細節:K 棒會把一段時間內的事件彙整在一起。如果你的訊號是用該根 K 棒的收盤價計算,就不能假設你的委託在最低價出現時已經掛在簿上。K 棒把能回答這個問題的事件先後順序壓縮掉了。
OHLCV 資料究竟能告訴我多少限價單成交資訊?
OHLCV 可以排除某些成交情況,也能讓另一些情況看起來有可能,但無法確認排隊優先順序,也不能保證有多少量能分配給你的委託。
| 觀察結果 | 能支持的判斷 | 無法證明的事 |
|---|---|---|
| K 棒最低價高於買進限價 | 該根 K 棒期間沒有回報的交易到達該價位 | 委託會成交 |
| K 棒最低價觸及買進限價 | 有回報的交易價格到達限價 | 你的委託送達後仍有任何成交量 |
| K 棒最低價跌破買進限價 | 有交易以該價或更低價格成交 | 有足夠成交量輪到你的排隊位置 |
| K 棒總成交量大於你的委託量 | 該根 K 棒期間市場某處至少成交了這麼多量 | 委託送達後有這麼多量在你的價位成交 |
因此,使用 K 棒資料的引擎需要採用成交假設。應把它視為有明確盲點的模型,而不是從 K 線中直接讀出的事實。
回測中該如何建模限價單成交?
先釐清委託時間。決定訊號何時可用、委託何時送達交易場所,以及後續哪些市場事件可能與委託互動。如果訊號要等 K 棒收盤才確定,較保守的 K 棒規則是從下一根 K 棒起才讓委託具備成交資格。
接著把價格是否符合成交條件,和成交數量分開處理。限價達到可成交條件,不代表整筆委託都會成交。如果你有逐筆成交資料,卻沒有委託簿歷史,可以要求限價或更優價格的成交量超過委託量的某個倍數。這個倍數是粗略的排隊緩衝值,並非通用常數。請測試幾種數值,並回報結果如何變化。
例如,假設策略掛出 2 BTC 的買進限價單,在委託符合成交條件後,選定價位成交了 3 BTC。若模型要求符合條件的成交量達到 5 BTC,委託就不會成交;若模型採用 1.0 的成交量倍數,委託就會成交。這兩種結果都無法還原實際排隊情況。比較結果能顯示策略有多依賴一個你無法觀察的假設。
在模擬中保留未成交的委託。策略原本會取消時,就取消它們;錯過的交易就讓它繼續錯過。如果限價一被觸及就讓策略成交,卻忽略到期仍未成交的委託,執行狀況和機會數都會出現偏差。
什麼時候需要委託簿資料?
如果策略的核心在於排隊位置或部分成交,就應使用委託簿更新資料和逐筆成交資料,例如造市、有效時間很短的被動報價,或必須排在熱門價位前段才能進場的策略。即使如此,歷史公開資料也未必能揭示你在佇列中的確切位置。你仍需要建模委託送達、前方委託取消、撮合規則,以及你自己的市場衝擊。
對較慢的策略而言,詳盡的委託簿資料可能增加複雜度,卻無法釐清主要的不確定性。以 K 棒資料進行研究,仍可比較「觸價即成交」的上限情境與設有較嚴格成交量門檻的情境。如果只要要求成交條件合理一些,表面上的優勢就消失,這本身就是有價值的研究資訊。
如何判斷結果是否依賴過度樂觀的成交假設?
用一小組明確的成交規則執行同一套策略,並比較最終報酬以外的指標。追蹤成交委託數、部分成交率、掛單時間、取消數量、未成交後錯過的行情,以及週轉率。策略的表面報酬可能維持不變,背後仰賴的交易卻大幅減少,且更偏向容易成交的情況。
下一個有用的檢查方式是模擬交易:送出實際的委託邏輯,並記錄確認回覆、成交和取消。模擬成交仍取決於交易場所或模擬器自身的規則,但能檢驗 K 線無法呈現的委託時機與處理方式。
限價被觸及,只能證明價格到過那裡;宣稱成交,則是在描述執行結果。你的回測應清楚呈現這兩種說法之間的落差。
← 所有文章


