相對成交量指標(RVOL):公式、門檻與測試方法
RVOL 把當根 K 棒的成交量除以過去幾個交易日同一時段 K 棒的平均成交量,所以 2.0 代表該時段活動量是平常的兩倍。門檻應從你自己的資料分布來設定,並在相同成本下,比較有無這道過濾條件的突破規則。
作者 Soren Huang · 發佈 · 更新於 · 編輯原則
目錄
相對成交量指標是怎麼算的?
相對成交量指標(RVOL)是把當根 K 棒的成交量,除以過去一段設定交易日數中,同一個時段 K 棒的平均成交量。讀數 2.0 代表該時段的活動量是平常的兩倍。把它當成突破規則前面的過濾條件,就能拿來測試:在相同成本下,分別跑有過濾與沒有過濾的版本。
相對成交量是比值,不是筆數。只要記住這一個公式就夠了:
RVOL = 這根 K 棒的成交量 ÷ 過去 N 個交易日同一時段的平均成交量
這裡的這根 K 棒是剛收線的那一根,同一時段是每個過去交易日中,同一個時鐘時間的那根 K 棒,N 則是平均值所用的過去交易日數。想像一位餐廳老闆在判斷午餐尖峰是否特別忙:她會拿今天的午餐人潮和平常的午餐人潮比,而不是拿全天平均,那樣會把下午三點的空檔也算進去。
常見的錯誤是用全天平均當分母。期貨在一個交易時段內的成交量呈現 U 型:開盤前後量大,盤中量小,收盤前又放大。若拿全天平均當分母,每個開盤都會看起來很忙,每段盤中都會看起來很冷清,指標等於只是在重複時鐘。同一時段平均會把這種形狀拿掉,留下你真正要看的東西:這一分鐘的活動量和它平常的水準相比如何。可以測試的技術分析工具與指標指南把 RVOL 放在成交量工具之中,並說明為什麼大多數成交量工具都需要一個基準,才會有意義。
假設性範例
開盤後 09:30 那根 5 分鐘 K 棒成交 800 口。過去 20 個交易日,09:30 那根 K 棒平均成交 400 口。RVOL = 800 ÷ 400 = 2.0,代表開盤時段的活動量是平常的兩倍。如果分母改用每根 K 棒全天平均的 200 口,同一根 K 棒會讀到 4.0,而歷史上幾乎每個開盤都會是這個數字,那就完全看不出什麼。
多高才算高?哪個 RVOL 數值算異常?
沒有固定的標準線。合適的門檻,是能在你自己的資料上留下足夠交易數、可以供判斷的那一條。交易者通常把低於 1.0 視為冷清、1.5 到 2.0 視為偏高、2.0 或 3.0 以上視為異常,這些區間可以當作起步的用語,但它們不是參數設定。一個預設 2.0 的圖表範本,並沒有針對你的市場、K 棒週期或交易時段調校過;流動性高的股價指數期貨 5 分鐘 K 棒,與冷門合約 1 分鐘 K 棒之間,超過 2.0 的 K 棒比例可能差很多。
| RVOL 區間 | 判讀 | 常見原因 | 當成最低門檻使用的效果 |
|---|---|---|---|
| 低於 1.0 | 冷清 | 午間低迷、假期交易時段 | 幾乎保留所有交易,等於沒過濾 |
| 1.0 到 1.5 | 正常 | 一般交易時段 | 保留大部分交易 |
| 1.5 到 2.0 | 偏高 | 定期經濟數據公布、開盤時段 | 刪除很大一部分交易 |
| 2.0 到 3.0 | 異常 | 突發新聞、大單 | 只保留一小部分交易 |
| 高於 3.0 | 極端 | 重大事件、單一合約的轉倉週 | 只保留極少數交易 |
要設定自己的門檻,應該在寫任何規則之前,先看你自己資料上 RVOL 的分布:
- 為你要交易的時段,計算每一根 K 棒的 RVOL,涵蓋完整歷史,並使用你打算實單採用的同樣基準長度。
- 把數值排序,記下超過 1.5、2.0 和 3.0 的 K 棒各佔多少比例。若某個門檻只有兩百根中的一根通過,一年下來可能只剩幾筆交易。
- 把該比例乘上你基礎規則產生的訊號數。若結果是整段歷史只剩幾十筆交易,這個門檻就太嚴,無法用來評比;樣本這麼小時,少數兩三筆交易的變動,就會大幅改變平均每筆損益。
- 在回測前先寫下門檻,並讓鄰近的數值(例如 2.0 旁邊的 1.5 和 2.5)在同一輪中一起跑,這樣你才看得出結果是在一個區間內都成立,還是只靠某個剛好的數值。
RVOL 平均要用幾個交易日?
依你希望過濾條件忽略什麼來選擇基準長度,然後把相鄰的長度一起測試。約 5 到 10 個交易日的短基準,對持續性的活動量變化反應很快,但會被單一新聞日扭曲。20 到 50 個交易日的長基準比較穩定,但要花較久才會察覺市場已經永久變得更熱絡或更冷清。
單一暴量日造成的扭曲是機械性的。假如某次數據公布讓 08:30 那個時段的成交量在當天增為三倍,那麼 5 日平均在接下來五個交易日會上升約 40%,該時段的一般 K 棒會連續一週讀到 1.0 以下,正常的日子也會被過濾掉。同樣的暴量日只會讓 20 日平均上升約 10%,多數門檻都能吸收而不被察覺。長基準的代價是:當活動量真的改變時,例如合約規格調整或新商品上市後,20 日基準要花一個月才會追上。
| 特性 | 短基準(5 到 10 個交易日) | 長基準(20 到 50 個交易日) |
|---|---|---|
| 反應速度 | 反應快 | 穩定 |
| 弱點 | 容易被單一暴量日扭曲 | 對持續性的改變調整較慢 |
| 適用情境 | 流動性高合約的盤中規則 | 波段規則與日 K 棒 |
有兩個實務做法可以減輕這個問題。一是基準改用中位數,而不是平均數,因為單一暴量日無法把中位數拉得太遠。另一是把基準長度當成其他參數一樣處理,尋找高原區:一次跑 10、15、20、30、40 個交易日,然後看結果是落在一片平坦的區域,還是只有一個尖峰,這和參數穩健度:高原還是幸運尖峰中描述的測試是同一套方法。只在 20 個交易日時才有效的長度,是被歷史擬合出來的,並不是依市場選出來的。
相對成交量能不能當突破的進場過濾條件?
可以,而放在另一條規則前面當過濾條件,正是 RVOL 最容易被公平測試的用途。過濾條件是指必須成立才允許進場、但本身不會產生進場訊號的條件。基礎規則可以是帶有開盤區間長度、進場與停損設定的開盤區間突破、通道突破,或是像KD 指標公式與測試方法一文中的超賣讀數,也可以是RSI 70/30 門檻與 RSI 規則測試方法,或是隨機指標 %K 與 %D 設定。過濾條件背後的道理很簡單:以該時段而言成交量大的突破,背後的參與者比冷清時段的突破多,所以過濾條件是想把那些薄弱、飄移的訊號剔除。
公平的測試是把同一規則分成有過濾與沒有過濾兩個版本,在相同的成本、交易時段與執行設定下比較,並讀取兩個數字:過濾條件刪掉了多少筆交易,以及扣除成本後的平均每筆損益有什麼變化。
- 單獨跑基礎規則。記錄交易筆數、扣除手續費與滑價後的平均每筆損益,以及最大回撤。
- 加上 RVOL 過濾條件,門檻與基準使用你事先寫下的數值。其他一律不動。
- 比較。有用的過濾條件會刪掉相當比例的交易,而且平均每筆損益的提升幅度超過交易筆數的減少幅度,獲利又分散在整段歷史中。沒用的過濾條件則是幾乎隨機地刪除交易,平均每筆損益幾乎沒有變化。有害的過濾條件會刪掉獲利的交易,常見原因是進場那根 K 棒成交量很大,代表價格變動其實已經結束。
- 用同一輪中相鄰的門檻重複測試,並數一數有多少個門檻得出一致的結論。
假設性範例
只跑基礎規則:400 筆交易,扣除成本後平均每筆損益 $30,總計 $12,000。加上門檻 2.0 的 RVOL 過濾條件:160 筆交易,扣除成本後平均每筆損益 $55,總計 $8,800。過濾條件刪掉了 60% 的交易,每筆結果幾乎翻倍,但總損益下降,因為剩下的訊號太少。這樣的取捨值不值得,取決於你需要多少筆交易才能評比這個策略,以及回撤有怎樣的變化,所以兩次執行的結果都要並排留在報表中。
你嘗試的每個門檻與每個基準長度,都是另一個變體;在同一段歷史上挑出最好的那一個,會帶有一種選擇偏誤,在樣本外不會重現。Bailey、Borwein、López de Prado 與 Zhu(2014)說明了這種偏誤隨嘗試次數增加得有多快。有過濾和沒過濾的版本應放在同一輪中,讓它們在同一份資料上接受評比,並且在看結果之前就寫好通過條件。在 AlphaPrime(Valynox)中,你在策略生成中定義的進場條件、參數範圍與搜尋限制,決定了搜尋可以把哪些過濾條件放在突破規則前面,因此有過濾與沒過濾的候選策略,是在同一組成本與交易時段下評估,而不是分成兩個專案各自跑。
沒有成交量條件的期貨回測,能提供什麼比較基準?
要評估過濾條件,就需要一個比較基準,而本文背後的回測正好提供了一個:完全沒有成交量條件的規則。這次測試的標的是 ES(E-mini S&P 500)日 K 棒,期間為 2019-01-02 至 2025-06-30,做多做空皆可,一口,每筆交易收取 $20 手續費與 $25 滑價。規則只用 Percent Rank 作為唯一的進場與出場依據,沒有停損、沒有停利,也沒有任何過濾條件。Percent Rank 是今天的數值在回顧期視窗內所處的位置,以 0 到 100 表示。這次測試的是一個由標準指標組成的替代規則,而不是相對成交量本身;它的目的,是展示在日 K 棒上,沒有過濾的基準長什麼樣子,而 RVOL 過濾條件就是要放在這個基準前面。
來源:AlphaPrime 產品引擎(CPU),2026-10-31 執行。ES 日線,2019-01-02 至 2025-06-30,多空都做,1 口,每筆手續費 $20、滑價 $25。
| 項目 | 結果 |
|---|---|
| 淨利(已平倉) | $75,415 |
| 最大回撤 | $52,502.5 |
| 交易筆數 | 63 |
| 勝率 | 50.79% |
| 獲利因子 | 1.563 |
| 平均每筆 | $1,197.06 |
| 在場時間 | 92.42% |
圖中的候選策略,是搜尋從 1,024 個嘗試中留下來的那一個,依報酬對回撤的比值挑出。事後挑選留下的候選策略會讓它看起來比實際好:其他候選策略表現較差,而留下的這個,是在同一段歷史上和所有候選策略一起比較後才脫穎而出的。這些數字是一口合約在過去量測到的結果,不是預測,也不代表 Percent Rank 規則能賺到這些錢,或讀者可以期待同樣的結果。

