Skip to content
所有期權指南
分清事件觸發條件與結果標籤閱讀約12分鐘

三重障礙法:金融事件標籤解說

了解止賺位、止蝕位與最長持倉時間如何共同決定事件標籤,以及如何處理價格次序不明與結果時段重疊。

本指南內容三個條件共同決定事件標籤

簡短摘要

三重障礙法按事件開始後最先發生的條件,為金融事件設定標籤:上方止賺位、下方止蝕位,或最長持倉期限。每宗事件的水平按起始價格 P₀ 和事件開始時已知的波幅尺度 σᵢ 訂定。本文採用的規則是:先觸及上方障礙標為 +1,先觸及下方障礙標為 −1,兩個橫向障礙均未觸及而期限屆滿則標為 0。有些程式實作會改以到期回報的正負號決定標籤,研究文件應清楚列明所用規則。

三個條件共同決定事件標籤

對事件 i,記下開始時間 tᵢ、價格 P₀、回報尺度估算 σᵢ、m_PT 和 m_SL 兩個倍數,以及最長持倉時間 Tᵢ。若採用簡單回報,上方價格水平為 P₀ × (1 + m_PT σᵢ),下方水平則為 P₀ × (1 − m_SL σᵢ)。前兩個是橫向障礙,時間 Tᵢ 就是垂直障礙。

例如,m_PT = 2 代表上方目標距離起始價兩個尺度;m_SL = 1.5 則代表下方止蝕位距離起始價 1.5 個尺度。若任何一個橫向水平在 Tᵢ 前先被觸及,事件便在該水平結束,並按觸及方向取得標籤。若到期前兩個橫向水平都未觸及,事件就在垂直障礙結束。

障礙可以用簡單回報或對數回報設定;價格變動較大時,兩種方法換算出的價格水平並不完全一樣。建立目標和模擬成交時,應選定一種回報定義並前後一致。《Advances in Financial Machine Learning》第3章介紹以事件為本的標籤,以及按波幅尺度設定障礙的方法。

波幅尺度必須在事件開始時已知

σᵢ 按該事件的估計波幅調整障礙距離。可以用過往回報或預先指定的模型估算,但只可採用 tᵢ 當刻或之前已有的數據。若波幅估算納入未來時段,障礙水平本身就帶有未來資料,即使特徵的處理方式正確亦然。

固定百分比容易理解,但在市況平靜時可能太近,在波動加劇時又可能太遠。按波幅設定尺度,可讓距離隨當前市況改變。不過,σᵢ 並非對未來波幅的保證或精準預測,只是預先訂明的標籤規則其中一項輸入。

每宗事件都應保留起始價格、σᵢ、倍數、開始和結束時間、結束原因,以及用來判斷觸及的價格。這些資料有助重建標籤、核對各事件時長,亦方便檢查有否意外用上未來資料。

事件觸發器與結果標籤回答不同問題

觸發器決定何時開始觀察事件。例如,CUSUM 濾波器可在累積價格變動超過門檻時產生事件,而非每根 K 線都建立一個樣本。觸發器回答「何時開始建立樣本」,三重障礙規則則回答「開始後哪種結果最先發生」。

不要把觸發器與標籤或交易訊號混為一談。障礙標籤會利用其後的價格路徑建立目標變數 y,因為訓練所需的結果本來要到之後才知道;但事件特徵和 σᵢ 只可用開始時已知的資訊計算。這個分別見於 mlfinpy 標籤文件,亦可在三重障礙程式實作看到。

例子展示各道障礙如何發揮作用

假設 P₀ = $100、σᵢ = 2%、m_PT = 2、m_SL = 1.5,垂直障礙在未來第3根 K 線結束時屆滿。按簡單回報計算,上方水平為 $104,下方水平為 $97。

  • 價格路徑 $100 → $104.50 在第1根未來 K 線觸及上方水平,標籤為 +1;其後價格即使回落,也不會改變首次觸及結果。
  • 路徑 $100 → $96.50 在第1根未來 K 線、到期前觸及下方水平,標籤為 −1。
  • 路徑 $100 → $101 → $102 → $101.50 沒有觸及任何橫向水平。未來第3根 K 線結束時到期後,按本文規則標為 0,儘管期末回報是 +1.5%。

最後一個例子說明,本文的 0 代表「期限屆滿前未觸及橫向障礙」,並非「回報為零」。有些實作只把期限當作觀察終點,再按終點回報的正負分類。那是另一套規則,應清楚記錄,亦不要混合不同規則建立的標籤。

