2026年十月28日 · 選擇權

訊號判斷正確,我們的選擇權回測卻買錯到期日。

訊號判斷正確,我們的選擇權回測卻買錯到期日。

週二上午 10:07,我們的研究代理標記出一檔指數 ETF 的短線看漲訊號。標的訊號很普通:價格重新站回 20-bar 均線上方,已實現波動率逐漸回落,而下一個交易時段排定有一場總體經濟數據公布。建議的交易是買權價差,到期日約在兩週後。

回測看好這筆交易,紙上策略卻沒有下單。我們比對訂單時,訊號時間戳記一致,標的價格也只差幾美分。不同的是合約:回測買進歷史鏈中看起來最理想的週五到期合約;紙上流程則選了下一個掛牌到期日,也就是晚一週的合約。

這個落差來自日曆資料連接。我們把「距到期日天數」當成日期本身的屬性,再挑選到期日最接近目標的合約。在歷史資料中,到期日曆包含了一個在測試日期之後才新增的週選掛牌。回測用了未來才有的合約,當時看起來只是無傷大雅的方便做法。

我們一開始懷疑是時區錯誤。選擇權到期日特別容易出現這類問題:市場在紐約收盤,交易所時間戳記可能以 UTC 儲存,而午夜日期若經過管線粗心轉型,就可能偏移。我們查過了,時間戳記沒有問題。那個週二的歷史合約資料中,根本不存在該合約。

第一個教訓是:歷史選擇權鏈需要一份符合時點的掛牌合約清單。合約的到期日告訴你它何時結束,卻不會告訴你它何時掛牌、何時開始可交易,也不會告訴你系統當時能不能選到它。

我們以決策時間戳記當下可取得的資訊為基礎,重建了選擇流程。對每個候選合約,我們要求掛牌時間戳記不晚於決策時間、有效報價不得超過新鮮度門檻,且策略當時必須能在該市場時段送出訂單。我們也在排序前記錄候選集合。最後這點很重要,因為舊版回測只保留勝出的合約;我們無從得知它比較的是 5 個符合資格的合約,還是悄悄從尚未出現的日曆中挑選。

10:07訊號決策時間
1 週到期日不符
0所選合約的歷史掛牌數量

接著,我們檢視了用來定價差價的報價。回測分別取用每一腿最新的報價。買權的賣價來自 10:06:58;賣出的買權買價則來自 10:04:11。按照寬鬆的資料政策,兩筆報價都算夠新,但這段時間市場已經變動。用不同步的兩腿報價計算價差中間價,可能描繪出一個從未存在過的市場。

我們修改報價規則,要求兩腿的時間戳記相差不超過 2 秒,並排除交叉報價或掛單量為零的市場。可用的歷史觀測值因此減少,但留下的價格更可信。如果沒有同步報價,我們就將候選合約標記為不可用,不再用過時價格填補空缺。

接著是排序規則。代理選了報價價差成本最低的到期日。乍聽合理,但若價差只有 1 口合約的掛單量,而且報價已過時,這個選擇就不可靠。我們把目標明確訂為:在符合最低報價量、新鮮度與掛牌檢查的合約中,最大化每單位已定義風險的預期報酬。以這個例子來說,最近的合格到期日,兩腿報價寬度為 $0.42;較晚到期的合約則為 $0.31。看起來較便宜的那個選擇,賣出腿的掛單量卻只有 1 口合約。

候選合約當時是否已到期日掛牌?報價時間差賣出腿掛單量決策
本週五週選否不適用不適用排除
下週五是1.4 秒18 口合約符合資格
第三個週五是9.8 秒1 口合約因報價過時且掛單量不足而排除

我們用這些規則重播了這次事件。現在回測會選出與紙上策略相同的到期日,也會記錄其他合約遭到拒絕的原因。新算出的價差進場價格比原本的歷史成交價差了 $0.11。這不代表策略毫無價值,而是舊的績效數字包含了一種即時流程無法重現的交易選擇。

還有個小麻煩:交易所的商品代碼格式,會讓到期日錯誤看起來像資料品質問題。我們發現某家供應商的週選代碼和月選代碼只差一個字元。我至今仍會在稽核記錄中,同時保留原始代碼和正規化後的合約鍵。這樣做不算俐落,卻讓我們避免太快相信看似整齊的資料連接。

如果你正在建置選擇權回測,請在每次決策時保存完整候選集合,以及每個合約的掛牌狀態、報價時間戳記、掛單量和遭拒原因。接著,讓合約選擇成為根據該快照運作的確定性函式。到期日選擇本身就是策略的一部分。如果回測看得到紙上策略無法取得的合約,那麼訊號比較開始時,答案早已經變了。

選擇權回測到期日選擇時點資料執行模擬
← 所有文章