跳至主要內容
台股研究 約 8 分鐘閱讀

量價背離回測:價漲量縮該賣、價跌量縮該買嗎?8 個台股設計都未通過

量價背離常被解讀成反轉前兆,量價關係中的價漲量縮、價跌量縮能直接拿來買賣嗎?用台股測試量縮新低買進、新高量縮排除,並把訊號疊在極小型股、營業利益率與營收新高策略。8 個設計、72 組參數沒有一個通過全部驗證;出場加再平衡有時降低回撤,也犧牲原策略報酬,附熱圖與程式。

免安裝,用 AI 重跑這篇的策略

在瀏覽器開啟 FinLab Studio,AI 依本文的條件重跑回測,接著可以改條件再測。

在 Studio 重跑
8 設計未通過

量價背離八個設計的日夏普與原策略對照,多個疊加版高於0050卻未穩定改善原策略

依本文重跑

執行這個策略

複製提示詞,讓 AI 依照上方證據的資料、條件與風險檢查重跑一次。

告訴你的AI:

設定 FinLab,重現這篇文章量價背離及原策略濾網的台股回測,請讀:https://finlab.finance/setup?relatedUrl=/blog/price-volume-divergence-backtest

免安裝,開啟 FinLab Studio

在本次 2018 年至 2026 年的台股測試中,量縮創新低買進、量縮創新高排除,以及三支既有策略加上背離濾網,共 8 個設計都未通過全部驗證。量縮新低買進的原設定年化 −9.0%、日夏普 −0.48;新高量縮排除也讓高成交額股票池的日夏普從 0.65 降到 0.61。本文以反面教材為主,檢查把「量價背離是反轉前兆」落成明確買賣規則之後,能否改善投資組合。

量價關係與背離,這次怎麼定義

量價關係是在觀察價格變化時,一起看成交量的變化。量價背離則是價格突破某個位置,成交量沒有相應增加。常見說法包含價漲量縮、價跌量縮;要回測,還得回答「跟哪段價格比」「量縮到多少」「下一步做什麼」。

本次不靠肉眼畫趨勢線,固定使用下面兩個訊號。價格用還原收盤價,避免配息與拆股造成假突破;成交量用當日成交股數,跟前 20 個交易日、排除當天的均量比較。

名稱 明確條件 測試動作
看空背離 今日還原收盤價高於前 N 日最高價,當日量低於前 20 日均量乘 r 換股時排除,或持有中提前退出
看多背離 今日還原收盤價低於前 N 日最低價,同樣符合量縮 每週買進,依成交額選最多 30 檔
原參數 N=40 個交易日,r=0.8 代表突破前 40 日極值,量少於原均量的八成

「看多」與「看空」是市場對訊號的慣用稱呼,本文會用結果檢查這些方向是否成立。量縮新低也可能只是需求持續減弱,新高量縮也可能出現在持續上漲的過程,訊號名稱本身沒有預測保證。

這套規則與 OBV 累積量能背離不同:OBV 依每天漲跌把成交量累加或扣掉,這裡只看突破當日的量是否低於均量。週轉率研究則把成交股數除以歷史股數,研究換手速度,不判斷量價方向。

單獨使用:量縮新低沒有帶來反轉優勢

股票池採歷史上市櫃四碼普通股,排除 ETF 等 0 開頭商品與 91 開頭存託憑證,要求近 20 日平均成交額大於 2,000 萬元,當天有價格與成交量。看多背離在符合訊號的股票裡按成交額選前 30 檔,每檔固定 1/30,選不滿留現金。

看空背離的對照組,是同一股票池成交額最高 30 檔,每週更新。排除版刪掉這 30 檔裡有看空背離者,空出的資金留現金,不往後補其他股票。這樣比較才能分辨排除本身的效果。

設計 平均目標投入比例 年化報酬 日夏普 最大回撤 贏 0050 的參數組
量縮新低買進 34.1% −9.0% −0.48 −62.2% 0/9
高成交額 30 檔對照 100% 16.9% 0.65 −54.1% 對照
高成交額 30 檔排除看空背離 98.3% 15.1% 0.61 −53.8% 0/9
0050 含息持有 100% 22.4% 1.08 −34.0% 基準

