布林通道在台股的正確用法:拆成選股因子加大盤風控
散戶最熟的布林通道用法是「股價觸下軌就買、觸上軌就賣」。但把這個規則放進台股做 11 年回測(2015-2026),研究段年化報酬只有 2.5%,幾乎等於沒賺。問題不在布林通道,而在用錯地方——把整個指標當成單一買賣訊號。用上市櫃真實價量資料攤開來看,布林通道真正的價值在於拆成兩個各司其職的零件:第一個零件是「擠壓狀態下的 %b 位置」,當成橫截面選股因子(在帶寬收窄、低波蓄勢的個股裡挑相對位置);第二個零件是「全市場站上各自布林中軌的個股比例(廣度)」,當成大盤多空風控開關。把這兩個零件疊上 70 日動能與低波加權,組成一套完全不含基本面的純技術策略:可交易宇宙裡選綜合分最高的 10 檔、反波動加權,廣度轉弱時清空選股、改持半倉 0050 防禦。這套「布林雙核心純技術策略」研究段(2015-2021)年化 28.9%、月 Sharpe 1.24,樣本外(2022-2026)年化 27.8%、月 Sharpe 1.29,全期(2015-2026)年化 28.4%、月 Sharpe 1.20,全期最大回撤 -33.4%——三段都勝過含息 0050(全期年化 21.0%、Sharpe 1.05、回撤 -34.0%),且回撤略低。
先用一張表回答你搜尋「布林通道」時最想知道的事:
| 你想知道的 | 本文用真實台股回測的回答 |
|---|---|
| 布林通道是什麼 | 以 20 日均線為中軌、上下各 2 個標準差為通道的波動指標;%b 衡量價格在通道中的位置 |
| 觸下軌買進有效嗎 | 台股 11 年回測研究段年化僅 2.5%,接近無效;觸上軌追突破也只有 9.6% |
| 布林通道能拿來選股嗎 | 整個指標單獨選股不行;但拆出「擠壓狀態下的 %b」當其中一個因子,配合動能與低波就有效 |
| 那它該怎麼用 | 兩個零件分工:擠壓 %b 當選股因子、全市場站上中軌的廣度當大盤風控開關 |
| 效果如何 | 雙核心純技術策略研究段年化 28.9%、Sharpe 1.24,樣本外 27.8%、1.29,全期 28.4%、1.20,三段都勝含息 0050 |

本文所有數字皆出自 finlab 套件抓取的上市櫃真實價量資料(
price與etl:adj_close含息還原股價),回測區間 2015-01 至 2026-06-09,基準為含息 0050。文末附可下載的strategy.py與data.csv,可自行重現。對回測的觀念還不熟,可先看回測是什麼。
布林通道是什麼
布林通道(Bollinger Bands)是 John Bollinger 在 1980 年代提出的波動指標,由三條線組成:中軌是 N 日移動平均(常用 20 日),上下軌則是中軌加減 K 個標準差(常用 2 個)。標準差會隨波動放大或收縮,所以通道會「呼吸」:盤整時收窄、急漲急跌時張開。布林通道的學理整理見 John Bollinger(2001)的《Bollinger on Bollinger Bands》。技術指標的基礎名詞可參考名詞詞彙表。
實務上常用兩個衍生量:
%b:價格在通道中的相對位置,公式為 %b =(收盤價 − 下軌)/(上軌 − 下軌)。等於 0 代表貼著下軌、等於 1 代表貼著上軌、0.5 代表在中軌。
帶寬(Bandwidth):(上軌 − 下軌)/ 中軌,衡量通道張開的程度。帶寬收到很窄稱為「擠壓(squeeze)」,常被視為波動即將放大的前兆。
布林通道在台股有兩派互斥用法:均值回歸派主張「觸下軌買、觸上軌賣」,假設價格會回到中軌;擠壓突破派則主張在帶寬收窄後,等價格向上突破上軌再追。哪一派對?直接回測。
布林通道的數學定義:四條算式
把上面的文字寫成公式,布林通道只有中軌、上軌、下軌三條線,外加一個衍生的位置指標 %b:
逐項拆解每個符號:
- 是每日收盤價, 是回看天數(常用 20 日), 是標準差倍數(常用 2)。
- (Middle Band,中軌)是收盤價的 日簡單移動平均 ,也就是這段期間的平均成本線。
- 是同一段 日收盤價的標準差,衡量這段期間的波動大小。波動放大, 就變大。
- (上軌)、(下軌)分別是中軌加減 個標準差。因為 會隨波動呼吸,通道在盤整時收窄、在急漲急跌時張開,這是布林通道和固定百分比通道最大的差別。
- 把收盤價換算成「在通道裡的相對位置」:等於 0 貼著下軌、等於 1 貼著上軌、0.5 在中軌、超過 1 代表收在上軌之上。它把三條線壓縮成一個 0 到 1 的數字,方便橫截面比較。
帶寬則定義為 ,是把通道張開程度標準化成中軌的百分比,後面的擠壓濾網就是用它來判斷波動是否收斂。這裡有一個性質後面會反覆用到:中軌只跟週期 有關、和倍數 無關,這在參數最佳化那節會直接砍掉一半的調參自由度。
看一張圖就懂:兩派訊號在個股上長什麼樣
先用台積電(2330)一段約 12 個月的走勢,把兩派教科書訊號標在圖上。下方面板是布林上中下軌(20 日、±2 標準差),上方價格面板標出均值回歸派(跌破下軌買、站上上軌賣)與擠壓突破派(帶寬擠壓後突破上軌買)各自的進出點:

