Strasmore Research
學習 Matt Connor作者: Matt Connor · 更新於 2026-07-25 · data as of July 25, 2026 · refreshed weekly

相對成交量是什麼

相對成交量(RVOL)是當日成交量除以20日均量,大於1代表交易比平常熱絡。文中說明盤中時段RVOL與高量判讀標準。

相對成交量(RVOL)衡量一支股票的交易活躍度,與其自身近期的正常水準相比:即當日成交量除以該股票的平均每日成交量,通常取過去20個交易日的平均值。RVOL為1代表普通交易日,2代表成交量是平時的兩倍,0.5則表示當日交易速度僅為平時的一半。本頁面所有數據均來自分鐘級美國市場資料,每個面板皆附有確切的查詢條件。

什麼是相對成交量?白話定義

單看原始成交量意義不大:五百萬股對一檔大型股而言是極度冷清的一天,對一檔小型股卻可能是一年才出現一次的事件。相對成交量將這個比較明確地對照到股票自身的常態:

RVOL = 當日成交量 ÷ 該股的平均每日成交量(通常取最近 20 個交易日)

假設性例子:一檔股票平均每天交易一千萬股,收盤時共成交兩千五百萬股,當天的 RVOL 就是 2.5。(一筆 print 是指回報到 consolidated tape 的交易——全市場的成交紀錄——而「tape」是交易員對該紀錄的簡稱。)回溯 20 個交易日是約定俗成的做法——平台也會採用 10、30 或 50 天;這大約相當於一個日曆月的交易天數。這個回溯窗口也會繼承交易所行事曆的特殊狀況:假日半天交易只會為平均值貢獻正常交易日成交量的一小部分,市場假日與提早收盤 標示了這些日期落在何處。

為何交易人關注相對成交量?

相對成交量(RVOL)是一項參與度指標,而非方向性指標。高相對成交量的交易日通常集中在可辨識的事件前後——財報公布、指數納入、重大新聞。在大量成交下印出的價格走勢,背後有群眾參與;同樣的走勢若相對成交量僅0.3,可能只是少數幾筆委託單所造成。交易活躍度也與可交易性相伴:就跨股比較而言,成交量最稀薄的標的,其買賣價差往往最寬,這些價差由全天雙邊報價的造市者所掛出;而就單一股票而言,報價在交易最清淡的時段,通常會比最繁忙的時段略寬一些。(成交量也是成交量加權平均價格(VWAP)的基礎——另一個重要的成交量參考指標。)

如何計算相對成交量——以及盤中時段的陷阱

全日計算只是一個除法:當日總成交量 ÷ 20日平均每日成交量。這只有在收盤後才是誠實的數字。陷阱在於盤中執行:上午10:30的累計成交量自然只是任何全日數字的一小部分,因此即使是一個劇烈的早晨,讀數也顯得沉悶。日內成交量在時鐘上遵循U型分佈,任何日內相對成交量都必須從這個形狀出發。

以下是這個形狀,以SPY(標普500 ETF)衡量:過去30個完整交易日中,每個30分鐘時段每分鐘成交股數的中位數,包含延長交易時段(美東時間凌晨4:00至晚上8:00)。

查詢SPY — 每分鐘成交股數中位數,依30分鐘時段劃分(美東時間,最近30天,含延長交易時段)
每個數據背後的精確 SQL 語法
SELECT formatDateTime(toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
       round(quantileDeterministic(0.5)(toFloat64(volume), toUInt64(toUnixTimestamp(window_start))) / 1000, 1) AS median_minute_volume_k
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
  AND window_start >= now() - INTERVAL 30 DAY
  AND toDate(toTimeZone(window_start, 'America/New_York')) < toDate(toTimeZone(now(), 'America/New_York'))
GROUP BY et_time
HAVING et_time >= '04:00' AND et_time < '20:00'
ORDER BY et_time

9:30的時段——常規交易的第一個半小時——每分鐘成交中位數為 136 千股,而緊接其前的9:00盤前時段為 3.5 千股。交易節奏在12:30時段降至 49.5 千股,然後在收盤前升溫:3:30時段為 168.3 千股,這是進入收盤競價的衝刺階段,遠高於午間低谷。下午4:00收市鐘響後,每分鐘交易節奏急墜,進入盤後交易

日內相對成交量:依時段調整

修正方式在於改變分母:將今日的累積成交量,與同一時鐘時間點的平均累積成交量進行比較。這需要知道在時鐘上的每個時間點,一個正常交易日通常已完成多少成交量佔比——此處以 SPY 最近 20 個完整交易日的數據來衡量:

查詢SPY — 各時點累積全日成交量佔比平均值(最近20個交易日)
每個數據背後的精確 SQL 語法
WITH per_min AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
           formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') AS et_min,
           sum(toFloat64(volume)) AS v
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= now() - INTERVAL 45 DAY
      AND toDate(toTimeZone(window_start, 'America/New_York')) < toDate(toTimeZone(now(), 'America/New_York'))
    GROUP BY et_date, et_min
),
last20 AS (
    SELECT DISTINCT et_date FROM per_min ORDER BY et_date DESC LIMIT 20
)
SELECT checkpoint AS et_checkpoint,
       round(avg(share) * 100, 1) AS avg_pct_of_day_volume_done