量價背離單獨版同日起算淨值:量縮新低買進、高成交額30檔、排除看空背離與含息0050

量縮新低版本大部分資金在現金,仍出現六成以上回撤。這說明低投入比例不等於低風險:少量資金反覆買入下跌股票,虧損也可能持續累積。高成交額排除版的最大回撤只少約 0.3 個百分點,年化卻少約 1.8 個百分點。這段資料不支持單憑新高量縮,就把股票從高成交額名單中拿掉。

文章的日夏普以零利率計算;互動報告使用套件預設的 2% 無風險利率,兩者夏普口徑不同。報告淨值與年化、回撤已對齊共同區間,交易紀錄保留開倉資訊。

疊在既有策略上:贏指數,還要比原策略好

單獨訊號無效,不代表加在已有選股能力的策略上必然無效。本次選定三種不同機制,開跑前便寫定名單:

先把策略頁下載程式原封不動跑一次,核對原頁日期下的績效;再檢查「完全不排除」的重建淨值與原策略逐日一致,最大相對誤差小於 0.000001%。這個檢查只驗證原策略重建,不代表加入額外換股日後,其餘股票的股數與停損基準仍相同。

每支底策略測兩種動作。換股時排除只在原本換股日刪除當天有看空背離的持股,等下一次換股再檢查。出場加再平衡還會在兩次換股之間,每天檢查既有持股,遇到訊號便在下一交易日退出,直到原本下一次換股才可買回。被刪除的目標權重保留現金、不補滿;其他股票會回到原換股時的目標權重,因此可能額外買賣。FinLab 預設也會在這些新增的再平衡日重設續抱股票的停損成本基準,營收版的 10% 停損幅度雖然沿用,基準價格仍會改變。這三組測的是出場加再平衡,未單獨測試只賣指定股票、其餘股數與停損基準不動的做法。

背離訊號仍使用上述 2,000 萬元成交額門檻;底策略本來持有但低於門檻的股票,不會因為這個新訊號被排除。三個底策略的股票池與權重都不另改。因此,極小型股版本可能幾乎沒有觸發,不能把「沒變」說成背離有效。

底策略/加上背離的動作 年化報酬 日夏普 最大回撤 九組贏原策略幾組
極小型股原版 31.3% 1.98 −24.0% 對照
極小型股+換股時排除 31.3% 1.98 −24.0% 0/9
極小型股+出場加再平衡 31.1% 1.97 −24.0% 0/9
營業利益率原版 19.7% 1.32 −25.9% 對照
營業利益率+換股時排除 19.5% 1.32 −25.9% 7/9
營業利益率+出場加再平衡 15.3% 1.13 −25.7% 0/9
營收新高原版 48.3% 1.47 −32.0% 對照
營收新高+換股時排除 44.3% 1.45 −31.9% 3/9
營收新高+出場加再平衡 33.2% 1.33 −27.3% 0/9

原參數下,六個疊加版都沒有比各自原策略更高的日夏普。營收新高出場加再平衡的回撤從 −32.0% 縮到 −27.3%,但年化也從 48.3% 降到 33.2%;這個組合是用部分報酬交換回撤,無法把變化單獨歸因於賣出背離股票,也不能只列回撤改善。平均目標投入比例也從原版接近滿倉,降到約 79.1%。

九宮格與分段:有幾格改善,仍不足以成立

每個設計都跑 N=20、40、60 日,r=0.6、0.8、1.0,共九組。開跑前約定九組至少七組的日夏普要高於同期 0050;疊加版還要高於原策略,原參數在前後兩半也都要勝出。七成門檻需要七組,只有一兩組漂亮數字不算。

量價背離單獨版九宮格:量縮新低買進與新高量縮排除的18組日夏普均低於0050

兩個單獨版共 18 組參數,沒有一組贏 0050。圖中每格是日夏普減去 0050,負值表示落後;改成更嚴格的量縮,也沒有出現一整片優勢。

量價背離疊在三支選股策略上的六組九宮格,以日夏普相對原策略差值呈現排除與出場加再平衡的影響

