RVOL(相対出来高)とは?読み方と高い基準
RVOL(相対出来高)は、当日の出来高を直近20セッションの平均で割った値です。1超は通常より活発な取引を示し、時間帯別RVOLや高い基準も解説します。
相対出来高(RVOL)は、銘柄の取引が直近の通常水準と比べてどの程度活発かを示します。当日の出来高を、通常は直近20セッションの平均日次出来高で割って算出します。RVOLが1なら通常の取引日、2なら通常の2倍の株式が売買されたことを意味します。0.5なら、通常の半分のペースで取引されていることを示します。このページの数値はすべて、米国市場の分足データを基に算出しています。各パネルには、正確なクエリを添付しています。
相対出来高とは?平易な定義
出来高の絶対値だけでは、判断材料として不十分です。大型株にとって500万株は非常に閑散とした日の水準ですが、小型株では年に一度あるかどうかの出来事です。相対出来高は、その銘柄本来の平常時の水準との比較を明確にします。
RVOL = 当日の出来高 ÷ その銘柄の平均日次出来高(通常は直近20セッション)
仮定の例を挙げます。1日平均1000万株の銘柄が、取引終了時点で2500万株の取引を記録した場合、RVOLは2.5です。ここでいう「print」は、約定の市場全体の記録である共同テープに報告された取引を指します。「the tape」は、トレーダーがその記録を指して使う略称です。
20セッションの参照期間は慣行です。プラットフォームによっては10日、30日、50日を使う場合もあります。これはおおむね、取引日ベースの1か月に相当します。この期間には、取引所の営業日カレンダーの影響も反映されます。祝日の半日取引では、通常の1セッション分に満たない出来高しか平均に加わりません。市場の休場日と短縮取引日では、それらの日付を確認できます。
トレーダーはなぜ出来高相対値を注視するのか
RVOLは参加度を示す指標であり、方向性を示す指標ではありません。RVOLが高い日は、決算発表、指数への採用、ヘッドラインニュースなど、特定可能なイベントの前後に集中します。大商いで形成された値動きには、多くの参加者が関与しています。一方、RVOLが0.3の同じ値動きは、わずかな注文による可能性があります。売買活動は流動性とも連動します。銘柄間で見ると、最も薄商いの銘柄ほどビッド・アスク・スプレッドが広くなります。これは一日を通じて買いと売りの双方で気配を提示するマーケットメーカーが形成するものです。また、同じ銘柄でも、取引が最も低調なセッションでは、活発なセッションより気配のスプレッドがやや広くなる傾向があります。(出来高は、もう一つの主要な出来高ベースの指標である出来高加重平均価格(VWAP)の基盤でもあります。)
相対出来高の計算方法と時間帯による落とし穴
終日の計算は一つの割り算で行います。セッションの総出来高を、直近20セッションの1日平均出来高で割ります。これは大引け後にのみ正確な値になります。落とし穴は、セッション途中で計算することです。午前10時30分の累計出来高は、必然的に終日の出来高の一部にすぎません。そのため、朝方に激しい取引があっても、取引が低調に見えてしまいます。日中の出来高は時間帯によってU字型に推移します。したがって、日中のRVOLはこの形状を基準にする必要があります。
以下は、S&P 500 ETFであるSPYで測定した出来高の形状です。直近30日間の完了したセッションを対象に、東部時間の午前4時から午後8時までの時間外取引を含め、30分ごとの時間帯における1分当たりの売買株数の中央値を示しています。
| ET時刻 | 1分間出来高中央値(k) |
|---|---|
| 04:00 | 0.6 |
| 04:30 | 0.3 |
| 05:00 | 0.3 |
| 05:30 | 0.3 |
| 06:00 | 0.4 |
| 06:30 | 0.5 |
| 07:00 | 1.1 |
| 07:30 | 1.6 |
| 08:00 | 2.2 |
| 08:30 | 3.3 |
| 09:00 | 4.7 |
| 09:30 | 113.2 |
| 10:00 | 82.9 |
| 10:30 | 77.6 |
| 11:00 | 64.3 |
| 11:30 | 52.3 |
| 12:00 | 49.3 |
| 12:30 | 43.5 |
| 13:00 | 43.4 |
| 13:30 | 36.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午前9時30分の時間帯は通常取引開始後最初の30分で、1分当たりの出来高中央値は113.2千株でした。その直前の午前9時のプレマーケットの時間帯は、4.7千株でした。出来高のペースは午後12時30分の時間帯に43.5千株まで細ります。その後、大引けに向けて増加し、午後3時30分の時間帯には152.6千株となります。これは大引けのオークションに向けた増加局面で、昼休みの低水準を大きく上回ります。午後4時の取引終了後は、1分当たりのペースが急激に落ち込み、時間外取引に移行します。
日中の相対出来高:時間帯を調整する
修正では分母を変更します。現在までの本日の累計出来高を、同じ時刻までの平均累計出来高と比較します。そのためには、通常の一日の出来高のうち、時刻ごとにどの程度がすでに成立しているかを把握する必要があります。ここでは、SPYの直近20セッション(完了済み)を基に測定しています。
| ETチェックポイント | 1日出来高消化率の平均(%) |
|---|---|
| 10:00 | 20.7 |
| 12:00 | 42.6 |
| 14:00 | 57.2 |
| 15:30 | 71.2 |
| 16:00 | 87.5 |
各数値の背後にある正確な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時、通常取引開始から30分の時点で、SPYの出来高は通常、最終的な一日全体の出来高のわずか20.7%です。正午には42.6%、午後2時には57.2%、午後3時30分でもわずか71.2%です。午後4時の取引終了時点でも、累計は87.5%にとどまります。残りは16時以降に報告され、その大半は取引終了直後の数分間に集中します。この時間帯には、クロージングオークションなどの取引がテープに記録されます。時間外取引そのものは、はるかに薄商いです。これは、上のチャートに見られる急落とも一致します。取引終了時には1分当たりの出来高ペースが急低下する一方、その日の総出来高の相当部分はなお報告され続けます。時間調整後の朝のRVOLは、本日の累計出来高を、20日平均にチェックポイント時点の構成比を掛けた値で割ります。ただし注意点があります。この時間配分はSPYのものであり、各銘柄にはそれぞれ固有の時間配分があります。以下の計算例では、特定の一銘柄を測定しています。
実例:実際に出来高が大きかったセッション(MU)
2026年6月はMicronにとって出来高の大きい月でした。MUの2026年6月の詳細分析では、全約定履歴を確認できます。以下は同月で出来高が最大だった一セッションです。RVOLを二通りの方法で計算しています。
| セッション日付 | 10:30までの出来高(m) | 10:30までの平均出来高(m) | 10:30調整済みRVOL | 10:30単純RVOL | セッション出来高(m) | 直近ADV(m) | 終日RVOL |
|---|---|---|---|---|---|---|---|
| 2026-06-25 | 32.8 | 17.3 | 1.9 | 0.64 | 77.2 | 51 | 1.5 |
各数値の背後にある正確な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百万株が取引されました。過去二十セッションの同時刻までの平均は17.3百万株で、時間調整後のRVOLは1.9です。一方、この午前の累計を一日全体の平均51百万株で割ると、単純計算では0.64となります。これは平均を下回る一日という見方です。しかし、午前のペースは通常のほぼ二倍でした。セッション終了時の出来高は77.2百万株で、一日全体のRVOLは1.5でした。
この終値時点の数値は、平均の十倍に達した銘柄のスクリーンショットと比べると控えめに見えるかもしれません。本当に控えめなのかは、次に分布を測定して確認します。
相対出来高が高いとみなされる水準
取引フォーラムでは、「RVOLが2を超えれば高い」といった基準が示されます。ここでは、測定結果を示します。米国上場の全株式およびETFのうち、20日平均日次出来高が500万株を超え、かつ過去20セッション分の履歴が完全にそろっている銘柄を対象に、データ上の直近の完了セッションについて、終日RVOLをグループ内でパーセンタイル化しました。ラベルについて一つ注意があります。このスクリーニングは金額ではなく株数を数えます。そのため、この高出来高グループには大型株やETFから、株価が低く売買回転の高い小型株まで含まれます。株数ベースの高出来高は、売買のしやすさと同じではありません。
| パーセンタイル | RVOL |
|---|---|
| p10 | 0.08 |
| p25 | 0.57 |
| p50 (median) | 0.86 |
| p75 | 1.2 |
| p90 | 1.69 |
| p99 | 3.43 |
各数値の背後にある正確な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.86倍を取引しました。10銘柄に9銘柄は1.69倍未満で、100銘柄に1銘柄だけが3.43倍を超えました。前のセクションのMUのセッションをこの表と比較すると、控えめには見えなくなります。活発な銘柄でさえ、ほとんどの日は自身の平均付近で推移します。その倍数に達することはまれです。
下側のテールも重要です。10パーセンタイルは0.08でした。この水準まで低い値は通常、20日平均に、急騰後の極端に大きなセッションがまだ含まれている銘柄を示します。分母が膨らむため、RVOLは数週間にわたって低く抑えられます。この期間には、上下両方向の記憶が残ります。
ただし、注意点があります。これは単一セッションの横断面であり、パーセンタイルは日々変動します。また、指数リバランスやオプション満期など、市場全体に影響するイベントの日には、曲線全体が押し上げられることがあります。
出来高に異変があった銘柄は? RVOLランキング
同じ銘柄群をランキング化しています(毎週更新する定番版は今週の異常出来高銘柄)。2026-08-21セッションの終日RVOLを比較し、1日平均出来高が500万株を超える銘柄のうち、上位10銘柄を示します。スクリーナーなら異常出来高として検出する銘柄群です。スクリーニングには直前20セッション分のデータが必要です。上場直後の銘柄には意味のある20日平均がなく、そのままではランキングがデータ上のノイズで埋まるためです。
| ticker | セッション日付 | セッション出来高(m) | 20日ADV(m) | RVOL |
|---|---|---|---|---|
| HOWL | 2026-08-21 | 265 | 5.3 | 50 |
| CAN | 2026-08-21 | 93 | 11 | 8.5 |
| LGCL | 2026-08-21 | 88.1 | 13.1 | 6.8 |
| MRNA | 2026-08-21 | 88.1 | 16 | 5.5 |
| PURR | 2026-08-21 | 36.7 | 9.8 | 3.8 |
| BABA | 2026-08-21 | 32.1 | 8.7 | 3.7 |
| COIN | 2026-08-21 | 24.5 | 7.1 | 3.4 |
| BITX | 2026-08-21 | 26.7 | 8.3 | 3.2 |
| GOSS | 2026-08-21 | 130.9 | 41 | 3.2 |
| TEM | 2026-08-21 | 16.2 | 5.1 | 3.2 |
各数値の背後にある正確な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ランキング首位のHOWLは、20日平均5.3百万株に対して265百万株を記録し、RVOLは50でした。すべての銘柄で、当日の出来高がそれぞれの平均を上回りました。このようなランキングは、一般に知られた超大型株から離れる傾向があります。すでに非常に大きい平均出来高を倍増させるには、極めて多くの株数が必要です。一方、小型銘柄なら、1セッションで売買高を何倍にも増やせます。
データ注記:セッションの選定と除外
2つのランキング表は、同じ銘柄群と同じセッション判定ルールを使用しています。候補セッションは、その日付のSPYの出来高が、SPY自身の直前20セッションの平均出来高の少なくとも60%に達した時点で、初めて完了とみなします。最新日のデータは遅れて到着するためです。この確認により、データが一部しか読み込まれていない日を、完了済みのセッションとして扱うことを防ぎます。両方のランキング表では、取引所が最近、新たな上場銘柄に再割り当てした銘柄記号も1つ除外しています。ベンダーのフィードでは、そのティッカーに異なる2社の履歴が紐付いているため、20日平均が意味のある基準値になりません。SQLの除外リストは、更新のたびに実施する銘柄識別チェックと同期しています。新たに再利用された銘柄記号が検出された場合も、同じ方法で追加します。
よくある質問
適切なRVOLの数値とは?
公式のしきい値はありません。当社データの直近完了セッションで、出来高の多い米国株を対象に測定したところ、中央値の銘柄は20日平均の0.86倍で推移し、90パーセンタイルは1.69、99パーセンタイルは3.43でした。
RVOLが2とはどういう意味ですか?
対象期間(通常は直近20セッション)において、その銘柄の出来高が平均の2倍に達したことを意味します。時間帯が重要です。同じ時間帯の平均と比較して2であれば、セッション中盤としては強い数値です。終値時点で2であれば、通常の2倍のペースで取引された日を示します。
日中の相対出来高はどのように計算しますか?
当日の累積出来高を、参照期間における同じ時刻までの平均累積出来高で割ります。午前中の累積値を終日平均で割ると、数値を大幅に過小評価します。午前10時時点で、SPYは通常、その日の最終出来高の20.7%しか消化していません。
相対出来高にはプレマーケットと時間外取引が含まれますか?
プラットフォームによって扱いが異なります。このページでは、時間外取引を含む東部時間の暦日における毎分のバーを集計しています。SPYではプレマーケットの寄与は明らかに小さく、9時台の1分当たり出来高の中央値は4.7千株です。寄り付き直後は113.2千株です。
相対出来高が高い場合、強気ですか、それとも弱気ですか?
どちらでもありません。RVOLは方向性ではなく参加度を測定します。活発な売買は、その銘柄の最良の日にも最悪の日にも現れます。過去の高RVOLセッションは、決算発表、指数の銘柄入れ替え、ヘッドラインニュースと重なることが多くありました。この数値が示すのは市場参加者が集まったことだけで、どちらに傾いているかではありません。
上記の各パネルには、それを生成した正確なSQLが記載されています。いずれかを開いて自分のtickerに置き換え、Strasmore terminalで実際に取引する銘柄のRVOLを測定してください。