光是這 12 個月,台積電就觸發了 19 個教科書訊號:均值回歸派的「跌破下軌買」3 次、「站上上軌賣」12 次,擠壓突破派的「擠壓後突破上軌買」4 次。問題一眼可見——在這段台積電整體往上的趨勢裡,均值回歸派的「站上上軌就賣」會一路在低位把上漲的部位賣光,等於賣在起漲點;而「跌破下軌就買」在真正的回檔段又常常買得太早。換成聯發科(2454)更明顯,同一套規則觸發 21 個訊號、其中 14 次是上軌賣出訊號:

這就是布林通道單獨當買賣訊號的結構性問題:觸軌訊號又多又雜,在趨勢盤裡會反覆把人甩出場(whipsaw),在趨勢段又會追高殺低。 訊號頻繁往往代表雜訊大、而非優勢多——這也預告了下一節回測會看到的結果:把這套規則攤到全市場、跑 11 年,幾乎沒賺到錢。
想自己重畫這張圖、把訊號標在任何一檔股票上,核心程式碼如下(完整版在文末可下載):
顯示程式碼
from finlab import data
# 套件會在需要資料時自動引導登入
finlab.login()
close = data.get("price:收盤價")
# 布林通道:20 日、±2 標準差(直接取 finlab 內建指標)
upper, middle, lower = data.indicator(
"BBANDS", timeperiod=20, nbdevup=2.0, nbdevdn=2.0
)
# 鎖定單一檔股票,取一段約 12 個月的窗來看訊號
sid = "2330"
px = close[sid].loc["2023-07":"2024-06"]
ub = upper[sid].loc["2023-07":"2024-06"]
mb = middle[sid].loc["2023-07":"2024-06"]
lb = lower[sid].loc["2023-07":"2024-06"]
# 均值回歸派:收盤跌破下軌當天 = 買、站上上軌當天 = 賣
crossed_down = (px < lb) & (px.shift(1) >= lb.shift(1))
crossed_up = (px > ub) & (px.shift(1) <= ub.shift(1))
meanrev_buy = px.index[crossed_down]
meanrev_sell = px.index[crossed_up]
# 擠壓突破派:帶寬收到近 120 日中位以下(擠壓)時,向上突破上軌才算數
bandwidth = (ub - lb) / mb
squeeze = bandwidth < bandwidth.rolling(120, min_periods=60).median()
squeeze_breakout = px.index[crossed_up & squeeze]
print("均值回歸買點:", len(meanrev_buy), "賣點:", len(meanrev_sell))
print("擠壓突破買點:", len(squeeze_breakout))散戶最常見的用法,在台股 11 年幾乎沒賺到錢
我們在可交易宇宙(成交金額前 300 大、收盤 > 10 元,排除 ETF、金融股、KY 股、處置股)裡,把幾種「布林通道選股」用法各跑一次月再平衡的回測,研究段(2015-2021)結果如下:
| 布林通道用法 | 研究段年化報酬 | 對照含息 0050(15.3%) |
|---|---|---|
| 觸下軌買進(%b 最低 30 檔,均值回歸) | 2.5% | 大幅落後 |
| 觸上軌追突破(%b 最高 30 檔) | 9.6% | 落後 |
| 純動能籃(不靠布林,70 日最強 10 檔,反波動加權) | 19.3% | 領先,但月 Sharpe 僅 0.67、全期回撤 -60.2% |

