VALYNOXSTRATEGY RESEARCH TECHNOLOGY
AlphaPrimeAlphaPrime
策略學院 / 指標與訊號

用於盤中剝頭皮的 KAMA 盤整過濾:突破時更少的延遲

用短週期效率比率在原始 K 棒上衡量盤整狀態,加上能立即關閉過濾的突破覆寫,並在每根 K 棒收盤時決定過濾狀態。再用多個期間的開關測試來評估它。

作者 · 發佈 · 更新於 · 編輯原則

目錄
  1. 如何偵測盤整狀態又不讓過濾產生延遲?
  2. 什麼是 KAMA 式自適應 K 棒?
  3. 價格突破時,哪些盤整衡量指標反應最快?
  4. 如何避免過濾在突破時產生延遲?
  5. 回測應如何處理盤中剝頭皮交易的成交?
  6. 如何把狀態過濾當作開關來測試?
  7. 在一個樣本中有效的盤整過濾,在樣本外還能維持嗎?
  8. 常見問題
  9. 參考資料

如何偵測盤整狀態又不讓過濾產生延遲?

用短週期效率比率在原始 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棒在突破時落後:假設的原始價格在100至102之間橫向整理十根K棒,隨後向上突破至106、112和118。自適應K棒線維持平坦在101附近,在第二和第三根突破K棒時仍遠低於價格。 自適應K棒落後 假設價格,原始 vs 自適應 區間 價格 落後 自適應 自適應K棒在突破時爬行。 所以:用原始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 棒就足以關閉進場。效率比率決定區間何時形成,覆寫決定區間何時結束。依下列順序建構:

  1. 在收盤時決定。在每根已完成的 K 棒收盤時計算過濾,並只套用到下一根 K 棒。
  2. 定義區間箱。區間箱是最近 m 根已完成 K 棒的最高價與最低價,不含目前這根 K 棒。
  3. 收在箱外時覆寫。一根已完成的 K 棒收在箱頂之上或箱底之下,就立即關閉過濾。
  4. 使用兩個門檻。效率比率低於某一水準時開啟,高於較高的水準時關閉,例如低於 0.2 開啟、高於 0.3 關閉。兩者之間的間隔可避免過濾在單一水準附近不停開關。
  5. 緩慢重新進場。保持關閉,直到比率已連續幾根已完成 K 棒低於較低的門檻。

在上面的範例中,第一根突破 K 棒收在 106,高於箱頂 102。因此覆寫會比單靠效率比率早一根 K 棒關閉過濾。代價是假突破。一根收在箱外之後又回到區間內的 K 棒同樣會關閉過濾,所以要統計覆寫跳過了多少筆好的盤整交易。

突破覆寫快一根 K 棒:在假設範例中,第 10 至 13 根 K 棒的效率比分別為 0、0.17、0.43 和 0.50,關閉水準為 0.3。覆寫在第 11 根 K 棒就關閉進場,而效率比到第 12 根 K 棒才關閉。 覆寫快一根 K 棒 每根 K 棒的效率比(假設) ER 0.3 關閉 第 10 棒 0 第 11 棒 0.17 覆寫關閉 第 12 棒 0.43 ER 關閉 第 13 棒 0.50 收盤在箱體外者先動作。 所以:ER 要搭配覆寫。
在假設範例中,突破覆寫比效率比率穿越其門檻早一根 K 棒關閉進場。

回測應如何處理盤中剝頭皮交易的成交?

只使用下單當時已經存在的數值。當停損與停利同時落在同一根 K 棒內時,不要假設有利的那一個先發生。剝頭皮的停損與停利都很緊,所以這兩種錯誤都會迅速墊高結果。逐項檢查:

  1. 價位取自已完成的 K 棒。目前這根自適應 K 棒的收盤價,是一個尚不存在的收盤價的平滑版本。由它畫出的價位會在 K 棒期間移動,讓成交看起來完美。請使用前一根已完成的 K 棒。回測中的前視偏誤指南示範了檢查此類洩漏的一根 K 棒檢查法。
  2. 過濾狀態取自前一次收盤。目前 K 棒的最高價與最低價在收盤前都不是最終值,所以使用它們的盤整衡量也會洩漏。
  3. 解決停損與停利的先後。一根 K 棒的開盤、最高、最低與收盤價只顯示價格走了多遠,而不是走的順序。如果有 K 棒內較小 K 棒週期的資料,就使用它。沒有的話,就假設停損先被觸發。
  4. 用同樣方式處理進場 K 棒。如果限價進場是在某根 K 棒中成交,你同樣不知道該 K 棒的最高價是在成交之前還是之後。
  5. 讓限價成交更嚴格。要求價格穿越限價至少一個跳動點,而不只是碰到。
  6. 每次執行都計入成本。剝頭皮的平均每筆損益很小,所以要把它與一買一賣(來回)成本比較,詳見回測中的交易成本。

回報停損與停利落在同一根 K 棒內的交易比例。測試一次假設停損先觸發,再測一次假設停利先觸發。兩個結果差距很大,代表結果取決於你看不到的順序。AlphaPrime的回測包含下一根 K 棒執行、手續費與滑價以及交易時段,所以每次評估都使用相同的執行假設。

停損或停利誰先到:一根 K 棒,進場價 100,停損 99,停利 101.5,全都在這根 K 棒 98.5 至 102 的範圍內。若先出現高點,就是觸及停利;若先出現低點,就是觸及停損。K 棒的價格無法判斷先後。 停損或停利:誰先到? 同在一根 K 棒內 停利 進場 停損 先出高點 觸及停利 先出低點 觸及停損 K 棒價格看不出先後。 所以:假設先觸及停損。
當停損與停利都落在同一根 K 棒內時,這根 K 棒的價格無法告訴你哪一個先被觸發。

如何把狀態過濾當作開關來測試?

同一個策略跑兩次,一次開啟過濾、一次關閉,其他都不變,然後逐期間比較結果。依下列步驟:

  1. 固定基礎策略、其參數、成本與成交規則。
  2. 關閉過濾執行。
  3. 開啟過濾執行。
  4. 把歷史資料分成多個期間,例如按年度,使每個期間同時包含盤整與突破。
  5. 每個期間比較交易筆數、扣除成本後的淨損益、平均每筆損益與最大回撤。
  6. 列出被過濾移除的交易,檢查它們是否大多是突破前後的虧損交易。
  7. 跑一個隨機開關,讓它在相同比例的 K 棒上關閉進場。如果它對結果的改善與你的過濾差不多,那你的過濾並不帶有任何資訊,只是交易得更少而已。

假設範例

扣除成本後以點數計的淨損益,過濾關閉與過濾開啟的比較:

期間關閉時交易筆數關閉時淨損益開啟時交易筆數開啟時淨損益
1400−60260+40
2380+30250+55
3420−120270−20
4390+10240−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.