Wat is RVOL en hoe leest u relative volume
RVOL is de verhouding tussen het huidige volume en het 20-daagse gemiddelde. Ontdek hoe u deze indicator gebruikt om afwijkende handelsactiviteit te herkennen.
Relative volume (RVOL) meet de mate waarin een aandeel wordt verhandeld ten opzichte van het eigen recente gemiddelde: het handelsvolume van de sessie gedeeld door het gemiddelde dagelijkse volume van het aandeel, meestal berekend over de afgelopen 20 sessies. Een RVOL van 1 duidt op een normale dag, 2 betekent dat er twee keer zoveel aandelen zijn verhandeld als gebruikelijk, en 0,5 markeert een sessie met de helft van de gebruikelijke snelheid. Alle gegevens op deze pagina zijn gebaseerd op Amerikaanse marktdata op minuutniveau, waarbij de exacte query bij elk paneel is gevoegd.
Wat is relative volume? Een eenvoudige definitie
Ruwe volume zegt weinig op zichzelf: vijf miljoen aandelen is een zeer rustige dag voor een mega-cap en een eenmalige gebeurtenis voor een small-cap. Relative volume maakt de vergelijking met het normale volume van het aandeel expliciet:
RVOL = het volume van de dag ÷ het gemiddelde dagelijkse volume van het aandeel (meestal de laatste 20 sessies)
Een hypothetisch voorbeeld: een aandeel dat gemiddeld 10 miljoen aandelen per dag verhandelt en bij de sluiting 25 miljoen aandelen heeft verhandeld, heeft een RVOL van 2,5. (Een print is een transactie die wordt gerapporteerd op de consolidated tape — het marktbrede register van executies — en "the tape" is de afkorting die handelaren hiervoor gebruiken.) De lookback van 20 sessies is een conventie — platforms gebruiken ook 10, 30 of 50 dagen; het is ongeveer één handelsmaand. Deze periode is ook onderhevig aan de bijzonderheden van de beurskalender: een handelsdag met een halve dag door een feestdag draagt slechts een fractie van het volume van een normale sessie bij aan het gemiddelde. beursvakanties en vroege sluitingen geeft aan wanneer deze plaatsvinden.
Waarom volgen handelaren relative volume?
RVOL is een maatstaf voor participatie, niet voor de richting. Dagen met een hoge RVOL concentreren zich rond herkenbare gebeurtenissen — kwartaalcijfers, toevoegingen aan een index of het nieuws. Een prijsbeweging die gepaard gaat met een hoog volume duidt op een grote groep marktdeelnemers; dezelfde beweging bij een RVOL van 0,3 kan het resultaat zijn van slechts enkele orders. Activiteit is ook gerelateerd aan de verhandelbaarheid: over verschillende aandelen heen hebben de minst verhandelde namen de breedste bid-ask spreads, die worden gepresenteerd door de market makers die de hele dag door beide zijden quoten. Voor elk individueel aandeel liggen de quotes tijdens de rustigste sessies doorgaans breder dan tijdens de drukste sessies. (Volume vormt ook de basis voor VWAP, de volume-weighted average price — de andere belangrijke referentie op basis van volume.)
Hoe u relatieve volume berekent — en de valstrik van het tijdstip
De berekening voor de volledige dag bestaat uit één deling: het totale volume van de sessie ÷ het gemiddelde dagelijkse volume van de afgelopen 20 sessies. Deze waarde is pas betrouwbaar na de sluiting. De valstrik is het uitvoeren van de berekening halverwege de sessie: om 10:30 uur is het lopende totaal van nature slechts een fractie van een volledige dagwaarde, waardoor zelfs een zeer actieve ochtend als rustig wordt geïnterpreteerd. Intraday volume volgt gedurende de dag een U-vorm, en elke intraday RVOL moet rekening houden met dit verloop.
Hieronder staat de vorm, gemeten op SPY, de S&P 500 ETF: de mediane hoeveelheid verhandelde aandelen per minuut in elke 30-minuten bucket gedurende de laatste 30 voltooide sessies, inclusief extended hours (04:00 tot 20:00 uur Eastern Time).
De exacte SQL achter elk getal
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_timeDe 9:30 bucket — het eerste half uur van de reguliere handel — had een mediaan van 136 duizend aandelen per minuut, tegenover 3.5 duizend in de 9:00 premarket bucket vlak daarvoor. Het tempo neemt af naar 49.5 duizend in de 12:30 bucket, om vervolgens toe te nemen richting de sluiting: 168.3 duizend in de 3:30 bucket, de stijging naar de sluitingsveiling en ruim boven het dieptepunt tijdens de lunch. Na de klok van 16:00 uur daalt het tempo per minuut scherp naar after-hours trading.
Intraday relatieve volume: correctie voor het tijdstip
De fix wijzigt de noemer: vergelijk het lopende totaal van vandaag met het gemiddelde lopende totaal op hetzelfde tijdstip. Dit vereist kennis van het aandeel van het volume van een normale handelsdag dat op elk tijdstip al is voltooid — hier gemeten over de laatste twintig voltooide sessies van SPY:
De exacte SQL achter elk getal
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 checkpointOm 10:00 uur, een half uur na de start van de reguliere handel, heeft SPY doorgaans slechts 12.4% van het uiteindelijke volume van de dag gerealiseerd; om 12:00 uur 34.8%, om 14:00 uur 51.1%, en om 15:30 uur nog steeds slechts 67.3%. Zelfs bij de sluiting om 16:00 uur staat het totaal op 85.7% — alle overige gegevens worden om of na 16:00 uur gerapporteerd, waarvan het grootste deel binnen de eerste minuten na de sluiting binnenkomt wanneer de sluitingsveiling en andere transacties aan het einde van de dag de markt bereiken; de after-hours sessie zelf is veel minder liquide. Dit komt overeen met de daling in de bovenstaande grafiek: het volume per minuut stort in bij de sluiting, terwijl er nog steeds een aanzienlijk deel van het dagtotaal wordt gerapporteerd. Een op tijd aangepaste ochtend RVOL deelt het cumulatieve volume van vandaag door het 20-daagse gemiddelde vermenigvuldigd met het aandeel op het betreffende tijdstip. Eén kanttekening: dit schema is specifiek voor SPY — elk aandeel heeft zijn eigen verloop, en het onderstaande rekenvoorbeeld meet dat van één specifiek aandeel.
Een uitgewerkt voorbeeld: een sessie met een zeer hoog volume (MU)
Juni 2026 was een drukke maand voor Micron — de MU diepgaande analyse van juni 2026 analyseert het volledige verloop. Hieronder volgt de sessie met het grootste volume van die maand, inclusief de RVOL-berekening op beide manieren:
De exacte SQL achter elk getal
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_dayDe grootste sessie van MU in die maand vond plaats op 2026-06-25. Om 10:30 uur die dag waren er 32.8 miljoen aandelen verhandeld, tegenover een gemiddelde van 17.3 miljoen op hetzelfde tijdstip gedurende de voorgaande 20 sessies — een tijd-gecorrigeerde RVOL van 1.9. Deelt u dat ochtendtotaal in plaats daarvan door het gemiddelde voor de volledige dag van 51 miljoen, dan is de naïeve waarde 0.64: een dag onder het gemiddelde, schijnbaar, in een ochtend die bijna op twee keer het gebruikelijke tempo draaide. De sessie eindigde op 77.2 miljoen aandelen, een RVOL voor de volledige dag van 1.5.
Dat slotcijfer kan bescheiden lijken vergeleken met screenshots van aandelen die tien keer het gemiddelde halen — of het werkelijk bescheiden is, is een vraag die beantwoord wordt door de distributie, die hierna wordt gemeten.
Wat wordt beschouwd als een hoge relatieve volume?
Handelsfora noemen vaak drempelwaarden zoals "RVOL boven de twee is hoog". Dit is de meetbare versie: de volledige dagelijkse RVOL voor elke in de VS genoteerde aandeel en ETF met een gemiddeld dagelijks volume van 20 dagen boven de vijf miljoen aandelen (en een volledige geschiedenis van 20 voorgaande sessies), gepresenteerd in percentielen over de gehele groep voor de meest recente voltooide sessie in onze data. Een opmerking bij de classificatie: de scan kijkt naar het aantal aandelen, niet naar de dollarwaarde. Deze groep met een hoog volume varieert van mega-caps en ETF's tot goedkope small-caps met een hoge omloopsnelheid — een hoog volume in aandelen is niet hetzelfde als een hoge liquiditeit.
De exacte SQL achter elk getal
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 percentileDe mediaan in deze groep met een hoog volume handelde tegen 0.73 keer het eigen 20-daagse gemiddelde. Negen van de tien namen bleven onder 1.37, en slechts één op de honderd overschreed 4.71. Vergelijk de sessie van MU uit het vorige gedeelte met deze tabel; dan lijkt het volume niet langer bescheiden — zelfs drukke namen handelen de meeste dagen rond hun eigen gemiddelde; veelvouden daarvan zijn zeldzaam.
Ook de onderste staart is relevant: het 10e percentiel lag op 0.11. Waarden die zo laag zijn, duiden meestal op een aandeel waarvan het 20-daagse gemiddelde nog wordt beïnvloed door één enorme sessie — na een piek houdt de opgeblazen noemer de RVOL wekenlang laag. Het venster heeft een geheugen, in beide richtingen.
Eén kanttekening: dit is een dwarsdoorsnede van een enkele sessie — percentielen verschuiven van dag tot dag, en dagen met marktbrede gebeurtenissen (index rebalances, option expirations) kunnen de gehele curve omhoog trekken.
Welke aandelen hadden een ongebruikelijke volume? De RVOL-leaderboard
Dezelfde universe, gerangschikt (de wekelijkse versie staat op ongebruikelijke volume aandelen deze week): de tien hoogste full-day RVOL-waarden van de 2026-07-21 sessie onder namen met een gemiddeld dagelijks volume van meer dan vijf miljoen aandelen — de lijst die een screener zou markeren als ongebruikelijke volume. De screener vereist een volledige periode van twintig voorgaande sessies — recente beursnoteringen hebben geen betekenisvol 20-daags gemiddelde en zouden de lijst anders vullen met foutieve gegevens.
De exacte SQL achter elk getal
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 10De top van de lijst, LBGJ, registreerde 169.2 miljoen aandelen tegenover een 20-daags gemiddelde van 5.1 miljoen — een RVOL van 33.3. Elke rij overtrof het eigen gemiddelde. Lijsten zoals deze verschuiven weg van bekende mega-caps — het verdubbelen van een reeds enorm gemiddelde vereist een buitengewoon aantal aandelen, terwijl een kleiner aandeel het volume in één sessie kan vermenigvuldigen.
Datanotities: sessiekeuze en uitsluitingen
Beide gerangschikte tabellen gebruiken dezelfde universe en dezelfde sessieregel. Een kandidaat-sessie telt pas als voltooid wanneer het volume van SPY op die datum ten minste 60% bereikt van het eigen gemiddelde volume van de voorgaande twintig sessies van SPY — de gegevens van de nieuwste dag arriveren met vertraging, en deze controle voorkomt dat een gedeeltelijk geladen dag als een voltooide sessie wordt gelezen. Beide tabellen sluiten ook één symbool uit dat door de beurzen onlangs aan een nieuwe notering is toegewezen: leveranciersfeeds bevatten de historie van twee verschillende bedrijven onder die ticker, waardoor het 20-daagse gemiddelde geen betekenisvolle baseline is. De uitsluitingslijst in de SQL wordt bij elke verversing gesynchroniseerd met onze controles op symboolidentiteit; elk nieuw gemarkeerd hergebruikt symbool wordt op dezelfde manier toegevoegd.
FAQ
Wat is een goede RVOL-waarde?
Er is geen officiële drempelwaarde. Gebaseerd op Amerikaanse aandelen met een hoog volume tijdens de meest recente voltooide sessie in onze data, handelde de mediaan op 0.73 keer het 20-daagse gemiddelde. Het 90ste percentiel was 1.37 en het 99ste percentiel was 4.71.
Wat betekent een RVOL van 2?
Het aandeel heeft twee keer het gemiddelde volume verhandeld over de gemeten periode, meestal de afgelopen 20 sessies. Het tijdstip is van belang: een waarde van 2 ten opzichte van het gemiddelde op hetzelfde tijdstip van de dag is een sterke meting halverwege de sessie; een waarde van 2 bij de close duidt op een dag met een dubbele normale snelheid.
Hoe berekent u relative volume intraday?
Deel het cumulatieve volume van vandaag door het gemiddelde cumulatieve volume op hetzelfde tijdstip binnen uw lookback window. Het delen van een totaal in de ochtend door een gemiddelde over de volledige dag geeft een te lage waarde — tegen 10:00 uur heeft SPY doorgaans slechts 12.4% van het uiteindelijke dagvolume verhandeld.
Omvat relative volume de handel in de premarket en after-hours?
De conventies per platform verschillen; deze pagina telt elke minuut-bar binnen de Eastern Time-kalenderdag, inclusief extended hours. Voor SPY is de bijdrage uit de premarket zichtbaar klein — een mediaan van 3.5 duizend aandelen per minuut in de 9:00 bucket tegenover 136 duizend direct na de open.
Is een hoge relative volume bullish of bearish?
Geen van beide. RVOL meet participatie, niet de richting — een zware tape komt voor op zowel de beste als de slechtste dagen van een aandeel. Sessies met een hoge RVOL zijn historisch gezien samengevallen met earnings, indexwijzigingen en het nieuws; het getal geeft aan dat de massa aanwezig was, niet in welke richting zij neigt.
Elk paneel hierboven bevat de exacte SQL die het heeft gegenereerd — open er een, vervang de ticker door uw eigen ticker, en meet de RVOL voor de namen die u daadwerkelijk handelt op de Strasmore terminal.