你找到了一個漂亮的結果:你的加密貨幣策略大部分報酬都來自 UTC 13:00 到 14:00。你檢查過手續費、重新跑過回測,也用模擬交易驗證了訊號。現在你正準備推出美股版本,而表現最強的時段似乎是紐約時間 09:30–10:30。
在相信任何一個結果之前,先確認時鐘發生了什麼變化。美國夏令時間會讓紐約開盤時間相對 UTC 前後移動 1 小時。如果你的特徵、交易時段標籤和訂單採用不同的時間定義,策略利用的可能只是日曆上的界線,而不是可重複的市場模式。
你不必因此放棄時段研究。你需要先定義假設採用哪一種時鐘,再確保回測的每個部分都一致使用它。
先說清楚這個時段代表什麼
「第一個小時」聽起來很精確,直到你說明採用哪個基準時鐘。它可能是 NYSE 開盤後的前 60 分鐘、紐約當地時間 09:30–10:30,或某個固定的 UTC 時段。這些定義在一年中的某些時候一致,但夏令時間切換前後就會分歧。
對美股假設,請使用交易所當地的交易時段:紐約時間 09:30 就是 09:30,無論紐約當時採用 EST 還是 EDT。對加密貨幣假設,固定的 UTC 小時可能才是你要研究的變數。加密貨幣全天候交易,沒有交易場所的開盤鐘聲可作為基準。
開始調校前,先把定義寫下來。「在一般交易時段開盤後的第一個小時交易」可以拿來測試;「在訊號表現最好的那個小時交易」則會讓最佳化器連同策略一起挑選時鐘慣例。
時間定義不一致會在哪裡悄悄出現
假設你的美股資料以 UTC 儲存,特徵程式碼依 UTC 小時將資料分組,而執行規則則在紐約時間 09:30 建立部位。夏令時間切換後,市場開盤會從 UTC 14:30 移到 13:30。此時,依 UTC 時段標記為「第一個小時」的特徵,指的已是交易時段中的另一段時間。
從時間戳記建立 K 線時,也可能遇到類似陷阱。如果你先按 UTC 重新取樣,再把標籤轉成紐約時間,可能會得到出乎意料的時間界線,尤其是春季切換時——當地有一個小時不存在;以及秋季切換時——當地有一個小時會出現 2 次。秋季那個星期日的當地時間 01:30 就有歧義,除非時間戳記帶有 UTC 時差,或以 UTC 表示。
對你的加密貨幣結果來說,日曆仍然可能有影響。採用 UTC 小時的策略可能好幾個月都與美股市場活動重疊,接著在美國切換時鐘後,看起來像是時段移動了。這不代表策略無效,但會影響你能做出什麼主張。你測到的可能是固定的 UTC 模式,只是有時會與美股開盤重疊,而不是與開盤時間直接相關的效應。
把交易時段時鐘納入測試
將事件時間戳記以 UTC 作為標準紀錄。需要當地交易時段欄位時,使用具名時區,例如 America/New_York,並採用能處理歷史規則變動的時區資料庫。不要把「UTC 減 5」或「UTC 減 4」寫死:這兩個時差都無法全年代表紐約時間。
| 決策 | 美股範例 | 加密貨幣範例 |
|---|---|---|
| 假設採用的時鐘 | 距離一般交易時段開盤的分鐘數 | 每日 UTC 小時 |
| 交易時段來源 | 包含假日與提早收盤資訊的交易所日曆 | 連續的 UTC 日曆 |
| 下單時機 | 訊號出現後的下一個可執行時點 | 訊號出現後的下一個可執行時點 |
接著,分別測試切換前後的幾週。比較每次夏令時間切換前後的績效,並檢查表現最佳的時段是持續跟著市場交易時段移動,還是固定在 UTC 時間。如果你搜尋過許多小時、日期和時差才找到最佳結果,請把這些搜尋納入過度擬合的評估;選擇時鐘也是一次額外試驗。
時區是一套規則,不是要拿來相減的時數。儲存 UTC 事件;需要時再推導當地市場時間。
模擬交易應該確認的事
將策略移入模擬交易時,同時記錄事件的 UTC 時間戳記,以及相對於交易時段開盤的分鐘數。這能讓你快速發現策略以為開盤時間是 09:30,實際上卻在當地時間 10:30 才觸發。也要檢查假日和提早收盤日;若把一般交易時段的時程套用到每個平日,系統就可能在交易所休市時憑空建立交易。
時鐘切換時,請忍住不要為了讓權益曲線看起來熟悉,就把訊號移動來「修正」結果。先確認你明確寫下的假設、日曆和下單時機。如果結果跟著市場交易時段移動,你就對交易時段行為有了新發現。如果結果維持在同一個 UTC 小時,你也有了另一種發現。回測應該保留這項差異。
← 所有文章