三條無標籤價格路徑:一條穿過上界,一條穿過下界,另一條在兩者之間到達時間界線
展示價格首次觸及上界、下界或時間界線的概念圖;路徑僅作說明,並非市場數據

方向標籤與元標籤是兩種任務

在方向預測中,+1 和 −1 表示價格先觸及哪一邊的水平;本文把到期情況獨立列為 0。模型可用事件開始時已知的特徵預測類別。標籤只說明相對於指定障礙的結果,並不直接代表扣除交易成本後獲利的機會。

元標籤先由主要模型提出持倉方向,例如做多或做空;計算回報時會考慮這個方向,再由第二個模型判斷是否採納該訊號。因此,標籤和障礙的含義會視乎計算有否納入持倉方向而定。請在數據中明確記錄所提議的方向,不要把所有 +1 標籤都解讀成買入建議。

市場數據未必能顯示觸及先後

只看收市價的數據可能會漏掉日內觸及:最高或最低價或會在收市前穿越障礙。如果同一根 OHLC K 線的最高價越過上方水平,而最低價也跌穿下方水平,這四個價格不足以判斷哪一邊先被觸及,不能可靠地挑選結果。

如果先後次序會影響標籤,應使用更高頻、足以還原次序的數據。若沒有這類數據,就預先訂下保守而可重複的雙邊觸及規則,例如按較不利結果處理,並對所有事件一致套用。方法說明須披露這項不確定性,不要把推定的先後次序說成實際觀察所得。

也要說清楚「觸及」指成交價、買賣報價、收市價,還是可實際成交的價格。跳空、差價和落盤延誤,都可能令真實倉位無法在圖表顯示的價位成交。

驗證時要處理事件重疊

多宗事件可能同時持續,並共用部分未來價格路徑來建立標籤。若把樣本列隨機分到訓練和測試資料,兩邊便可能包含結果時段重疊的事件。驗證時應使用每宗事件由開始至觸及障礙或期限屆滿的實際時段,並按既定規則,把結果時段與測試集重疊的訓練樣本剔除。

金融時間序列的 purged cross-validation 與 embargo 指南進一步說明這種處理方法。Purging 可減少重疊標籤造成的資料洩漏,但不能修正包含未來資訊的特徵、反覆挑選模型,或不切實際的成交假設。

交易成本會改變結果的意思

障礙路徑一般按相關資產的價格變動計算。實際交易結果還取決於買賣差價、佣金、滑點、永續合約資金費、借貨成本和成交安排。如果目標是分類淨結果,應先把這些項目納入目標回報和合理的成交假設,再計算標籤。

正面標籤不能證明策略能賺錢。結果受事件頻率、模型、市場、倉位大小和成交質素影響;歷史標籤本身並非收益承諾或交易建議。

訓練模型前記下所有規則

交代事件如何觸發、P₀ 和 σᵢ 的來源、採用的倍數與期限、用哪種價格數據判斷觸及,以及如何處理同時觸及兩邊。註明到期一律標為 0,還是按期末回報正負分類,也要說明結果是在成本前還是成本後計算。

記錄這些規則,數據集才可供審核和重現。即使原始數據相同,參數不同也會構成不同的預測問題。

常見問題

Q1事件到期時必須標為 0 嗎?

不一定。本文把 0 定為獨立類別,表示到垂直障礙為止未有觸及橫向障礙。其他實作可以按到期回報的正負號標籤。關鍵是清楚選定一套規則並貫徹使用。

Q2事件觸發器與三重障礙法有甚麼分別?

CUSUM 等觸發器決定樣本何時開始;三道障礙決定開始後哪個結果條件最先發生。它們是建立訓練數據的兩個不同步驟。

Q3+1 標籤是否保證扣除成本後仍有利潤?

不是。它只表示按指定價格數據和規則,上方水平最先被觸及。差價、佣金、資金費、滑點、倉位大小和成交方式均可能改變淨結果。

資料來源與延伸閱讀

回報問題

我們會準備一封包含本文連結的電郵。寄出後,Mark 才會收到你的回報

快速檢查

讀完指南後,用 3 道題檢查一下

問題 1 / 3

問題 01

若事件在第1根未來 K 線先觸及上方障礙,早於下方障礙和到期時間,應標為甚麼?

選擇答案即可查看解釋

期權術語表