RVOLとは?相対出来高の見方と活用法
RVOLは当日の出来高を過去20日間の平均で割った指標です。数値が1を超えると通常より活発な取引が行われていることを示します。
相対出来高(RVOL)は、その銘柄の直近の通常時と比較して、取引がどれほど活発かを示す指標です。これは、当日の出来高を、通常は過去20取引日の平均日足出来高で割ったものです。RVOLが1であれば通常の取引であり、2であれば通常の2倍の株数が取引されたことを意味します。0.5は、通常の半分程度の取引ペースであることを示します。このページに記載されているすべての数値は、分単位の米国市場データに基づいています。各パネルには、正確なクエリが添付されています。
比較ボリューム(Relative Volume)とは何か?簡潔な定義
単純な出来高だけでは意味を持ちません。500万株という数字は、大型株にとっては極めて静かな取引量ですが、小型株にとっては年に一度の出来事となる可能性があります。比較ボリュームは、その銘柄自身の通常の取引量と比較して、現在の状況を明確にします。
RVOL = 当日の出来高 ÷ その銘柄の平均出来高(通常は直近20セッション)
仮定の例を挙げます。1日の平均出来高が1,000万株の銘柄が、終値までに2,500万株を記録した場合、RVOLは2.5となります。(「プリント」とは、市場全体の約定記録であるコンソリデーテッド・テープに報告される取引を指します。)20セッションという期間設定は慣習的なものです。プラットフォームによっては10日、30日、または50日を使用する場合もありますが、概ね約1ヶ月間の取引期間に相当します。また、この期間設定は取引所のカレンダーの影響も受けます。祝日の半日取引の場合、平均出来高に加算されるのは通常のセッションのわずかな割合のみとなります。詳細は 市場の祝日と早期終了 を参照してください。
なぜトレーダーは相対ボリューム(RVOL)を注視するのか?
RVOLは、価格の方向性ではなく、市場参加の度合いを示す指標です。RVOLが高い日は、決算、指数採用、主要ニュースなどの特定のイベントに集中する傾向があります。大きなボリュームを伴う価格変動は、多くの投資家がその動きを支持していることを示します。一方で、RVOLが0.3のような低い水準での価格変動は、わずかな注文によるものである可能性があります。また、取引の活発さは流動性と連動します。個別銘柄において、最も取引が少ない銘柄は bid-ask spreads が広くなります。これは、一日中両建ての価格提示を行う market makers によるものです。また、どの銘柄においても、取引が静かなセッションでは、活発なセッションよりもスプレッドが広がる傾向にあります。(ボリュームは、もう一つの重要なボリュームベースの指標である VWAP, the volume-weighted average price の算出根拠でもあります。)
相対ボリュームの計算方法と時間帯による落とし穴
1日の総量に基づく計算は、1つの割り算で行います。セッションの総出来高を、20日間の平均出来高で割ります。この数値が正確になるのは、取引終了後のみです。落とし穴は、セッション中に計算することです。午前10時30分の時点では、累計出来高は当然ながら1日の数値の一部に過ぎません。そのため、午前中に激しい動きがあっても、数値上は低調に見えてしまいます。日中の出来高は、時間経過とともにU字型に推移します。日中のRVOL(相対ボリューム)を算出する際は、この形状を考慮しなければなりません。
以下は、SPY(S&P 500 ETF)で測定した形状です。過去30日間の取引完了セッションにおける、各30分間隔の枠ごとの1分間あたりの取引株数の中央値です。延長時間(米国東部時間 午前4時〜午後8時)を含みます。
各数値の背後にある正確な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通常の取引開始後最初の30分間である9時30分の枠では、1分あたり中央値で136千株でした。その直前の9時00分のプレマーケットの枠は3.5千株でした。取引ペースは12時30分の枠で49.5千株まで低下しますが、その後、終盤に向けて増加します。終値オークションに向けた動きである3時30分の枠では168.3千株となり、昼の谷間を大きく上回ります。午後4時のベルが鳴った後、1分あたりのペースはアフターアワーズ取引へと急落します。
日中相対出来高:時間帯による調整
この修正では分母を変更します。今日の累計出来高を、同時刻における平均累計出来高と比較します。そのためには、各時刻において通常の取引日の出来高がどの程度完了しているかを知る必要があります。ここでは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定時取引開始から30分後の午前10時までに、SPYの出来高は通常、その日の総出来高のわずか12.4%にとどまります。正午までに34.8%、午後2時までに51.1%、午後3時30分時点でもまだ67.3%に過ぎません。午後4時の終値時点でも、累計は85.7%です。それ以外の取引は16:00以降に報告されますが、その大半は終値オークションやその他の取引が発生するベル直後の数分間に集中します。時間外取引の出来高は極めて少なくなります。これは、上のチャートに見られる急落と一致します。ベルが鳴ると、一日の総出来高の大部分がまだ報告されている最中であるにもかかわらず、分単位のペースは急落します。時間調整後の午前中のRVOLは、今日の累計出来高を「20日間の平均 × チェックポイントの割合」で割って算出します。注意点として、このスケジュールはSPYのものです。銘柄ごとに取引のタイミングは異なるため、以下の計算例は特定の銘柄のデータを用いています。
実例:高出来高セッションの分析 (MU)
2026年6月はMicronにとって取引量の多い月でした。MU 2026年6月の詳細分析では、全取引履歴を検証しています。以下に、同月で最大の出来高を記録したセッションの分析結果を、2通りのRVOL計算を用いて示します。
各数値の背後にある正確な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_dayMUの月間最大セッションは2026-06-25に発生しました。当日の午前10時30分時点で、取引高は32.8百万株に達しました。これは、過去20セッションの同時刻の平均である17.3百万株に対し、時間調整後のRVOLが1.9であることを示しています。この午前の合計値を、1日あたりの平均である51百万株で割った単純な数値は0.64となります。午前の取引ペースが通常の約2倍であったにもかかわらず、一見すると平均を下回る取引量に見えます。セッションの最終出来高は77.2百万株で、1日あたりのRVOLは1.5でした。
この終値ベースの出来高は、平均の10倍を記録する銘柄と比較すると控えめに見えるかもしれません。その実態については、次に示す分布分析で検証します。
高い相対出来高(RVOL)の定義とは
トレーディングフォーラムでは「RVOLが2を超えると高い」といった基準が語られます。当サイトの定義は以下の通りです。20日間の平均出来高が500万株を超え、かつ過去20セッション分のデータがあるすべての米国上場株式およびETFを対象としています。直近の完了したセッションにおける、グループ内でのパーセンタイル値で算出しています。なお、このラベルは金額ではなく株数を基準としています。そのため、この高出来高グループには大型株やETFから、低価格で回転の速い小型株まで含まれます。株数が多いことが、必ずしも流動性の高さ(取引のしやすさ)を意味するわけではありません。
各数値の背後にある正確な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倍でした。10銘柄中9銘柄は1.37を下回り、100銘柄中わずか1銘柄のみが4.71を超えました。前セクションのMUのセッションをこの表と比較すると、決して控えめな数値ではないことがわかります。取引が活発な銘柄であっても、ほとんどの日は自身の平均付近で推移しており、平均の数倍に達することは稀です。
下位層も重要です。10パーセンタイルは0.11でした。これほど低い数値は、通常、20日平均が過去の極端な出来高セッションによって押し上げられている銘柄に見られます。一度急増すると、膨らんだ分母の影響で、その後数週間にわたりRVOLは低く抑えられます。この指標は、増減の両方向において過去の値を反映します。
注意点として、これは単一セッションの断面データです。パーセンタイルは日ごとに変動し、市場全体のイベント(指数のリバランスやオプションの満期日など)によって、曲線全体が押し上げられる可能性があります。
異常な出来高を記録した銘柄は? RVOLリーダーボード
対象銘柄は同一です(週次版のランキングは 今週の異常出来高銘柄 を参照):1日平均出来高が500万株を超える銘柄の中から、2026-07-21 セッションにおける日次RVOL(相対的出来高)の上位10銘柄をランク付けしています。これはスクリーナーが異常な出来高として検知する基準に基づいています。なお、正確な20日平均を算出するため、直近20セッション分のデータが必要です。上場直後の銘柄は、意味のある20日平均を持たないため除外されています。
各数値の背後にある正確な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 は、20日平均の 5.1 百万株に対し、169.2 百万株を記録し、RVOLは 33.3 となりました。すべての銘柄が自身の平均を上回りました。このようなランキングでは、時価総額の大きい銘柄は上位に入りにくい傾向があります。巨大な平均出来高を2倍にするには膨大な株数が必要ですが、時価総額の小さい銘柄であれば、1セッションで出来高を数倍に増やすことが可能なためです。
データに関する注記:セッションの選択と除外
両方のランキングテーブルは、同一の対象銘柄およびセッション規則を使用しています。対象となるセッションは、SPYの当該日の出来高が、SPY自身の過去20セッションの平均出来高の60%以上に達した時点で、完了したものとみなされます。最新日のデータには遅延があるため、このチェックによって、データが不完全な日のセッションが確定したものとして読み込まれるのを防いでいます。また、両方のテーブルにおいて、取引所が最近銘柄コードを再割り当てした銘柄を1つ除外しています。ベンダーのフィードでは、そのティッカーに異なる2つの企業の履歴が混在している場合があり、20日平均が有効な基準にならないためです。SQL内の除外リストは、更新のたびに当社の銘柄識別チェックと同期されます。新たに再利用された銘柄が特定された場合も、同様の手順で追加されます。
FAQ
RVOLの目安となる数値は?
明確な基準はありません。当社のデータに基づき、直近の取引セッションにおける米国高出来高銘柄を測定した結果、中央値は20日平均の0.73倍でした。90パーセンタイルは1.37、99パーセンタイルは4.71でした。
RVOLが2とは何を意味しますか?
対象期間(通常は過去20セッション)において、その銘柄の出来高が平均の2倍に達していることを示します。時間帯が重要です。同時刻の平均と比較して2倍であれば、取引時間中における強い数値です。大引け時点で2倍であれば、通常のペースの2倍の出来高で取引が行われたことを意味します。
Intraday(日中)の相対ボリュームはどのように計算しますか?
当日の累積出来高を、指定したルックバック期間内の同時刻における平均累積出来高で割って算出します。午前中の合計値を1日の平均値で割ると、数値が大幅に過小評価されます。例えば午前10時時点で、SPYは通常、その日の最終出来高の12.4%しか完了していません。
相対ボリュームに時間外取引は含まれますか?
プラットフォームによって仕様が異なります。本ページでは、時間外取引を含む米国東部時間のカレンダー上の全分足を集計しています。SPYの場合、プリマーケットの寄与度は極めて低いです。9:00時点の平均は毎分3.5千株ですが、市場開始直後の136千株と比較すると顕著な差があります。
高い相対ボリュームは強気(Bullish)ですか、それとも弱気(Bearish)ですか?
どちらでもありません。RVOLは参加度を測定するものであり、方向性を示すものではありません。出来高の急増は、銘柄にとって最良の日にも最悪の日にも発生します。歴史的に、高RVOLのセッションは決算発表、指数構成銘柄の変更、主要ニュースの発生と一致してきました。この数値は「市場参加者が集まったこと」を示しており、どちらの方向に動くかは示していません。
上記の各パネルには、算出に使用されたSQLが記載されています。SQLを開き、任意のティッカーに書き換えることで、Strasmoreターミナル上で実際に取引している銘柄のRVOLを測定できます。