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

相對成交量指標(RVOL):公式、門檻與測試方法

RVOL 把當根 K 棒的成交量除以過去幾個交易日同一時段 K 棒的平均成交量,所以 2.0 代表該時段活動量是平常的兩倍。門檻應從你自己的資料分布來設定,並在相同成本下,比較有無這道過濾條件的突破規則。

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

目錄
  1. 相對成交量指標是怎麼算的?
  2. 多高才算高?哪個 RVOL 數值算異常?
  3. RVOL 平均要用幾個交易日?
  4. 相對成交量能不能當突破的進場過濾條件?
  5. 沒有成交量條件的期貨回測,能提供什麼比較基準?
  6. 為什麼成交量只代表活動、不代表方向?轉倉又會怎麼影響它?
  7. 常見問題
  8. 參考文獻

相對成交量指標是怎麼算的?

相對成交量指標(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 以同一時段為除數:09:30 這根 K 棒 12 千口,對比過去各日 09:30 平均 6 千口,得 RVOL 2.0;全日平均 3 千口被劃掉,因為是錯誤的除數(示例數字) 除以同一時段 成交量(千口),示例數字 09:30 本根 K 棒 12 同時段平均 6 RVOL 2.0 全日平均 3 錯誤 全日平均衡量的是時鐘。 所以:用同時段平均。
RVOL 是拿一根 K 棒和過去交易日同一時段比較。全天平均不適合當分母,因為它只反映了整個交易時段的形狀。

多高才算高?哪個 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 最低門檻會留下較少交易:1.0 以下為冷清,1.0 至 1.5 為正常,1.5 至 2.0 為偏高,2.0 至 3.0 為異常,3.0 以上為極端;每個區間一根長條,表示以該區間作為最低門檻時保留的交易比例,從幾乎全部遞減到極少(示意) 門檻提高,交易變少 長條 = 保留的交易(示意) < 1.0 冷清 1.0–1.5 正常 1.5–2.0 偏高 2.0–3.0 異常 > 3.0 極端 門檻太嚴,剩下的交易太少。 因此:檢查通過的 K 棒比例。
常見的 RVOL 區間、各區間通常由什麼引起,以及當成最低門檻時對交易筆數的影響。

要設定自己的門檻,應該在寫任何規則之前,先看你自己資料上 RVOL 的分布:

  1. 為你要交易的時段,計算每一根 K 棒的 RVOL,涵蓋完整歷史,並使用你打算實單採用的同樣基準長度。
  2. 把數值排序,記下超過 1.5、2.0 和 3.0 的 K 棒各佔多少比例。若某個門檻只有兩百根中的一根通過,一年下來可能只剩幾筆交易。
  3. 把該比例乘上你基礎規則產生的訊號數。若結果是整段歷史只剩幾十筆交易,這個門檻就太嚴,無法用來評比;樣本這麼小時,少數兩三筆交易的變動,就會大幅改變平均每筆損益。
  4. 在回測前先寫下門檻,並讓鄰近的數值(例如 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 棒
短期基準過度反應:一個新聞日出現尖峰後,5 日基準在接下來五個交易日上升約 40%,而 20 日基準只上升約 10%(範例) 短期基準過度反應 新聞日後的基準(範例) 新聞日 5 日 +40% 20 日 +10% 5 日基準會連續一週維持高檔。 因此:試用中位數,並測試多種長度。
一個暴量日會讓短基準在之後的交易日被推高,但對長基準幾乎沒有影響。兩種設定回答的是不同的問題。

有兩個實務做法可以減輕這個問題。一是基準改用中位數,而不是平均數,因為單一暴量日無法把中位數拉得太遠。另一是把基準長度當成其他參數一樣處理,尋找高原區:一次跑 10、15、20、30、40 個交易日,然後看結果是落在一片平坦的區域,還是只有一個尖峰,這和參數穩健度:高原還是幸運尖峰中描述的測試是同一套方法。只在 20 個交易日時才有效的長度,是被歷史擬合出來的,並不是依市場選出來的。

相對成交量能不能當突破的進場過濾條件?

可以,而放在另一條規則前面當過濾條件,正是 RVOL 最容易被公平測試的用途。過濾條件是指必須成立才允許進場、但本身不會產生進場訊號的條件。基礎規則可以是帶有開盤區間長度、進場與停損設定的開盤區間突破、通道突破,或是像KD 指標公式與測試方法一文中的超賣讀數,也可以是RSI 70/30 門檻與 RSI 規則測試方法,或是隨機指標 %K 與 %D 設定。過濾條件背後的道理很簡單:以該時段而言成交量大的突破,背後的參與者比冷清時段的突破多,所以過濾條件是想把那些薄弱、飄移的訊號剔除。

公平的測試是把同一規則分成有過濾與沒有過濾兩個版本,在相同的成本、交易時段與執行設定下比較,並讀取兩個數字:過濾條件刪掉了多少筆交易,以及扣除成本後的平均每筆損益有什麼變化。

  1. 單獨跑基礎規則。記錄交易筆數、扣除手續費與滑價後的平均每筆損益,以及最大回撤。
  2. 加上 RVOL 過濾條件,門檻與基準使用你事先寫下的數值。其他一律不動。
  3. 比較。有用的過濾條件會刪掉相當比例的交易,而且平均每筆損益的提升幅度超過交易筆數的減少幅度,獲利又分散在整段歷史中。沒用的過濾條件則是幾乎隨機地刪除交易,平均每筆損益幾乎沒有變化。有害的過濾條件會刪掉獲利的交易,常見原因是進場那根 K 棒成交量很大,代表價格變動其實已經結束。
  4. 用同一輪中相鄰的門檻重複測試,並數一數有多少個門檻得出一致的結論。
只有閘門不同:閘門組從突破經 RVOL ≥ 2 檢查才到下單,基準比較組從突破直接到下單、無閘門,兩者交易成本與交易時段完全相同 只有閘門不同 兩組回測,交易成本與交易時段相同 有閘門 基準 突破 RVOL ≥ 2 下單 突破 無 下單 兩組差異只來自閘門。 所以:比較交易筆數與平均每筆損益。
RVOL 過濾條件位於突破條件與下單之間。比較用的執行遵循同樣的路徑,只是沒有過濾條件,因此兩者的差異完全來自這個過濾條件。

假設性範例

只跑基礎規則: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 規則能賺到這些錢,或讀者可以期待同樣的結果。

觀察整段期間權益曲線與其下方回撤的走勢,並注意樣本外區段的標示位置。這是沒有過濾的基準,成交量過濾條件就是要拿它的交易筆數與回撤來衡量。
觀察整段期間權益曲線與其下方回撤的走勢,並注意樣本外區段的標示位置。這是沒有過濾的基準,成交量過濾條件就是要拿它的交易筆數與回撤來衡量。 ES · 日線 · 2019-01-02 至 2025-06-30 · CPU 引擎回測

方塊中有兩件事對 RVOL 測試很重要。六年半下來只有 63 筆交易,所以任何加在這個規則上的過濾條件,都是從一個本來就很小的樣本中再刪掉交易,在讀平均每筆損益之前,必須先檢查剩下的筆數。另外,日 K 棒上沒有盤中時段可以分組,因此 RVOL 變成今天的成交量除以過去 N 個交易日的平均日成交量。這個做法比較簡單,但也讓下一節的轉倉問題更加明顯,因為日 K 棒涵蓋的是兩個合約在整個交易日的成交量。

為什麼成交量只代表活動、不代表方向?轉倉又會怎麼影響它?

RVOL 偏高只告訴你有很多合約易手,並沒有告訴你價格會往哪個方向走。每一筆交易都有買方和賣方,所以成交量算的是達成交易的次數,而不是一次投票。定期經濟數據公布、大型基金的再平衡,或是做市商為選擇權部位避險,都可能讓某個時段的成交量變成三倍,卻沒有往任何方向的持續推力。因此 RVOL 應該放在一條已經明確指定方向的規則前面,前面幾節的比較也是讀平均每筆損益,而不是數有多少根高 RVOL 的 K 棒。

在期貨中,還有第二種與新聞無關、會造成錯誤讀數的來源:季度轉倉。ES 在三月、六月、九月與十二月到期,在每次到期前的幾天,成交量會從即將到期的合約移到下一個合約。一條依近月合約連續的序列,會在轉倉日之前看到到期合約的成交量逐日下降,然後跳到已經承接大部分活動的下一個合約。若直接解讀,到期合約的 RVOL 會跌到 0.5 以下,而下一個合約的 RVOL 則因為拿自己轉倉前稀少的日子當基準,會跳到 3.0 以上。這兩種讀數都不反映市場的真實狀況。

轉倉週讓 RVOL 失真:到期前十天,即將到期合約的成交量占比從 100 降到 10,次月合約從 5 升到 95,總成交量維持不變;若只看單一合約的 RVOL,次月合約會顯示高於 3.0,即將到期合約則低於 0.5(僅為示例百分比) 轉倉週讓 RVOL 失真 成交量占比,距到期 10 天(示例) 總量持平 單看 RVOL: 次月 > 3.0 即將到期 < 0.5 量在移動,總活動量不變。 因此:轉倉週須將兩個合約加總計算。
到期前後,成交量從即將到期的合約轉移到下一個合約,而總活動量大致維持不變。只看單一合約計算的 RVOL,會在兩個方向上都出現假訊號。

處理的方法有三種,依工作量由多到少排列:

  1. 在轉倉週把即將到期合約與次月合約的每根 K 棒成交量加總,並用加總後的序列建立基準。如圖所示,這樣整個轉倉過程中的總活動量是平穩的。
  2. 逐合約讀取成交量,並在轉倉日用舊合約的同時段平均值,作為新合約基準的起點,讓轉倉後的最初幾天不會拿新合約轉倉前稀少的日子來比較。
  3. 把轉倉週排除在基準和過濾條件之外,確保在合約遷移期間讀到的 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.