布林通道策略:運作原理與回測方法
布林通道是 20 根 K 棒的移動平均,上下各加減 2 個標準差,這是 John Bollinger 使用的標準設定。布林通道可支撐均值回歸與突破兩種相反的策略,各自只在部分市場與時期有效。回測通道規則時,請用下一根 K 棒成交、計入成本、使用樣本外(OOS)資料並測試一整段參數範圍,而不是只挑一組幸運的數值。
作者 Soren Huang · 發佈 · 更新於 · 編輯原則
目錄
布林通道作為交易策略是如何運作的?
布林通道畫出一條移動平均線,以及位於其上下、相距若干倍標準差的兩條線。交易者有兩種相反的用法:賭價格回到平均(均值回歸),或順著收在通道外的方向操作(突破)。沒有任何單一規則適用於所有市場。公平的測試要用下一根 K 棒成交、計入成本、使用未見過的資料,並測試鄰近的參數。
布林通道是一種價格包絡線,由一條移動平均線和兩條外側線組成,外側線與平均線的距離會隨近期波動度擴大或縮小。可以把它想成一條高速公路的車道:車輛蛇行得越多,車道越寬;車流平穩時,車道就變窄。台灣的交易者稱之為布林通道。許多教學會介紹一組通道「型態」。只有當你把每種型態寫成精確的規則,它才會成為可測試的策略。布林通道屬於波動類的技術指標,近親還有肯特納通道。
布林通道是怎麼計算的?
布林通道先取近期收盤價的平均,再加上與減去一個倍數,這個倍數乘上的是這些收盤價通常偏離平均的幅度。標準差是衡量一組數值通常偏離自身平均多遠的指標。收盤價分散時,標準差大;收盤價集中時,標準差小。布林通道指標頁面說明了如何解讀這三條線,因此本文把篇幅放在如何測試它們。
計算用到兩個設定:N 是 K 棒的根數(長度),k 是標準差的倍數(寬度)。
上軌 = 中軌 + k × 標準差;下軌 = 中軌 − k × 標準差。這裡的中軌是最近 N 根收盤價的簡單平均。標準差以同樣的 N 根收盤價計算。字母 k 是你選擇的寬度倍數。
假設範例
最近 20 根收盤價平均為 100.0,標準差為 2.0。當 k = 2 時,上軌為 104.0,下軌為 96.0。接著市場趨於平靜,標準差降到 1.0。通道移到 102.0 與 98.0,平均並沒有改變。收在 103.0 的 K 棒,在平靜的市場中位於通道外,在波動大的市場中則位於通道內。
布林通道的創造者 John Bollinger 以 20 根 K 棒和 2 倍標準差作為標準設定。寫規則時,有兩個相關的讀法很有幫助。%b 是收盤價在通道內的位置:下軌為 0,中軌為 0.5,上軌為 1。帶寬是兩條通道線之間的距離除以中軌,用來顯示目前波動度相對於過去是高還是低。
測試時有兩個細節要注意。第一,標準差可以用「母體」或「樣本」的方式計算,通道會因此略有不同。研究與交易平台請使用相同的方法。第二,在常態分布下,約 95% 的數值落在兩個標準差之內,但價格變動的極端走勢比常態分布更多。因此收在通道外的比例並不是固定的 5%,請用你自己的資料去計算。
均值回歸還是突破:你要怎麼交易通道?
同一個事件,也就是收在通道外,在一種策略中是賣出訊號,在另一種策略中卻是買進訊號,所以你要先決定自己押注的是哪一種市場行為。均值回歸是一種押注被拉伸的價格會回到平均附近的策略。突破策略則押注強到足以衝出通道的走勢會延續。
| 均值回歸 | 突破 | |
|---|---|---|
| 基本做多進場 | 收在下軌之下,或收盤回到下軌之上 | 收在上軌之上 |
| 基本出場 | 中軌或對側通道線 | 中軌、移動停損或反向訊號 |
| 所需的市場行為 | 橫向盤整、區間震盪的時期 | 趨勢時期,常出現在平靜階段之後 |
| 表現不佳之處 | 強勢趨勢中,價格持續收在某一側通道線上或之外 | 區間盤整中,多數突破會回落到通道內 |
| 典型的交易特徵 | 許多小賺、少數大賠 | 許多小賠、少數大賺 |
在強勢趨勢中,價格可能連續許多根 K 棒收在上軌之上或上軌之外。交易者稱之為「沿著通道走」。這正是突破交易者想要的,也是均值回歸交易者害怕的。壓縮(squeeze)是指帶寬降到長期回顧期間內最低水準的時期。壓縮告訴你波動度異常低,但不會告訴你下一波走勢的方向。
布林通道該用哪些參數,它們有多敏感?
沒有所謂最佳的一組設定。長度決定通道記住多少歷史,寬度決定觸及通道有多罕見,而好的設定是鄰近的設定也能給出合理結果。長度計算的是 K 棒根數,不是時間。在 5 分鐘 K 棒上,20 根涵蓋 100 分鐘;在日 K 棒上,20 根涵蓋約一個月的交易。在某個 K 棒週期上調好的規則,換到另一個週期就成了不同的策略。
通道較寬,例如 k = 2.5 而不是 2,產生的訊號較少,且每個訊號離平均更遠。交易筆數少也代表證據較少,所以少量交易得出的高平均每筆損益可能只是運氣。通道較窄則交易更頻繁,交易成本的影響也就更大。
要了解一條規則有多敏感,請測試一整組設定,而不是只測一組。然後看結果的形狀,而不只是看最高的那個數值。把 N 和 k 整組格點的結果放進 AlphaPrime(Valynox) 的策略資料庫排序,就能看出最高那一組旁邊的設定是不是也表現相近。
假設範例
你測試長度 10、15、20、25 和 30,搭配寬度 1.5、1.75、2.0、2.25 和 2.5,共 25 種組合。在情況 A 中,最佳格子是長度 25、寬度 2.25,而它周圍的每一格都虧錢。在情況 B 中,以長度 20、寬度 2.0 為中心的九格區塊呈現相近且中等的結果。情況 B 比較可能反映真實的市場行為,情況 A 則可能只是這份資料中的雜訊。
在 AlphaPrime中,策略生成讓你設定參數範圍、進場與出場條件,以及搜尋限制。這樣搜尋就能在你設定的範圍內嘗試許多通道設定,而不是只測一組。
哪些過濾條件與出場方式能把通道訊號變成策略?
單純的通道觸及很少是一個完整的策略。多數可測試的版本會加上一個符合所選市場行為的過濾條件,以及一個限制最壞情況的出場方式。
| 附加條件 | 作用 | 適用 |
|---|---|---|
| 趨勢過濾(較長期移動平均線的斜率) | 只在較長期均線走平時做均值回歸;突破只順著它的方向 | 兩者皆可 |
| 壓縮過濾 | 只在帶寬處於低水準之後才做突破 | 突破 |
| 再進場確認 | 等收盤回到通道內才進場,而不是第一次收在通道外就進場 | 均值回歸 |
| 交易時段過濾 | 略過開盤後的前幾根 K 棒,或略過夜盤 | 兩者皆可 |
| 中軌出場 | 價格回到平均時停利 | 均值回歸 |
| 波動度停損 | 在與進場方向相反、相距平均真實波幅(K 棒的典型波動範圍)某個倍數處出場 | 兩者皆可 |
| 時間停損 | 若未達目標,在固定根數的 K 棒後出場 | 兩者皆可 |
沒有停損的均值回歸規則,會在沿著通道走的期間一路抱著,而這少數幾筆交易往往決定整體結果。每個過濾條件至少會增加一個參數,而每個參數都多一分擬合雜訊的機會。請一次只加一個過濾條件,而且只有在改善效果也出現在未用於挑選它的資料上時,才保留它。
如何一步一步回測布林通道策略?
把規則寫得精確到兩個人寫出來的程式碼會一樣,然後在計入成本、下一根 K 棒成交,並使用未經調校的資料下進行測試。
- 精確定義訊號。使用 K 棒收盤價,而不是盤中觸及。有了 K 棒資料,你無法得知一根 K 棒內是最高價還是最低價先出現。
- 在下一根 K 棒執行。尚未完成的 K 棒,其通道會持續變動。請在已完成的 K 棒上做決定,並以下一根 K 棒的開盤價成交。
- 設定交易時段。如果你的 K 棒包含夜盤,較為清淡的夜盤 K 棒會讓通道變窄,這可能在日盤開盤時產生額外的訊號。請有意識地選擇只用日盤或使用全時段資料。
- 從第一次執行就納入成本。在短週期 K 棒上,以中軌為目標的均值回歸可能很小。回測中的交易成本指南說明如何拿成本與平均每筆損益比較。
- 測試一組參數並切分資料。保留較晚的一段期間不去動它,或使用推進分析,逐步重新調整並向前測試。
- 分別檢視多空,並逐年檢視。如果結果只靠某一邊或某一年支撐,在你信任它之前需要先有解釋。
假設範例
在 5 分鐘圖上,通道上下相距 8 點,因此在下軌做多進場時,中軌目標約在 4 點之外。如果手續費加滑價每一買一賣(來回)花費 1 點,那麼在還沒計入任何虧損交易之前,成本就吃掉了目標的四分之一。在通道相距 80 點的日 K 棒上,同樣的 1 點幾乎無關緊要。
AlphaPrime 的回測涵蓋資料解析度、手續費與滑價,以及交易時段,並一律以下一根 K 棒成交。因此步驟 2 已內建,步驟 3 與 4 是你選擇的設定,而不是需要自己寫的程式碼。
常見規則經得起考驗嗎?為什麼沒有任何設定放諸四海皆準?
常見的通道規則只在部分市場、K 棒週期與時期有效。請把每個好結果理解為關於你所測試資料的陳述,而不是關於布林通道一般性的結論。一個盤整了三年的市場,接下來兩年可能進入趨勢。指數期貨與商品期貨在同一個 K 棒週期上可能表現不同。適合 5 分鐘 K 棒的規則,在日 K 棒上可能失效。
第二個原因是你嘗試的變化版本數量。對技術交易規則的研究顯示,當在同一份資料上測試許多規則時,最佳的那一個可能只因機率而看起來很強。White 的 Reality Check 等方法可以針對這點進行調整(Sullivan, Timmermann & White, 1999;White, 2000)。你嘗試的變化版本越多,最佳回測被灌水的程度就越大(Bailey et al., 2014)。
假設範例
25 組通道設定 × 2 個方向(均值回歸與突破)× 3 種過濾條件選擇 = 150 個變化版本。即使其中沒有任何一個真的具有優勢,這 150 個中仍有幾個只靠運氣就會呈現不錯的回測。
| 檢查項目 | 令人放心 | 偏弱 |
|---|---|---|
| 鄰近的設定 | 結果相近 | 只有一格為正 |
| 平均每筆損益與成本 | 是一買一賣(來回)成本的數倍 | 接近成本 |
| 樣本外(OOS)期間 | 保有樣本內(IS)結果中合理的比例 | 變得持平或轉為負值 |
| 各年度 | 結果分散在各年度 | 某一年貢獻了大部分結果 |
| 多與空 | 兩邊都有貢獻,或差異有合理原因 | 一邊撐起一切卻沒有理由 |
AlphaPrime 的策略檢驗會以你設定的門檻進行推進分析等檢查。無論你測試了多少變化版本,每個候選策略都以同一套標準來評判。
如果你使用 AlphaPrime,這代表:定義通道的想法、它的參數範圍以及一兩個過濾條件,讓搜尋從一開始就納入成本與下一根 K 棒成交。然後依據高原與樣本外(OOS)結果來評判候選策略,而不是依據單一最佳的回測。
常見問題
最佳的布林通道設定是什麼?
沒有哪一組設定對所有市場都是最佳。標準設定是 20 根 K 棒與 2 倍標準差,是個合理的起點。請在你自己的市場與 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.
- Sullivan, R., Timmermann, A., & White, H. (1999). Data-Snooping, Technical Trading Rule Performance, and the Bootstrap. The Journal of Finance, 54(5), 1647–1691.
- White, H. (2000). A Reality Check for Data Snooping. Econometrica, 68(5), 1097–1126.