FROM (
    SELECT et_date,
           checkpoint,
           sumIf(v, et_min < checkpoint) / sum(v) AS share
    FROM (
        SELECT et_date, et_min, v, arrayJoin(['10:00', '12:00', '14:00', '15:30', '16:00']) AS checkpoint
        FROM per_min
        WHERE et_date IN (SELECT et_date FROM last20)
    )
    GROUP BY et_date, checkpoint
)
GROUP BY checkpoint
ORDER BY checkpoint

到了上午 10:00,即常規交易開始後半小時,SPY 通常僅累積到當日最終全日成交量的 12.4%;到了中午為 34.8%,下午 2:00 為 51.1%,下午 3:30 仍僅有 67.3%。即使在下午 4:00 收盤鐘響時,總量也僅達 85.7%——其餘部分均在 16:00 或之後才被申報,且大部分集中在收盤鐘響後的最初幾分鐘內,此時收盤競價及其他日終交易才會登錄到行情揭示板上;盤後交易時段本身的成交量則遠更清淡。這與上方圖表中的陡降相符:在收盤鐘響時,每分鐘的交易節奏驟然崩跌,但當日總量中仍有相當一部分正在被申報。經過時間調整的早盤相對成交量,是將今日累積成交量除以 20 日均量乘以該檢查點的成交量佔比。有一點需留意:此時間表是 SPY 的——每檔股票都有自己的交易時鐘,而下方的工作範例衡量的是某單一標的的數據。

實例演練:一次真正的大量交易時段(MU)

2026 年 6 月對美光來說是交易量沉重的一個月——MU 2026 年 6 月深度解析完整記錄了當月走勢。以下是該月單一最大量交易時段,並以兩種方式計算 RVOL:

查詢MU — 2026年6月成交量最大交易日:時間調整後 vs. 原始相對成交量,及全日總量
每個數據背後的精確 SQL 語法
WITH mu_daily AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
           sum(toFloat64(volume)) AS day_volume,
           sumIf(toFloat64(volume), formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') < '10:30') AS vol_by_1030
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'MU'
      AND window_start >= toDateTime('2026-04-15 00:00:00', 'America/New_York')
      AND window_start < toDateTime('2026-07-01 00:00:00', 'America/New_York')
    GROUP BY et_date
    HAVING day_volume > 1000000
),
biggest AS (
    SELECT et_date, day_volume, vol_by_1030
    FROM mu_daily
    WHERE et_date >= toDate('2026-06-01') AND et_date <= toDate('2026-06-30')
    ORDER BY day_volume DESC
    LIMIT 1
),
trailing AS (
    SELECT sum(day_volume) / 20 AS adv, sum(vol_by_1030) / 20 AS avg_by_1030
    FROM (
        SELECT day_volume, vol_by_1030
        FROM mu_daily
        WHERE et_date < (SELECT et_date FROM biggest)
        ORDER BY et_date DESC
        LIMIT 20
    )
)
SELECT formatDateTime((SELECT et_date FROM biggest), '%Y-%m-%d') AS session_date,
       round((SELECT vol_by_1030 FROM biggest) / 1e6, 1) AS vol_by_1030_m,
       round((SELECT avg_by_1030 FROM trailing) / 1e6, 1) AS avg_vol_by_1030_m,
       round((SELECT vol_by_1030 FROM biggest) / (SELECT avg_by_1030 FROM trailing), 1) AS rvol_1030_adjusted,
       round((SELECT vol_by_1030 FROM biggest) / (SELECT adv FROM trailing), 2) AS rvol_1030_naive,
       round((SELECT day_volume FROM biggest) / 1e6, 1) AS session_volume_m,
       round((SELECT adv FROM trailing) / 1e6, 1) AS trailing_adv_m,
       round((SELECT day_volume FROM biggest) / (SELECT adv FROM trailing), 1) AS rvol_full_day