六個疊加版共 54 組,極小型股排除、極小型股出場、營業利益率排除、營收新高排除與營收新高出場,各有 9/9 組贏 0050;營業利益率出場加再平衡是 6/9。可是改跟原策略比,只剩營業利益率排除 7/9、營收新高排除 3/9,其餘為 0/9。底策略本來就好,把底策略的成績算到濾網頭上,會高估訊號價值。

營業利益率排除的九組雖有七組勝原版,預先指定的 40 日、0.8 倍卻由 1.3222 降到 1.3179;而且前半段也落後原版,仍不通過。這正是同時看參數區域與原設定分段的原因,不能看完結果再把中心移到比較好看的格子。

設計 前半段日夏普 後半段日夏普 前/後半原策略
量縮新低買進 −0.21 −0.67 0050:0.73/1.36
高成交額排除 0.13 1.03 0.18/1.07
極小型股排除 2.49 1.42 2.49/1.42
極小型股出場加再平衡 2.47 1.42 2.49/1.42
營業利益率排除 1.07 1.55 1.08/1.54
營業利益率出場加再平衡 0.92 1.33 1.08/1.54
營收新高排除 1.29 1.61 1.36/1.57
營收新高出場加再平衡 1.13 1.54 1.36/1.57

四捨五入後相同的數字,沒有視為勝出;完整精度在下載的指標檔。兩個單獨設計都未在前後半段各自勝過 0050;六個疊加版也都沒有兩段勝過底策略。程式另檢查同平均曝險固定持有,以及剔除策略年報酬最高的一年。這些檢查沒有挽回前面已失敗的條件。

量價背離有資訊,不等於這條買賣規則有獲利

Blume, Easley & O’Hara(1994)的理論研究討論成交量如何提供價格之外的資訊。這能支持「量值得研究」,卻沒有替 40 日新高加量縮八成這條規則背書。Lee & Swaminathan(2000)檢查歷史量能與價格動能的關係,使用的量能分類與持有方式也不同於本次當日量縮訊號。

Lo, Mamaysky & Wang(2000)把圖形辨識寫成演算法並做統計檢驗,說明圖形主張可以被明確定義、接受檢查。本文沿用的是把主張寫成規則再驗證的做法,沒有重做他們的圖形模型,也沒有宣稱所有量價背離都無效。

這次結果能指出三種可能的代價:新低量縮可能持續下跌;新高量縮可能仍在走趨勢,提前排除會放棄後續報酬;額外退出、重平衡與回補會增加成本,停損基準重設也會改變後續出場時點。本文未把每筆交易做反事實拆解,無法斷言哪一個是主要原因。大盤濾網研究則測另一種退出訊號,可用來比較「降低回撤」和「改善原策略」的差別。

FinLab 核心程式與方法限制

以下是看多背離原設定的核心。每週只選訊號當天成立的股票,不把先前出現過的訊號累積到之後所有日期;不足 30 檔的部分放現金。

顯示程式碼
import pandas as pd
from finlab import data
from finlab.backtest import sim
 