結論很清楚:最多人用的「觸下軌買進」在台股研究段年化只有 2.5%,接近無效。 原因不難理解——%b 是個「雙義訊號」:低 %b 可能是健康回檔(該買),也可能是趨勢轉空的起點(該跑);把它單獨拿來橫截面排名選股,等於把兩種互斥邏輯混在一起互相抵消。我們也測了 %b 的多空價差(做多低 %b、放空高 %b),研究段年化是負的,印證了這一點。整個布林通道單獨拿來選股不行。
關鍵的轉折在這裡:%b 並非全無資訊,問題是它被當成全天候訊號。如果先用「帶寬擠壓」把雜訊濾掉——只在帶寬收到自身近 120 日中位以下、波動已收斂蓄勢的個股上才看 %b——這個受限版的 %b 就成了一個有用的選股因子。延伸閱讀:技術面與基本面選股的差異、動能策略。
把布林通道拆成兩個有用的零件
整個布林通道當買賣訊號失效,但拆開來看,它有兩個各自有效的零件,本文的純技術策略就建立在這兩個零件上。
零件一:擠壓狀態下的 %b 當選股因子
擠壓突破派的核心論點——「帶寬收窄代表能量累積,後面的動作比較真」——在台股回測站得住。我們把它變成一個選股因子:只在「帶寬低於自身近 120 日中位(處於擠壓狀態)」時,才計算個股 %b 的橫截面排名。單獨檢驗這個受限 %b 因子,研究段月 Sharpe 從不設擠壓濾網的 0.57 提升到 0.77,樣本外年化維持正報酬(13.3%)。機制是:在已經收斂的低波狀態挑相對位置,過濾掉高波亂漲中的雜訊,提高了訊號的訊噪比。這個零件不會自己當主因子,而是和動能、低波一起組成選股的綜合分。
零件二:全市場站上中軌的廣度當大盤風控
單看一檔指數(例如 0050)有沒有站上自己的布林中軌,訊號太雜:盤整期會反覆穿越、來回甩巴掌。但如果改看「全市場有多少比例的股票站上各自的布林中軌」,就得到一個橫截面的、平滑的大盤多空力道度量,我們稱為布林廣度。廣度高,代表多數個股結構偏多;廣度崩落,代表系統性轉弱。把它做成 risk-on / risk-off 的開關,就是整套策略的防禦腿。

這個「用波動結構控風險」的邏輯,和學術上的波動度擇時一致——Moreira & Muir (2017) 在《Volatility-Managed Portfolios》證明:在波動升高、風險惡化時調降曝險,能顯著提升投資組合的 Sharpe。布林廣度正是一個可操作的市場波動結構訊號。
把這兩個零件疊上動能與低波組成完整策略後,效果一目了然。下圖比較「裸動能籃」(同宇宙、同 70 日動能、反波動加權,但不加擠壓 %b 選股、不加廣度風控)與加上兩個布林零件後的完整策略:裸動能籃研究段月 Sharpe 只有 0.67、樣本外 0.75、全期最大回撤深達 -60.2%;加上布林選股與中軌廣度風控後,研究段月 Sharpe 拉到 1.24、樣本外 1.29,全期最大回撤收斂到 -33.4%。