MU 當月最大交易時段落在 2026-06-25。當天上午 10:30 前,已成交 32.8 百萬股,而過去 20 個交易日同一時段的平均成交量為 17.3 百萬股——得出時間調整後的 RVOL 為 1.9。若改用全日平均成交量 51 百萬股來計算該上午總量,粗略解讀會是 0.64:表面上看似低於平均的一天,實際上該上午的交易節奏已接近平常的兩倍。該時段最終成交 77.2 百萬股,全日 RVOL 為 1.5

這個收盤數字,相較於那些動輒十倍於平均成交量的飆股截圖,可能顯得平淡——但它是否真的平淡,需要透過與分佈情況的比較來衡量。

什麼才算高相對成交量?

交易論壇常流傳「RVOL 高於 2 就算高」這類門檻。以下是經過量化的版本:針對每一檔過去 20 日平均日成交量高於 500 萬股(且具備完整 20 個前一交易日紀錄)的美股與 ETF,取其最近一個完整交易日的全日 RVOL,在該群組內進行百分位排名。關於標籤的一點說明:這項篩選計算的是股數,而非成交金額,因此這個高成交量群組涵蓋了從大型股、ETF,一路到低價、高週轉率的小型股——高股數成交量並不等同於容易交易。

查詢高成交量美股與ETF之全日相對成交量百分位分佈(20日均量高於500萬股),最新完整交易日
每個數據背後的精確 SQL 語法
WITH daily AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
           toFloat64(sum(volume)) AS day_volume
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= now() - INTERVAL 40 DAY
      AND toDate(toTimeZone(window_start, 'America/New_York')) < toDate(toTimeZone(now(), 'America/New_York'))
    GROUP BY ticker, et_date
),
spy_days AS (
    SELECT et_date,
           day_volume,
           avg(day_volume) OVER (ORDER BY et_date ROWS BETWEEN 20 PRECEDING AND 1 PRECEDING) AS prior_avg
    FROM daily
    WHERE ticker = 'SPY' AND day_volume > 10000000
),
sessions AS (
    SELECT et_date FROM spy_days
),
latest AS (
    SELECT max(et_date) AS d FROM spy_days WHERE prior_avg > 0 AND day_volume >= 0.6 * prior_avg
),
prior20 AS (
    SELECT et_date FROM sessions WHERE et_date < (SELECT d FROM latest) ORDER BY et_date DESC LIMIT 20
),
rvols AS (
    SELECT ticker, day_vol / adv20 AS rvol
    FROM (
        SELECT ticker,
               sumIf(day_volume, et_date = (SELECT d FROM latest)) AS day_vol,
               sumIf(day_volume, et_date IN (SELECT et_date FROM prior20)) / 20 AS adv20,
               countIf(day_volume > 0 AND et_date IN (SELECT et_date FROM prior20)) AS sessions_traded
        FROM daily
        WHERE ticker NOT IN ('SPCX')
        GROUP BY ticker
        HAVING adv20 > 5000000 AND day_vol > 0 AND sessions_traded = 20
    )
)
SELECT pair.1 AS percentile,
       round(pair.2, 2) AS rvol
FROM (
    SELECT arrayJoin(arrayZip(['p10', 'p25', 'p50 (median)', 'p75', 'p90', 'p99'], quantilesExact(0.1, 0.25, 0.5, 0.75, 0.9, 0.99)(rvol))) AS pair
    FROM rvols
)
ORDER BY percentile

這個高成交量群組的中位數股票,當日成交量為自身 20 日平均的 0.73 倍。十分之九的股票落在 1.37 以下,僅有百分之一的股票超過 4.71。把前一節 MU 的交易時段拿來對照這張表,它就不再顯得溫和——即便是交易熱絡的股票,多數日子也都在自身均值附近;偏離均值數倍的情況相當罕見。

下尾端同樣重要:第 10 百分位數落在 0.11。這麼低的讀數,通常標誌著該股票的 20 日均值仍涵蓋某個爆量交易日——在爆量過後,被放大的分母會壓低 RVOL 長達數週。這個計算窗口具有雙向的記憶效應。

一項附帶說明:這僅是單一交易日的橫斷面數據——百分位數每天都會漂移,全市場的事件日(指數再平衡、選擇權到期)也可能推升整條曲線。

哪些股票出現異常成交量?RVOL 排行榜

相同股票池,按排名排列(每週固定版本請見本週異常成交量股票):在 2026-07-21 交易時段中,日均成交量超過 500 萬股的股票裡,全日 RVOL 讀數最高的前十名——也就是篩選器會標示為異常成交量的榜單。此篩選條件要求完整的前 20 個交易時段資料——近期掛牌的股票缺乏有意義的 20 日均量,否則榜單將充斥雜訊。