data.truncate_end = "2026-11-09"
close = pd.DataFrame(data.get("etl:adj_close"))
volume = pd.DataFrame(data.get("price:成交股數"))
amount = pd.DataFrame(data.get("price:成交金額")).rolling(20).mean()
stocks = [
    s for s in close.columns
    if len(s) == 4 and s.isdigit() and not s.startswith(("0", "91"))
]
close = close[stocks]
volume = volume.reindex(index=close.index, columns=stocks)
amount = amount.reindex(index=close.index, columns=stocks)
new_low = close < close.shift(1).rolling(40).min()
shrinking = volume < volume.shift(1).rolling(20).mean() * 0.8
liquid = (amount > 20_000_000) & close.notna() & (volume > 0)
score = amount.where(new_low & shrinking & liquid)
position = (score.rank(axis=1, ascending=False, method="first") <= 30) / 30
weekly = position.groupby(position.index.to_period("W-FRI")).tail(1)
weekly = weekly.loc["2017-12-01":]
report = sim(weekly, resample=weekly.index, upload=False)
report.to_html("report_bullish_divergence.html")
項目 本次口徑
日期與版本 比較 2018-02-01 至 2026-11-09;資料截至 11-09,11-10 執行,FinLab 2.3.8
訊號、下單 用當日收盤與成交量判斷,下一交易日成交;價格與停損幅度沿用;出場加再平衡版增加換股日,續抱股票的基準依上述預設重設
成本 sim() 預設買賣手續費各 0.1425%,賣出另扣證交稅 0.3%
換手 目標權重單邊換手、未含價格漂移及引擎停損的額外成交;新低買進月均 134%、最高 372%,高成交額排除月均 48%、最高 82%
六種疊加版換手 月均約 21%~93%、單月最高約 33%~140%;逐項在指標檔,最後一月未結束
基準與現金 0050 還原價含息持有;剩餘現金不計息,另比同平均目標投入比例固定持有
股票類別 單獨版未全面排除金融、KY、全額交割及處置股,使用歷史表保留下市樣本;疊加版沿用原策略股票池
公司行動 價格已還原,成交股數未另做拆股量調整,面額變更附近可能影響量比
滑價與容量 未額外估算,不把成交額門檻當作成交保證;極小型股原版尤其有流動性風險
樣本內外 全段樣本內;參數先寫定,但沒有另留真正未來樣本外,也未做每筆訊號的顯著性檢定

這些限制決定結論的範圍。若想把「背離後等三天確認」「量縮新低後重新站上均線」或不同持有天數加進去,那是新的研究設計,不能引用這次數字說已驗證。回測檢查的基本原則可看回測方法,規則落地的流程則見程式交易指南。

常見問題

價漲量縮一定會跌嗎?

不一定。本次把價格突破前 40 日高點、成交量少於前 20 日均量八成,做成排除或出場加再平衡規則,沒有穩定改善原策略。純賣出且不動其他持股的規則不在這次測試範圍內。這不足以支持「看到就賣」。

價跌量縮代表賣壓結束嗎?

成交量少只表示當天成交少,不能直接觀察未來賣壓。本次量縮創新低買進版年化 −9.0%,不支持單靠這個組合抄底。

看多與看空背離,要看幾天?

本文測 20、40、60 個交易日,量縮門檻是前 20 日均量的六成、八成或一倍。三乘三的區域沒有讓任何設計通過全部條件,無法推薦其中一組作通用設定。

已經有選股策略,加上背離濾網會更好嗎?

三個底策略各測兩種動作,沒有一個通過。營業利益率排除有七組勝原版,但原設定的全段與前半段都落後;營收新高出場加再平衡則是回撤變淺、報酬減少。

這跟 OBV 背離、爆量有什麼差別?

OBV 看累積的有方向成交量,本文看極值當日是否量縮,爆量看成交量是否突然增加。三者定義不同,不能把其中一種的回測結論用在另一種。相關比較見成交量與當沖研究。

短線當沖也能套用這個結論嗎?

本文使用日資料、隔日成交,單獨版每週換股,沒有分鐘資料、當沖成交順序或日內滑價。結論不涵蓋當沖,也不涵蓋放空看空背離的做法。

下載與研究資料

檔案 內容
strategy.py 看多背離買進或高成交額排除原設定,擇一執行
完整研究包 包含三底策略、可重跑的疊加邏輯與全部 99 組研究;解壓後依說明執行
data.csv 策略、原版與 0050 的共同區間淨值
metrics.json 全部九宮格、分段、同曝險與剔除最佳年結果
量縮新低互動報告 負面結果的完整回測
高成交額原版報告 排除版的原始對照

FinLab 量化研究團隊以歷史資料與明確規則研究選股和風險管理。八個設計均未通過,本次不新增量價背離策略頁,也不把既有策略的報酬歸因於背離濾網。

免責聲明:本文所有策略與回測結果僅供教學與研究用途,不構成投資建議。過去績效不代表未來表現。投資一定有風險,請審慎評估自身風險承受能力。

最後更新:2026-11|回測區間:2018-02-01 至 2026-11-09|作者:FinLab 量化研究團隊

FinLab AI

想建立自己的策略?

用自然語言描述你的選股想法,AI 自動驗證、回測、給你答案

免費開始

更多技術指標研究

查看全部