順帶一提,選股端我們用「買最強的股票」而不是「買最弱想等反彈」,這和 Jegadeesh & Titman (1993) 的動能效應一致:過去的贏家在中期傾向繼續贏。關於用大盤訊號降低回撤,也可參考市場濾網如何降低回撤與均線市場濾網。
完整策略:布林雙核心純技術選股
把上面兩個零件疊上動能與低波,組成一套可執行、可重現、完全不含基本面的純技術策略:
- 選股綜合分(三個技術因子相加):在可交易宇宙裡,每檔股票算三項橫截面百分位再相加——①70 日報酬(動能);②擠壓狀態下的 %b(帶寬低於自身近 120 日中位時才計分);③0.35 倍的低 NATR(ATR20 ÷ 收盤,取負後排名,越低波越高分)。
- 持股:取綜合分最高的 10 檔,以反波動(1 ÷ NATR)加權——波動越低的股票配重越高。
- 大盤風控(布林廣度):計算全市場「收盤站上各自布林中軌(20 日、±2 標準差)」的個股比例,取 10 日指數移動平均平滑,再用雙門檻 hysteresis 判斷多空——廣度 > 0.42 轉為 risk-on、< 0.27 轉為 risk-off,介於中間維持前一個狀態(避免在門檻附近反覆切換)。
- 資產配置:risk-on 時滿倉持有那 10 檔選股籃;risk-off 時選股清零、改持 0050 佔總曝險 0.5(空頭只留半倉 0050 打底,不全空手)。
- 月再平衡。
選股端的核心程式碼(可直接交給你的 AI 助理改寫、或下載完整版執行):
顯示程式碼
import numpy as np
import pandas as pd
from finlab import data
close = data.get("price:收盤價")
amount = data.get("price:成交金額")
# 可交易宇宙:成交額前 300 大、收盤 > 10 元,排除 ETF 與權證/KY
liquidity = amount.rolling(60).mean()
is_common = pd.Series({s: str(s)[:4].isdigit() and not str(s).startswith("00")
for s in close.columns})
universe = liquidity.is_largest(300) & (close > 10) & is_common
# 布林通道(20 日、±2 標準差)與衍生量
upper, middle, lower = data.indicator("BBANDS", timeperiod=20, nbdevup=2.0, nbdevdn=2.0)
percent_b = (close - lower) / (upper - lower) # %b:價格在通道中的位置
bandwidth = (upper - lower) / middle # 帶寬
# 因子一:70 日動能橫截面百分位
mom_rank = (close / close.shift(70) - 1).where(universe).rank(axis=1, pct=True)
# 因子二:只在擠壓(帶寬 < 近 120 日中位)時計分的 %b 橫截面百分位
squeeze = bandwidth < bandwidth.rolling(120, min_periods=60).median()
squeeze_pb_rank = percent_b.where(universe & squeeze).rank(axis=1, pct=True)
# 因子三:低波 NATR = ATR20 / 收盤,取負後排名(權重 0.35)
natr = data.indicator("ATR", timeperiod=20) / close
lowvol_rank = (-natr).where(universe).rank(axis=1, pct=True)
# 綜合分取最高 10 檔,反波動 1/NATR 加權
score = mom_rank.add(squeeze_pb_rank, fill_value=0) + 0.35 * lowvol_rank
basket = score.where(universe).rank(axis=1, ascending=False) <= 10完整的廣度風控、配置與回測請見文末可下載的 strategy.py。
這套策略研究段(2015-2021)年化 28.9%、月 Sharpe 1.24、月 Sortino 2.85,研究段最大回撤 -32.2%;樣本外(2022-2026)年化 27.8%、月 Sharpe 1.29、月 Sortino 2.58;全期(2015-2026)年化 28.4%、月 Sharpe 1.20、月 Sortino 2.52、全期最大回撤 -33.4%。三段都勝過含息 0050(全期年化 21.0%、Sharpe 1.05、回撤 -34.0%),且全期回撤略低。
下面是完整互動式回測:月報酬熱力圖、權益曲線、年度績效都可以直接在文章裡操作:
回測方法與口徑
量化結論的可信度取決於方法,以下逐項交代:
- 交易成本:策略使用 finlab
sim(),台股預設已內扣手續費(本文以 0.1425% 打三折計)與賣出證交稅 0.3%。 - 滑價:未額外假設滑價,實際成交衝擊取決於資金規模與流動性。
- 股票池:上市櫃普通股,60 日均成交金額前 300 名、收盤 > 10 元。
- 排除類別:排除 ETF(代號 00 開頭)、權證/KY/特別股(非 4 碼純數字)、金融保險股、處置與全額交割股,以降低生存者偏差與不可交易標的污染。
- 前視偏差:70 日動能、布林通道、%b、帶寬擠壓、NATR 與廣度均只使用當日(含)以前的價格;月頻再平衡,訊號於當期可得。完全不使用財報或月營收等基本面資料,自然沒有財報公布日對齊問題。
- 權重:選股籃以反波動(1 ÷ NATR)加權、單一資產不另設上限;0050 為風控層的防禦腿。
- 周轉率:年換手約 9.8 次(選股集中 10 檔 + 月再平衡 + 風控切換),高於被動持有,成本敏感度較高,已在
sim()內扣手續費與證交稅下計算。 - 樣本內外:研究段 2015-2021、樣本外 2022-2026 分開回報,所有數字兩段都列,避免只報漂亮的一段。
穩健度
這套策略的 edge 不是靠單一參數湊出來的:
- 跨參數穩健:在勝出設定(動能窗 70、選股 10 檔、廣度門檻 0.42/0.27)附近,把動能窗(50-70)、選股檔數(9-11)、廣度門檻、低波權重(0.35-0.4)、廣度 EMA span(8-12)各動一格,25 個鄰格中有 19 格仍同時通過「研究段年化 ≥ 25%、月 Sharpe ≥ 1.2」與「樣本外年化 ≥ 15%、月 Sharpe ≥ 1.0」的把關——是一片穩定的高原,不是靠單一參數湊出來的孤峰。
- 可解釋的單調規律:選股越集中(檔數越少),研究段報酬越高但回撤略增;廣度門檻越高(越早轉防禦),樣本外越穩但研究段報酬略降。甜蜜點落在 10 檔、門檻 0.42,正是報酬與回撤的平衡。
- 三個因子方向一致:動能、擠壓 %b、低波三項各自都是正貢獻,組合後研究段月 Sharpe 1.24,明顯高於只靠動能的裸籃 0.67。
參數最佳化:找穩健高原,不挑單一孤峰
這套策略有兩個最值得檢查的參數:選股檔數 (決定集中度)與大盤風控的 risk-on 廣度門檻(決定多早轉防禦)。很多人最佳化的做法是把所有參數組合跑一遍,挑研究段績效最高的那一格上線——這正是過度最佳化的典型陷阱:研究段最漂亮的單一峰值,往往是運氣湊出來的,換到樣本外就垮。正確的做法是看色溫圖找「一片站得住的高原」,而不是找「一根孤峰」。
我們對選股檔數(9/10/11/12)× risk-on 廣度門檻(0.38/0.42/0.46/0.50)做 4×4 網格,每一格都用該設定重算選股籃與風控訊號、重跑回測,色溫填研究段月 Sharpe:

這張圖一眼可見的結論是:綠色高原連成一大片,沒有突兀的孤峰。 橫看選股檔數軸,10 檔(研究段月 Sharpe 1.24)到 9 檔(1.31)較高、12 檔(1.13–1.04)逐漸下滑;縱看廣度門檻軸,0.42(1.17–1.31)那一列普遍偏綠,門檻拉到 0.50 才明顯降溫。整片網格 16 格裡,研究段月 Sharpe 落在 1.10 以上的就有 14 格——這代表策略的優勢是一整片參數區域共有的,不是靠某一格運氣。
我們本文預設取 10 檔、廣度門檻 0.42/0.27,它落在高原中段:研究段月 Sharpe 1.24、年化 28.9%,樣本外月 Sharpe 1.29、年化 27.8%。如果想要更高的研究段報酬,把選股集中到 9 檔即可——9 檔、門檻 0.42 那格研究段年化衝到 31.8%、月 Sharpe 1.31,樣本外也維持年化 29.2%、月 Sharpe 1.31,全期最大回撤 -33.2%;代價是集中度更高、單股風險更大。這正是「在高原上選參數」該有的樣子:相鄰的格子數字差距都在小數點後一兩位,選哪一格結論都成立,沒有免費午餐。 如果你看到某個最佳化「換個參數 Sharpe 就從 0.8 跳到 1.8」,那通常是踩到過擬合的地雷而非找到聖杯,樣本外幾乎一定打回原形。
不同大盤狀態下的表現:研究段與樣本外都站得住
判斷一套策略是不是只靠某一段行情湊出來,最直接的方法是把回測切成兩段、各自結算。本文把 2015-2021 當研究段(涵蓋 2015 股災、2018 中美貿易戰急跌、2020 疫情崩跌與反彈),2022-2026 當樣本外(涵蓋 2022 升息熊市與其後的強多頭,2026 標示「截至 2026-06」資料):
| 區間 | 大盤背景 | 策略年化 | 策略月 Sharpe | 策略最大回撤 | 含息 0050 年化 |
|---|---|---|---|---|---|
| 研究段 2015-2021 | 多次急跌與反彈交錯 | 28.9% | 1.24 | -32.2% | 15.3% |
| 樣本外 2022-2026(截至 2026-06) | 升息熊市後轉強多頭 | 27.8% | 1.29 | -31.9% | 30.4% |
| 全期 2015-2026 | — | 28.4% | 1.20 | -33.4% | 21.0% |
兩段分開看的重點是:策略在研究段與樣本外的年化都落在 27%–29%、月 Sharpe 都在 1.2 以上,沒有出現「研究段漂亮、樣本外垮掉」的過擬合特徵。 研究段它大幅領先含息 0050(28.9% vs 15.3%),靠的是動能選股加擠壓 %b 在震盪市裡挑到相對強勢標的;樣本外它與含息 0050 的差距縮小(27.8% vs 30.4%),因為 2022 之後是台股強單邊多頭,廣度風控偶爾轉防禦會在順風段少賺一點,但全期仍以較低回撤勝出。
加上月營收 YoY 會更好嗎:基本面是選配,不在主策略內
本文的主策略是完全不含基本面的純技術策略:選股只用價格動能、布林擠壓 %b 與波動度,風控只用站上中軌的廣度,沒有任何財報或月營收輸入。這是刻意的設計——純技術訊號每日可得、無財報公布延遲與對齊問題,回測口徑乾淨、可重現性高。
常見的延伸問題是:在選股端疊一層月營收年增率(YoY)過濾,績效會不會更好?這是一個合理的研究方向,但屬於「在純技術主策略之外的選配實驗」,不納入本文主策略的數字。原因有二:其一,主策略選股只取 10 檔、集中度已高,再加營收過濾會大幅縮小可選池,反而犧牲動能的爆發力;其二,月營收是領先指標、公布有時間落差,要正確對齊「當期(含)以前已公布」的資料才不會前視,這會把乾淨的純技術口徑複雜化。想實驗的讀者可在下載的程式碼裡,於綜合分計算前加一層 monthly_revenue 的 YoY 過濾自行對照。基本面與技術面如何分工,可延伸看技術面與基本面選股的差異。
策略的限制與取捨
- 集中度帶來較深回撤:策略只持 10 檔、全期最大回撤 -33.4%,與含息 0050 的 -34.0% 相當但並不算淺。選股集中換到較高報酬,代價是單股與類股風險集中,承受得住這級回撤才適合。
- 高周轉、成本敏感:年換手約 9.8 次明顯高於被動持有,報酬已在
sim()內扣手續費與證交稅後計算,但實單滑價會進一步侵蝕,資金規模越大越明顯。 - 崩盤型態涵蓋有限:廣度風控主要在 2018/2020/2022 幾次急跌上驗證,資料起點 2015,未對更早期(2008/2011)的崩盤型態做滾動測試,不保證對沒見過的型態同樣有效。
- 容量與成本:選股僅 10 檔、宇宙限前 300 大,大資金部署需重估流動性衝擊;回測未逐筆估算滑價與借券成本。
用布林通道最常犯的四個錯誤
把前面的回測與示意圖收斂成可直接避開的踩雷清單,這幾個錯誤是台股散戶用布林通道時最常見的:
- 把「觸下軌」當無腦抄底訊號。 低 %b 同時可能是健康回檔或趨勢轉空的起點,布林通道本身分不出來。台積電那張示意圖裡,下軌附近的買點有些確實反彈、有些則是繼續破底;攤到全市場 11 年,觸下軌買進研究段年化只有 2.5%。下軌是「波動參考線」,不是「保證反彈線」。
- 在多頭趨勢裡用「站上上軌就賣」。 強勢股會「沿著上軌走」很久,聯發科那段 12 個月就觸發了 14 次上軌賣出訊號,每一次照做都等於把上漲部位提早砍掉、賣在起漲點。趨勢盤裡,貼上軌是強勢的證據,不是該賣的訊號。
- 狂調參數想找最佳組合。 看完前面的色溫圖就知道:本文策略在選股 9 到 11 檔、廣度門檻 0.38 到 0.46 之間是一片打平的高原。把時間花在微調這幾格,遠不如把布林通道用對地方(擠壓 %b 當選股、廣度當風控)。研究段「換個參數就暴漲」的組合,幾乎都是過擬合。
- 把布林通道和 KD、RSI 疊在一起用。 這些都是擺盪/波動類指標,資訊高度重疊,硬疊通常是負貢獻。比較有效的是搭「不同性質」的訊號——例如用動能因子選股、用布林廣度控風險,各司其職。各指標的正確分工可參考RSI、MACD、KD 比較。
這四個錯誤有一條共同主線:把一個波動/風控指標當成選股或抓買賣點的工具。 只要記住布林通道的本質是「衡量波動」,就會自然把它放到風控與濾網的位置,而不是當進出場依據。
自己跑一次
把下面這句話交給你的 AI 助理,它會引導你安裝 FinLab Skill、抓台股資料、重現這篇的回測:
用 AI 開始 FinLab
把這句話交給你的AI,它會帶你完成設定並做出第一個策略。
告訴你的AI:
「幫我設定 FinLab,做一個動能策略:https://finlab.finance/setup」
裝好之後,下載本文的 strategy.py 與 data.csv,即可在自己的環境重跑、改參數、換選股因子。登入只需在程式裡寫 finlab.login(),套件會在需要資料時引導你完成登入。想延伸成更完整的量化流程,可參考量化交易總覽與程式交易是什麼。
常見問題
Q:布林通道參數要設多少?20 日、2 個標準差是最好的嗎? 20 日、±2 標準差是 John Bollinger 的原始建議,也是本文用的設定。重點不在參數微調,而在用法:把它當風控時,廣度訊號對布林參數不敏感;當突破濾網時跨多個擠壓觀察窗也穩健。與其調參數,不如先用對地方。
Q:布林通道「觸下軌一定會反彈」嗎? 不一定。觸下軌(低 %b)在台股研究段回測年化只有 2.5%,因為它無法區分「健康回檔」與「趨勢轉空」。把它當無腦抄底訊號,長期接近無效。
Q:布林通道可以單獨拿來當買賣訊號嗎? 不建議。觸下軌買、觸上軌賣或無條件的 %b 排名選股,在台股回測都站不住。要讓 %b 變得有用,得先用「帶寬擠壓」濾掉雜訊、再配合動能與低波一起當選股因子;而站上中軌的廣度則拿來當大盤風控。布林通道適合拆成這兩個零件搭配使用,而不是整個拿來當進出場依據。
Q:布林通道和肯特納通道(Keltner Channel)差在哪? 布林通道用標準差定義通道寬度(隨波動呼吸),肯特納通道用 ATR(平均真實波幅)。兩者都是波動通道,實務上常被一起比較,延伸可看肯特納通道與 ATR 指標與台股 ATR 波動度指標。
Q:這套策略適合誰? 適合想要主動選股、能接受 -33% 等級回撤與較高換手成本,追求明顯高於含息 0050 報酬的人:全期年化 28.4%、月 Sharpe 1.20,研究段與樣本外都勝過含息 0050。不適合受不了深度回撤、或偏好低周轉被動持有的人——那種需求直接買進持有含息 0050 更省心。
Q:為什麼要用「廣度」而不是只看大盤指數? 單一指數的中軌穿越在盤整期雜訊太大、來回甩巴掌;全市場的廣度是橫截面的、平滑的多空力道度量,加上 EMA 與 hysteresis 雙門檻,能在保住報酬的同時把回撤砍下來。
Q:布林通道和 KD、RSI 一起用會更好嗎? 這些都是擺盪/波動類指標,資訊高度重疊,硬疊在一起通常是負貢獻。比較有效的組合是「不同性質」的訊號搭配,例如動能(選股)+ 布林廣度(風控)。各指標的正確用法可參考RSI、MACD、KD 比較。
最後更新:2026-06|回測區間:2015-01 ~ 2026-06-09|作者:FinLab 量化研究團隊(經量化研究員審閱)
本文僅供量化研究與教學用途,所有回測數字均由 finlab 套件在真實台股資料上產出,過去績效不代表未來表現,不構成投資建議。布林雙核心純技術策略全期最大回撤 -33.4%,實際交易前請自行評估風險、滑價與交易容量。
FinLab AI
想建立自己的策略?
用自然語言描述你的選股想法,AI 自動驗證、回測、給你答案
免費開始