查詢全日相對成交量前10名 — 最新完整交易日(20日均量高於500萬股,需完整歷史資料)
每個數據背後的精確 SQL 語法
WITH daily AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
           toFloat64(sum(volume)) AS day_volume
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= now() - INTERVAL 40 DAY
      AND toDate(toTimeZone(window_start, 'America/New_York')) < toDate(toTimeZone(now(), 'America/New_York'))
    GROUP BY ticker, et_date
),
spy_days AS (
    SELECT et_date,
           day_volume,
           avg(day_volume) OVER (ORDER BY et_date ROWS BETWEEN 20 PRECEDING AND 1 PRECEDING) AS prior_avg
    FROM daily
    WHERE ticker = 'SPY' AND day_volume > 10000000
),
sessions AS (
    SELECT et_date FROM spy_days
),
latest AS (
    SELECT max(et_date) AS d FROM spy_days WHERE prior_avg > 0 AND day_volume >= 0.6 * prior_avg
),
prior20 AS (
    SELECT et_date FROM sessions WHERE et_date < (SELECT d FROM latest) ORDER BY et_date DESC LIMIT 20
)
SELECT ticker,
       formatDateTime((SELECT d FROM latest), '%Y-%m-%d') AS session_date,
       round(day_vol / 1e6, 1) AS session_volume_m,
       round(adv20 / 1e6, 1) AS adv_20d_m,
       round(day_vol / adv20, 1) AS rvol
FROM (
    SELECT ticker,
           sumIf(day_volume, et_date = (SELECT d FROM latest)) AS day_vol,
           sumIf(day_volume, et_date IN (SELECT et_date FROM prior20)) / 20 AS adv20,
           countIf(day_volume > 0 AND et_date IN (SELECT et_date FROM prior20)) AS sessions_traded
    FROM daily
    WHERE ticker NOT IN ('SPCX')
    GROUP BY ticker
    HAVING adv20 > 5000000 AND day_vol > 0 AND sessions_traded = 20
)
ORDER BY rvol DESC, ticker
LIMIT 10

榜單首位 LBGJ 成交 169.2 百萬股,相較其 20 日均量 5.1 百萬股——RVOL 達到 33.3。每一列的成交量都超越了自身均量。這類排行榜通常會偏離家喻戶曉的超大型股——要讓原本已極高的均量翻倍,需要異常龐大的股數,而規模較小的股票則能在單一交易時段內使其成交量倍增。

數據說明:交易時段選取與排除規則

兩張排名表使用相同的股票池與相同的交易時段規則。只有當 SPY 在該日期的成交量達到其自身前 20 個交易時段均量的至少 60% 時,該候選交易時段才算完整——最新一天的數據送達會有延遲,此檢查可防止將部分載入的交易日誤判為已完成的交易時段。兩張表也排除了一支近期被交易所重新分配給新掛牌公司的代號:數據供應商的資料中,該代號下混雜了兩家不同公司的歷史紀錄,因此其 20 日均量不具備有意義的比較基礎。SQL 中的排除清單在每次更新時,都會與我們的代號身分檢查保持同步;任何新標記的重複使用代號,都會以相同方式加入。

常見問題

什麼樣的相對成交量(RVOL)數字算好?

沒有官方門檻。根據我們數據中最近一個完整交易日的全美高成交量股票衡量,中位數個股達到其20日均量的 0.73 倍,第90百分位數為 1.37,第99百分位數則為 4.71

相對成交量(RVOL)為2代表什麼?

該股票在衡量期間(通常是過去20個交易日)的交易量達到其平均值的兩倍。時間點是關鍵:相對於同一時間點均量的2倍,在盤中是強勢讀數;而在收盤時的2倍,則標誌著當天以正常速度的兩倍作收。

盤中相對成交量如何計算?

將今日累積成交量,除以回看窗口內同一時點的累積平均成交量。用上午盤中的總量除以全天均量,會嚴重低估讀數——截至上午10:00,SPY通常僅完成其最終全日成交量的 12.4%。

相對成交量包含盤前和盤後交易嗎?

各平台慣例不同;本頁面計算美東時間日曆日內的每一分鐘K線,包含延長交易時段。對SPY而言,盤前貢獻明顯很小——9:00時段的中位數為每分鐘 3.5 千股,而開盤後不久則為 136 千股。

高相對成交量是看漲還是看跌?

兩者皆非。相對成交量衡量的是參與度,而非方向——無論個股表現最佳或最差的日子,都會出現大量成交。高相對成交量的交易日,歷來與財報發布、指數調整及頭條新聞同時發生;這個數字只說明人群到場了,而非他們傾向哪一邊。


上方每個面板都包含生成該數據的確切SQL——打開一個,換成你自己的股票代碼,即可在Strasmore終端上衡量你實際交易標的的相對成交量。