方塊中有兩件事對 RVOL 測試很重要。六年半下來只有 63 筆交易,所以任何加在這個規則上的過濾條件,都是從一個本來就很小的樣本中再刪掉交易,在讀平均每筆損益之前,必須先檢查剩下的筆數。另外,日 K 棒上沒有盤中時段可以分組,因此 RVOL 變成今天的成交量除以過去 N 個交易日的平均日成交量。這個做法比較簡單,但也讓下一節的轉倉問題更加明顯,因為日 K 棒涵蓋的是兩個合約在整個交易日的成交量。
為什麼成交量只代表活動、不代表方向?轉倉又會怎麼影響它?
RVOL 偏高只告訴你有很多合約易手,並沒有告訴你價格會往哪個方向走。每一筆交易都有買方和賣方,所以成交量算的是達成交易的次數,而不是一次投票。定期經濟數據公布、大型基金的再平衡,或是做市商為選擇權部位避險,都可能讓某個時段的成交量變成三倍,卻沒有往任何方向的持續推力。因此 RVOL 應該放在一條已經明確指定方向的規則前面,前面幾節的比較也是讀平均每筆損益,而不是數有多少根高 RVOL 的 K 棒。
在期貨中,還有第二種與新聞無關、會造成錯誤讀數的來源:季度轉倉。ES 在三月、六月、九月與十二月到期,在每次到期前的幾天,成交量會從即將到期的合約移到下一個合約。一條依近月合約連續的序列,會在轉倉日之前看到到期合約的成交量逐日下降,然後跳到已經承接大部分活動的下一個合約。若直接解讀,到期合約的 RVOL 會跌到 0.5 以下,而下一個合約的 RVOL 則因為拿自己轉倉前稀少的日子當基準,會跳到 3.0 以上。這兩種讀數都不反映市場的真實狀況。
處理的方法有三種,依工作量由多到少排列:
- 在轉倉週把即將到期合約與次月合約的每根 K 棒成交量加總,並用加總後的序列建立基準。如圖所示,這樣整個轉倉過程中的總活動量是平穩的。
- 逐合約讀取成交量,並在轉倉日用舊合約的同時段平均值,作為新合約基準的起點,讓轉倉後的最初幾天不會拿新合約轉倉前稀少的日子來比較。
- 把轉倉週排除在基準和過濾條件之外,確保在合約遷移期間讀到的 RVOL 不會放行任何進場。這樣每季要損失一週的交易日,但不需要額外的資料。
不論選擇哪一種,回測與實單交易都必須採用相同的處理方式,而且要與價格序列本身的轉倉方式一致;期貨回測的正確做法:合約規格、轉倉與跳動點價值一文涵蓋了價格面的同一個問題。交易所可能會變動合約月份與到期規則,因此在把轉倉日曆固定到你的資料中之前,請先到交易所的合約頁面確認現行的時程。綜觀整個流程,Sullivan、Timmermann 與 White(1999)在有無資料窺探修正下檢驗技術規則的研究,以及 Park 與 Irwin(2007)的文獻回顧,結論都指向同一個方向:在一段歷史與一個門檻上看起來不錯的過濾條件,正是搜尋過程中很常見的結果,只有在相同資料上與沒有過濾的規則比較、並把成本納入計算,才能判斷這道過濾條件是否真的有幫助。
下一步是一個下午的工作:用你自己的 K 棒資料,以 20 個交易日為基準,計算你交易時段的 RVOL,記下超過 1.5、2.0 與 3.0 的 K 棒各佔多少比例,挑出一個仍能讓基礎規則保有數百筆交易的門檻,然後在相同成本下,分別跑有與沒有這道過濾條件的規則。兩者的交易筆數與平均每筆損益,會比任何圖表範本告訴你的都多。
常見問題
RVOL 怎麼計算?
把當根 K 棒的成交量,除以過去一段交易日數(常見為 10 到 20 日)中,同一個時鐘時間 K 棒的平均成交量。數值 1.0 代表該時段的活動量正常,2.0 代表是平常的兩倍。常見的錯誤是用全天平均當分母,因為這樣每個開盤都會看起來很忙,每段盤中都會看起來很冷清。
RVOL 多少算高?
交易者通常把 1.5 到 2.0 稱為偏高,2.0 或 3.0 以上稱為異常,但適合策略的標準線取決於市場與 K 棒週期。請在你自己的歷史資料上計算 RVOL,看每個門檻各有多少比例的 K 棒通過,並選出仍能留下足夠交易數供判斷的門檻。同一輪中也要測試相鄰的數值,才能知道結果在一個區間內是否都成立。
RVOL 平均要用幾個交易日?
5 到 10 個交易日的短基準反應快,但一個新聞日會在之後的交易日造成扭曲。20 到 50 個交易日的長基準比較穩定,但對活動量的持續變化反應較慢。依你希望過濾條件忽略什麼來選擇,可以考慮用中位數代替平均數,並一起測試數個長度,找出高原區,而不是只靠某個剛好的設定。
相對成交量能當進場過濾條件嗎?
可以,但要放在一條已經指定方向的規則前面,例如突破或振盪指標的讀數。在相同成本與交易時段下,分別跑有與沒有過濾的基礎規則,並比較交易筆數與扣除成本後的平均每筆損益。有用的過濾條件會刪掉相當比例的交易,同時提高平均每筆損益;有害的過濾條件則會刪掉獲利的交易。
RVOL 能用在日 K 棒上嗎?
日 K 棒沒有盤中時段可以分組,所以 RVOL 是今天的成交量除以過去 N 個交易日的平均日成交量。它仍然是拿活動量和基準比較,但季度轉倉會更明顯,因為整天的成交量會從即將到期的合約移到下一個合約。可以把兩個合約的成交量加總、用舊合約來設定新基準,或是在過濾條件中排除轉倉週。
參考文獻
- 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.
- Park, C.-H., & Irwin, S. H. (2007). What Do We Know About the Profitability of Technical Analysis? Journal of Economic Surveys, 21(4), 786–826.

