用於盤中剝頭皮的 KAMA 盤整過濾:突破時更少的延遲
用短週期效率比率在原始 K 棒上衡量盤整狀態,加上能立即關閉過濾的突破覆寫,並在每根 K 棒收盤時決定過濾狀態。再用多個期間的開關測試來評估它。
作者 Soren Huang · 發佈 · 更新於 · 編輯原則
目錄
如何偵測盤整狀態又不讓過濾產生延遲?
用短週期效率比率在原始 K 棒上衡量盤整狀態,不要用自適應 K 棒。再加上突破覆寫:只要一根已完成的 K 棒收在區間之外,就立即關閉過濾。過濾在每根 K 棒收盤時決定,並套用到下一根 K 棒。然後在多個期間分別開啟與關閉過濾來測試。
狀態過濾是一條規則,逐根 K 棒判斷市場條件是否適合某個策略,並開啟或關閉其進場。盤中剝頭皮是一種在一根或幾根 K 棒內進出場的交易風格,委託常常在 K 棒仍在形成時就能成交。延遲是指從市場改變到過濾察覺之間相隔的 K 棒數。對盤整剝頭皮策略而言,突破時的延遲代價最高。過濾每多說一根「盤整」,策略就多一根在逆著已不再反轉的走勢做反向交易。KAMA 是一種自適應的技術指標,趨勢中加快、雜訊中放慢。
什麼是 KAMA 式自適應 K 棒?
KAMA 式自適應 K 棒是指其開盤、最高、最低與收盤價都以 Kaufman 自適應移動平均(KAMA)平滑過的 K 棒。因此,這種 K 棒在趨勢中緊貼價格,在盤整中幾乎不動。KAMA 指標頁面說明了這條均線如何建構。簡單說:KAMA 依效率比率自行設定速度。就像影子,你朝同一方向快走時它緊跟著,你來回踱步時它就站著不動。
標準設定使用 10 根 K 棒的效率比率、等同 2 根 K 棒均線的最快速度,以及等同 30 根 K 棒均線的最慢速度。這兩種速度之間的平滑權重會取平方。效率比率為 1 時,每根新 K 棒會讓這條線朝價格移動近一半的距離。效率比率為 0 時,每根新 K 棒移動的距離不到該距離的百分之一,比一般的 30 根 K 棒均線還慢。10 根的效率比率與 2 根、30 根的平滑上下限不必固定,AlphaPrime(Valynox) 的策略生成可以把它們設成參數範圍來測試。
這就是為什麼 K 棒在盤整中看起來很乾淨:它們幾乎不動。這也是它們在突破時很慢的原因。最初的突破 K 棒出現時,效率比率仍然很低,所以 K 棒會緩慢爬行,直到比率上升。
價格突破時,哪些盤整衡量指標反應最快?
以原始收盤價計算的效率比率通常反應最快,因為每根突破 K 棒都會直接增加它所衡量的淨位移。ATR 比率與 K 棒重疊反應較慢,因為它們是在多根 K 棒上平均 K 棒大小或重疊程度。效率比率是某段回看期間的價格淨移動量,除以同一批 K 棒內價格走過的總距離。可以想成走路:在走廊上來回踱步走了很多步卻回到起點附近,所以比率接近 0;沿著一條直路走則會走到很遠,比率接近 1。
ER = |目前收盤價 − n 根 K 棒前收盤價| ÷ n 個 K 棒間收盤價變動絕對值之和
其中 n 是以 K 棒數計的回看期間,直線符號表示「忽略正負號」,所以下跌與上漲一樣都算距離。下表比較三種常見的盤整衡量指標。
| 衡量指標 | 它讀取什麼 | 盤整時的讀數 | 延遲的來源 |
|---|---|---|---|
| 以原始收盤價計算、回看期間短的效率比率 | 方向相對於雜訊 | 低值 | 舊的震盪 K 棒會一直留在分母中,直到離開回看期間 |
| ATR 比率(短 ATR ÷ 長 ATR) | 目前 K 棒大小相對於正常 K 棒大小 | 低值(安靜的 K 棒) | 兩條平均都在平滑 K 棒大小。它讀的是大小而不是方向,所以雙向的寬幅 K 棒也會看起來像突破 |
| K 棒重疊 | 每根 K 棒的高低區間落在前一根 K 棒區間內的比例,取 k 根 K 棒的平均 | 高重疊 | 一根突破 K 棒只會讓 k 根 K 棒的平均改變其自身值的 k 分之一 |
假設範例
收盤價在 100 與 102 之間交替十根 K 棒,所以淨位移為 0,10 根 K 棒的效率比率為 0。第一根突破 K 棒收在 106:淨位移為 4,總距離為 24,比率升到 0.17。第二根收在 112:淨位移 12,距離 28,比率 0.43。第三根收在 118:淨位移 16,距離 32,比率 0.50。若關閉水準設為 0.3,過濾會在第二根突破 K 棒收盤時察覺。第三根 K 棒時它已經關閉,也就是說有兩根突破 K 棒暴露在風險中。
如何避免過濾在突破時產生延遲?
在較慢的衡量指標之上加一道硬性突破覆寫,讓一根已完成且收在區間之外的 K 棒就足以關閉進場。效率比率決定區間何時形成,覆寫決定區間何時結束。依下列順序建構:
- 在收盤時決定。在每根已完成的 K 棒收盤時計算過濾,並只套用到下一根 K 棒。
- 定義區間箱。區間箱是最近 m 根已完成 K 棒的最高價與最低價,不含目前這根 K 棒。
- 收在箱外時覆寫。一根已完成的 K 棒收在箱頂之上或箱底之下,就立即關閉過濾。
- 使用兩個門檻。效率比率低於某一水準時開啟,高於較高的水準時關閉,例如低於 0.2 開啟、高於 0.3 關閉。兩者之間的間隔可避免過濾在單一水準附近不停開關。
- 緩慢重新進場。保持關閉,直到比率已連續幾根已完成 K 棒低於較低的門檻。
在上面的範例中,第一根突破 K 棒收在 106,高於箱頂 102。因此覆寫會比單靠效率比率早一根 K 棒關閉過濾。代價是假突破。一根收在箱外之後又回到區間內的 K 棒同樣會關閉過濾,所以要統計覆寫跳過了多少筆好的盤整交易。
回測應如何處理盤中剝頭皮交易的成交?
只使用下單當時已經存在的數值。當停損與停利同時落在同一根 K 棒內時,不要假設有利的那一個先發生。剝頭皮的停損與停利都很緊,所以這兩種錯誤都會迅速墊高結果。逐項檢查:
- 價位取自已完成的 K 棒。目前這根自適應 K 棒的收盤價,是一個尚不存在的收盤價的平滑版本。由它畫出的價位會在 K 棒期間移動,讓成交看起來完美。請使用前一根已完成的 K 棒。回測中的前視偏誤指南示範了檢查此類洩漏的一根 K 棒檢查法。
- 過濾狀態取自前一次收盤。目前 K 棒的最高價與最低價在收盤前都不是最終值,所以使用它們的盤整衡量也會洩漏。
- 解決停損與停利的先後。一根 K 棒的開盤、最高、最低與收盤價只顯示價格走了多遠,而不是走的順序。如果有 K 棒內較小 K 棒週期的資料,就使用它。沒有的話,就假設停損先被觸發。
- 用同樣方式處理進場 K 棒。如果限價進場是在某根 K 棒中成交,你同樣不知道該 K 棒的最高價是在成交之前還是之後。
- 讓限價成交更嚴格。要求價格穿越限價至少一個跳動點,而不只是碰到。
- 每次執行都計入成本。剝頭皮的平均每筆損益很小,所以要把它與一買一賣(來回)成本比較,詳見回測中的交易成本。
回報停損與停利落在同一根 K 棒內的交易比例。測試一次假設停損先觸發,再測一次假設停利先觸發。兩個結果差距很大,代表結果取決於你看不到的順序。AlphaPrime的回測包含下一根 K 棒執行、手續費與滑價以及交易時段,所以每次評估都使用相同的執行假設。
如何把狀態過濾當作開關來測試?
同一個策略跑兩次,一次開啟過濾、一次關閉,其他都不變,然後逐期間比較結果。依下列步驟:
- 固定基礎策略、其參數、成本與成交規則。
- 關閉過濾執行。
- 開啟過濾執行。
- 把歷史資料分成多個期間,例如按年度,使每個期間同時包含盤整與突破。
- 每個期間比較交易筆數、扣除成本後的淨損益、平均每筆損益與最大回撤。
- 列出被過濾移除的交易,檢查它們是否大多是突破前後的虧損交易。
- 跑一個隨機開關,讓它在相同比例的 K 棒上關閉進場。如果它對結果的改善與你的過濾差不多,那你的過濾並不帶有任何資訊,只是交易得更少而已。
假設範例
扣除成本後以點數計的淨損益,過濾關閉與過濾開啟的比較:
| 期間 | 關閉時交易筆數 | 關閉時淨損益 | 開啟時交易筆數 | 開啟時淨損益 |
|---|---|---|---|---|
| 1 | 400 | −60 | 260 | +40 |
| 2 | 380 | +30 | 250 | +55 |
| 3 | 420 | −120 | 270 | −20 |
| 4 | 390 | +10 | 240 | −15 |
過濾在三個期間有幫助,在一個期間有害。它移除了大約三分之一的交易。接下來的問題是,被移除的交易是否集中在突破附近,以及隨機開關是否也能做到同樣的效果。
在一個樣本中有效的盤整過濾,在樣本外還能維持嗎?
往往不能,因為過濾會增加參數,而這些參數可能擬合你樣本中的特定突破,所以在信任它之前要先檢查穩健度。回看期間、兩個門檻與箱長,是四個新增的選擇。每多一個選擇,就多一次擬合雜訊的機會。嘗試許多過濾變體並只留下最好的一個,就是研究者所說的資料窺探(White, 2000)。Bailey 等人(2014)指出,在足夠多次嘗試之後,即使沒有任何變體具備優勢,也很容易找到亮眼的樣本內結果。執行下列檢查:
- 鄰近範圍。相近的門檻,例如以 0.25 與 0.35 取代 0.3,應該給出相近的結果。只有單一尖銳的峰值,就表示是擬合。
- 推進分析。只用樣本內(IS)資料選擇過濾設定,並在接下來的期間評估,如推進分析所述。
- 其他資料。在另一個市場或 K 棒週期上執行同一個過濾。真實的盤整行為往往不只出現在一處。
- 變體數量。寫下你試過多少個過濾版本。從五十個版本中挑出的結果,要求比三個版本中的結果更高。
AlphaPrime 的策略檢驗包含推進分析,因此可以在其設定未見過的期間上評估過濾。
如果你使用 AlphaPrime,這代表:把狀態過濾當作任何其他進場條件來對待。給它一個小的參數範圍,在每次評估中都保留手續費、滑價與下一根 K 棒執行,並以推進分析的結果而不是最佳的回測來評判它。
常見問題
效率比率多少代表市場處於盤整?
沒有單一數值適用於每個市場與每種 K 棒週期。請在你自己的歷史資料上畫出效率比率,看它在圖上你能看出的盤整期間落在哪裡。然後選擇一個鄰近數值都給出相近測試結果的門檻,而不是回測最好的那個單一數值。
盤整過濾應該使用 KAMA K 棒還是原始 K 棒?
過濾請使用原始 K 棒。KAMA 式 K 棒恰好在盤整結束時最慢,所以建立在它們之上的過濾會把 K 棒的延遲加到自己的延遲上。自適應 K 棒仍然適合用在交易訊號本身。
KAMA 盤整過濾能提早偵測突破嗎?
KAMA 要等效率比率上升後才會反應,這會在突破開始後晚一根或更多 K 棒。硬性覆寫,例如在已完成的 K 棒收在近期高低箱之外時關閉,則會在第一根突破 K 棒就反應。它的代價是假突破也會讓它關閉。
停損與停利在同一根 K 棒內時,如何回測剝頭皮?
K 棒價格看不出是最高價還是最低價先出現。如果有 K 棒內較小 K 棒週期的資料就使用它,否則就假設停損先被觸發。兩種方式都測試:停損先觸發與停利先觸發的結果差距很大,就顯示結果有多依賴未知的順序。
狀態過濾能減少過度最佳化嗎?
本身不能。過濾會增加參數,讓搜尋有更多方式擬合過去。只有在它於多數期間改善結果、勝過隨機開關,並通過推進分析測試時才有幫助。
參考資料
- Bailey, D. H., Borwein, J., López de Prado, M., & Zhu, Q. J. (2014). Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance. Notices of the American Mathematical Society, 61(5), 458–471.
- White, H. (2000). A Reality Check for Data Snooping. Econometrica, 68(5), 1097–1126.

