Wat is Relative Volume (RVOL) en hoe leest u dit?
Relative volume (RVOL) meet het handelsvolume van een aandeel ten opzichte van het gemiddelde over twintig dagen. Ontdek hoe u deze indicator gebruikt voor intraday analyses.
Relative volume (RVOL)
Relative volume (RVOL) meet hoe actief een aandeel wordt verhandeld in vergelijking met het recente gemiddelde: het handelsvolume van de sessie gedeeld door het gemiddelde dagelijkse volume van het aandeel, doorgaans berekend over de afgelopen twintig sessies. Een RVOL van één staat voor een normale dag, twee betekent dat er twee keer zoveel aandelen zijn verhandeld als gebruikelijk, en 0,5 duidt op een sessie die op halve kracht draait. Elk cijfer op deze pagina is gebaseerd op marktdata van de Amerikaanse beurs op minutenniveau, waarbij de exacte query aan elk paneel is gekoppeld.
Wat is relatief volume? Een definitie in begrijpelijke taal
Ruw volume zegt op zichzelf weinig: vijf miljoen aandelen is een extreem rustige dag voor een mega-cap en een gebeurtenis die slechts één keer per jaar voorkomt voor een small-cap. Relatief volume maakt de vergelijking met het eigen normale volume van het aandeel expliciet:
RVOL = het volume van de dag ÷ het gemiddelde dagelijkse volume van het aandeel (doorgaans de laatste twintig sessies)
Een hypothetisch voorbeeld: een aandeel dat gemiddeld tien miljoen aandelen per dag verhandelt en op 25 miljoen eindigt bij het slot, heeft een RVOL van 2,5. (Een print is een transactie die wordt gerapporteerd aan de consolidated tape, het marktbrede register van uitgevoerde transacties, en "the tape" is de vakterm onder handelaren voor dit register.) De terugblikperiode van twintig sessies is een conventie; handelsplatformen gebruiken ook tien, dertig of vijftig dagen; dit komt ruwweg overeen met één kalendermaand aan handel. Het venster neemt ook de eigenaardigheden van de beurskalender over: een halve handelsdag op een feestdag voegt slechts een fractie van het volume van een normale sessie toe aan het gemiddelde, en beursfeestdagen en vervroegde sluitingen brengt in kaart waar deze vallen.
Waarom letten handelaren op relatief volume?
RVOL is een graadmeter voor participatie, niet voor richting. Dagen met een hoog RVOL clusteren rond identificeerbare gebeurtenissen, kwartaalcijfers, toevoegingen aan indexen of belangrijk nieuws. Een koersbeweging die tot stand kwam bij een hoog volume werd ondersteund door een grote groep beleggers; dezelfde beweging bij een RVOL van 0,3 kan het werk zijn van slechts enkele orders. Activiteit hangt ook samen met verhandelbaarheid: bij aandelen kennen de minst liquide namen de breedste bid-ask spreads. Deze worden genoteerd door de market makers, die de hele dag aan beide kanten koersen afgeven. Voor elk aandeel geldt dat de quotes tijdens rustige sessies doorgaans iets breder zijn dan tijdens drukke sessies. (Volume vormt ook de basis voor VWAP, de volume-gewogen gemiddelde prijs, de andere belangrijke referentie op basis van volume.)
Hoe u relatief volume berekent en de valkuil van het tijdstip
De berekening voor de volledige dag is één deling: het totale volume van de sessie ÷ het gemiddelde dagvolume over twintig sessies. Deze is pas accuraat na het slot. De valkuil is om deze halverwege de sessie uit te voeren: om 10:30 uur is het lopende totaal uiteraard slechts een fractie van een dagcijfer, waardoor zelfs een zeer actieve ochtend als rustig oogt. Intraday volume volgt een U-vorm gedurende de dag en elk intraday RVOL moet uitgaan van dat patroon.
Hieronder staat het patroon, gemeten op SPY, de S&P 500 ETF: mediaan aantal verhandelde aandelen per minuut in elk tijdvak van dertig minuten over de afgelopen dertig voltooide sessies, inclusief buitenbeurstijden (04:00 tot 20:00 uur Eastern Time).
| ET tijd | mediaan minuutvolume k |
|---|---|
| 04:00 | 0.7 |
| 04:30 | 0.5 |
| 05:00 | 0.4 |
| 05:30 | 0.4 |
| 06:00 | 0.4 |
| 06:30 | 0.4 |
| 07:00 | 1.4 |
| 07:30 | 1.5 |
| 08:00 | 1.9 |
| 08:30 | 2.5 |
| 09:00 | 3.6 |
| 09:30 | 95.5 |
| 10:00 | 68.2 |
| 10:30 | 58.9 |
| 11:00 | 49.1 |
| 11:30 | 45 |
| 12:00 | 39.8 |
| 12:30 | 37.8 |
| 13:00 | 37.1 |
| 13:30 | 34.2 |
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_timeHet tijdvak van 09:30 uur, het eerste half uur van de reguliere handel, kende een mediaan van 95.5 duizend aandelen per minuut, tegenover 3.6 duizend in het premarket-tijdvak van 09:00 uur vlak daarvoor. Het tempo vlakt af tot 37.8 duizend in het tijdvak van 12:30 uur, om vervolgens toe te nemen richting het slot: 138.9 duizend in het tijdvak van 15:30 uur, de aanloop naar de slotveiling en ruim boven het dieptepunt rond de lunch. Na de bel van 16:00 uur keldert het tempo per minuut in de nabeurshandel.
Intraday relatief volume: correctie voor het tijdstip
Deze correctie wijzigt de noemer: vergelijk het lopende totaal van vandaag met het gemiddelde lopende totaal op hetzelfde tijdstip. Hiervoor moet bekend zijn welk deel van het dagvolume op elk moment van de dag doorgaans is verhandeld. Dit is hier per transactie gemeten aan de hand van de consolidated tape van de laatste twintig volledige sessies van SPY:
| ET checkpoint | gem. % dagvolume voltooid |
|---|---|
| 10:00 | 12 |
| 12:00 | 34.3 |
| 14:00 | 51.1 |
| 15:30 | 64.9 |
| 16:00 | 82.8 |
De exacte SQL achter elk getal
WITH per_min AS (
SELECT toDate(toTimeZone(sip_timestamp, 'America/New_York')) AS et_date,
formatDateTime(toTimeZone(sip_timestamp, 'America/New_York'), '%H:%i') AS et_min,
sum(toFloat64(size)) AS v
FROM global_markets.stocks_trades
WHERE ticker = 'SPY'
AND sip_timestamp >= now() - INTERVAL 45 DAY
AND toDate(toTimeZone(sip_timestamp, 'America/New_York')) < toDate(toTimeZone(now(), 'America/New_York'))
AND NOT hasAny(conditions, [15, 16, 38])
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 opening van de reguliere handel, heeft SPY doorgaans pas 12% van het uiteindelijke dagvolume verwerkt; om 12:00 uur is dit 34.3%, om 14:00 uur 51.1% en om 15:30 uur nog steeds slechts 64.9%. Zelfs bij het sluiten van de beurs om 16:00 uur staat het totaal op 82.8%. Al het overige wordt om of na 16:00 uur gerapporteerd, waarbij het grootste deel in de eerste minuten na de slotbel binnenkomt, wanneer de closing auction en andere einde-dagtransacties op de tape verschijnen; de nabeurs-sessie zelf is aanzienlijk minder liquide. Dit komt overeen met de scherpe daling in de bovenstaande grafiek: het tempo per minuut keldert bij de slotbel, terwijl er nog steeds een aanzienlijk deel van het dagtotaal wordt gerapporteerd. Een tijdgecorrigeerde RVOL voor de ochtend deelt het cumulatieve volume van vandaag door het twintigdaags gemiddelde, vermenigvuldigd met het percentage voor dat tijdstip. Eén kanttekening: dit schema geldt voor SPY; elk aandeel heeft zijn eigen ritme en het onderstaande uitgewerkte voorbeeld heeft betrekking op één specifiek aandeel.
Een uitgewerkt voorbeeld: een sessie met een hoog volume (MU)
Juni 2026 was een drukke maand voor Micron, de diepgaande analyse van MU in juni 2026 doorloopt de volledige tape. Hieronder volgt de sessie met het hoogste volume van die maand, waarbij de RVOL-berekening op beide manieren is uitgevoerd:
| sessiedatum | vol per 10:30 m | gem. vol per 10:30 m | rvol 10:30 gecorrigeerd | rvol 10:30 naïef | sessievolume m | trailing adv m | rvol volledige dag |
|---|---|---|---|---|---|---|---|
| 2026-06-25 | 32.8 | 17.3 | 1.9 | 0.64 | 77.2 | 51 | 1.5 |
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 sessie met het grootste volume voor 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 over de voorgaande twintig sessies, wat neerkomt op een tijdgecorrigeerde RVOL van 1.9. Wanneer men dat ochtendtotaal deelt door het daggemiddelde van 51 miljoen, is de naïeve lezing 0.64: ogenschijnlijk een dag met een ondergemiddeld volume, terwijl de ochtend verliep op bijna twee keer het gebruikelijke tempo. De sessie eindigde op 77.2 miljoen aandelen, een RVOL voor de gehele dag van 1.5.
Dat slotcijfer kan bescheiden lijken in vergelijking met screenshots van aandelen die tien keer het gemiddelde volume behalen; of het werkelijk bescheiden is, is een vraag voor een verdeling, die hierna wordt gemeten.
Wat geldt als een hoog relatief volume?
Op handelsfora circuleren drempelwaarden zoals "RVOL boven twee is hoog." Hier volgt de gemeten versie: de dagelijkse RVOL voor elk in de VS genoteerd aandeel en elke ETF met een gemiddeld dagelijks volume over twintig dagen van meer dan vijf miljoen aandelen (en een volledige historie van twintig voorgaande sessies), ingedeeld in percentielen over de gehele groep voor de meest recent voltooide sessie in onze data. Eén kanttekening bij het label: de screening telt het aantal aandelen, niet de dollarwaarde. Deze groep met een hoog volume varieert dus van mega-caps en ETF's tot goedkope small-caps met een hoge omloopsnelheid; een hoog aandeelvolume is niet hetzelfde als een gemakkelijke verhandelbaarheid.
| percentiel | rvol |
|---|---|
| p10 | 0.1 |
| p25 | 0.77 |
| p50 (median) | 1.05 |
| p75 | 1.38 |
| p90 | 1.81 |
| p99 | 3.99 |
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 op 1.05 keer het eigen gemiddelde over twintig dagen. Negen van de tien namen bleven onder de 1.81, en slechts één op de honderd overschreed de 3.99. Zet de sessie van MU uit de vorige sectie af tegen deze tabel en het ziet er niet langer bescheiden uit; zelfs drukke namen brengen de meeste dagen door nabij hun eigen gemiddelde; veelvouden daarvan zijn zeldzaam.
De onderste staart is eveneens van belang: het tiende percentiel lag op 0.1. Dergelijke lage waarden duiden meestal op een aandeel waarvan het gemiddelde over twintig dagen nog steeds één enorme sessie bevat; na een piek houdt de opgeblazen noemer de RVOL wekenlang laag. Het venster heeft een geheugen, in beide richtingen.
Eén voorbehoud: dit is een dwarsdoorsnede van één enkele sessie, percentielen verschuiven van dag tot dag, en marktomvattende gebeurtenissen (indexherwegingen, optie-expiraties) kunnen de gehele curve omhoog trekken.
Welke aandelen vertoonden ongebruikelijk volume? Het RVOL-klassement
Hetzelfde universum, gerangschikt (de wekelijkse versie vindt u bij aandelen met ongebruikelijk volume deze week): de tien hoogste RVOL-waarden over de volledige handelsdag van de 2026-10-15-sessie onder namen die gemiddeld meer dan vijf miljoen aandelen per dag verhandelen; het overzicht dat een screener zou markeren als ongebruikelijk volume. De screen vereist twintig volledige voorgaande sessies; recente noteringen hebben geen betekenisvol gemiddelde over twintig dagen en zouden het overzicht anders vullen met ruis.
| ticker | sessiedatum | sessievolume m | adv 20d m | rvol |
|---|---|---|---|---|
| CCC | 2026-10-15 | 318 | 9.3 | 34.1 |
| WETO | 2026-10-15 | 111.2 | 6.5 | 17 |
| SDST | 2026-10-15 | 1641.1 | 106.3 | 15.4 |
| DKI | 2026-10-15 | 125.7 | 19.1 | 6.6 |
| WFF | 2026-10-15 | 140.1 | 23.1 | 6.1 |
| ERIC | 2026-10-15 | 39.9 | 8.2 | 4.9 |
| WULF | 2026-10-15 | 105.9 | 26.5 | 4 |
| CRWV | 2026-10-15 | 127.5 | 32.6 | 3.9 |
| HUMA | 2026-10-15 | 20.7 | 5.3 | 3.9 |
| KORU | 2026-10-15 | 77.4 | 21.4 | 3.6 |
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 koploper van het klassement, CCC, noteerde 318 miljoen aandelen tegenover een gemiddelde over twintig dagen van 9.3 miljoen, een RVOL van 34.1. Elke rij overtrof het eigen gemiddelde. Overzichten als deze neigen weg van de bekende mega-caps; het verdubbelen van een reeds enorm gemiddelde vereist een buitengewoon aantal aandelen, terwijl een kleinere naam zijn handelsvolume in één sessie kan vermenigvuldigen.
Datatoelichting: sessieselectie en uitsluitingen
Beide gerangschikte tabellen gebruiken hetzelfde universum en dezelfde sessieregel. Een kandidaat-sessie telt pas als voltooid zodra de tape van SPY voor die datum ten minste zestig procent van het eigen gemiddelde volume over de voorgaande twintig sessies bereikt; de data van de nieuwste dag komt met vertraging binnen en deze controle voorkomt dat een gedeeltelijk geladen dag wordt gelezen als een afgeronde sessie. 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 gemiddelde over twintig dagen geen zinvolle basislijn vormt. De uitsluitingslijst in de SQL wordt bij elke verversing synchroon gehouden met onze controles op symboolidentiteit; elk nieuw gemarkeerd hergebruikt symbool wordt op dezelfde wijze toegevoegd.
Veelgestelde vragen
Wat is een goed RVOL-cijfer?
Er is geen officiële drempelwaarde. Gemeten over Amerikaanse aandelen met een hoog volume tijdens de meest recent afgesloten sessie in onze data, noteerde de mediaan op 1.05 keer het gemiddelde over twintig dagen, het negentigste percentiel op 1.81 en het negenennegentigste op 3.99.
Wat betekent een RVOL van 2?
Het aandeel is twee keer het gemiddelde volume verhandeld voor het gemeten venster, meestal de afgelopen twintig sessies. Het tijdstip is van belang: een 2 ten opzichte van het gemiddelde op hetzelfde tijdstip is een sterke meting halverwege de sessie; een 2 bij het slot duidt op een dag met een dubbel zo hoog tempo als normaal.
Hoe berekent u het relatieve volume intraday?
Deel het cumulatieve volume van vandaag door het gemiddelde cumulatieve volume op hetzelfde tijdstip over uw terugkijkperiode. Het delen van een totaal van halverwege de ochtend door een daggemiddelde geeft een vertekend beeld; om 10:00 uur 's ochtends heeft SPY doorgaans slechts 12% van het uiteindelijke dagvolume behaald.
Bevat het relatieve volume handel buiten de reguliere uren?
Conventies per platform verschillen; deze pagina telt de volledige kalenderdag in Eastern Time, inclusief de uitgebreide uren. Voor SPY is de bijdrage van de premarket zichtbaar klein, met een mediaan van 3.6 duizend aandelen per minuut in het blok van 9:00 uur, tegenover 95.5 duizend direct na de opening.
Is een hoog relatief volume bullish of bearish?
Geen van beide. RVOL meet de participatie, niet de richting; een zware tape is zowel op de beste als op de slechtste dagen van een aandeel zichtbaar. Sessies met een hoge RVOL vallen historisch gezien samen met kwartaalcijfers, indexwijzigingen en belangrijk nieuws; het cijfer geeft aan dat de markt aanwezig is, niet in welke richting deze beweegt.
Elk bovenstaand paneel bevat de exacte SQL-code die het heeft gegenereerd. Open er een, voer uw eigen ticker in en meet de RVOL voor de namen die u daadwerkelijk verhandelt op de Strasmore-terminal.