Czym jest RVOL i jak interpretować wolumen
Dowiedz się, czym jest RVOL i jak porównywać bieżący wolumen do średniej z 20 dni. Poznaj znaczenie wskaźnika dla analizy aktywności rynkowej akcji.
Relatywny wolumen (RVOL) mierzy intensywność obrotu akcjami w porównaniu z ich niedawną normą: jest to wolumen sesyjny podzielony przez średni dzienny wolumen danej spółki, zazwyczaj liczony z ostatnich 20 sesji. RVOL na poziomie 1 oznacza dzień o przeciętnym natężeniu obrotu, 2 oznacza dwukrotny wzrost liczby wymienianych akcji, natomiast 0.5 wskazuje na sesję o połowę wolniejszą od standardowej. Wszystkie dane na tej stronie pochodzą z minutowych danych rynkowych z USA, a do każdego panelu dołączone jest dokładne zapytanie.
Czym jest wolumen relatywny? Prosta definicja
Surowy wolumen sam w sobie niewiele znaczy: pięć milionów akcji to dzień o bardzo niskiej aktywności dla spółki typu mega-cap, natomiast dla spółki typu small-cap jest to wydarzenie zdarzające się raz w roku. Wolumen relatywny wprost umożliwia porównanie bieżącej aktywności do typowego poziomu danej akcji:
RVOL = wolumen dzienny ÷ średni dzienny wolumen akcji (zazwyczaj z ostatnich 20 sesji)
Przykładowy scenariusz: akcja, której średni dzienny wolumen wynosi 10 milionów akcji, a na zamknięciu osiągnęła poziom 25 milionów, uzyskała RVOL na poziomie 2,5. (Transakcja odnotowana w systemie to transakcja zaraportowana w skonsolidowanym rejestrze — rynkowym zapisie egzekucji, a „rejestr” to skrót myślowy stosowany przez traderów). Okres 20 sesji jest standardem — platformy wykorzystują również 10, 30 lub 50 dni; odpowiada to w przybliżeniu jednemu miesiącowi kalendarzowemu handlu. Okno czasowe podlega również specyfice kalendarza giełdowego: skrócony dzień handlowy przypadający w święto dodaje do średniej jedynie ułamek wolumenu z normalnej sesji. Szczegółowe informacje na temat dni wolnych od handlu i wczesnych zamknięć rynków znajdują się w odpowiednim zestawieniu.
Dlaczego traderzy monitorują relatywny wolumen?
RVOL jest wskaźnikiem zaangażowania, a nie kierunku. Dni z wysokim RVOL koncentrują się wokół konkretnych zdarzeń — wyników finansowych, włączeń do indeksów lub nagłówków informacyjnych. Ruch ceny przy wysokim wolumenie oznacza wsparcie dużej grupy uczestników; ten sam ruch przy RVOL wynoszącym 0,3 może być wynikiem zaledwie kilku zleceń. Aktywność koreluje ze zbywalnością: wśród akcji najbardziej mało płynne podmioty generują najszersze spready bid-ask, wystawiane przez market makerów wyceniających obie strony rynku przez cały dzień. W przypadku pojedynczej akcji wyceny mają tendencję do bycia szerszymi podczas najspokojniejszych sesji niż podczas najbardziej intensywnych. (Wolumen stanowi również podstawę dla VWAP, czyli średniej ceny ważonej wolumenem — innego kluczowego punktu odniesienia opartego na wolumenie.)
Jak obliczać relatywny wolumen — i pułapka związana z porą dnia
Obliczenie dla pełnego dnia sesji to jedno dzielenie: całkowity wolumen sesji ÷ średni dzienny wolumen z 20 sesji. Wynik jest wiarygodny dopiero po zamknięciu rynku. Pułapką jest wykonywanie obliczeń w trakcie sesji: o godzinie 10:30 bieżący suma jest naturalnie ułamkiem jakiejkolwiek pełnodniowej wartości, więc nawet gwałtowny poranek może wydawać się mało aktywny. Wolumen intraday wykazuje kształt litery U w ciągu doby, dlatego każdy wskaźnik RVOL musi uwzględniać ten schemat.
Poniżej przedstawiono kształt wykresu na przykładzie SPY, czyli ETF na S&P 500: mediana liczby akcji obracanych w ciągu minuty w każdym 30-minutowym przedziale czasowym w ciągu ostatnich 30 pełnych sesji, wliczając godziny pozagiełdowe (4:00 do 20:00 czasu Eastern Time).
Dokładny kod SQL dla każdej liczby
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_timePrzedział 9:30 — pierwsza pół godziny handlu regulaminowego — osiągnął medianę na poziomie 136 tysiąca akcji na minutę, w porównaniu do 3.5 tysięcy w przedziale premarket o 9:00 bezpośrednio przed nim. Tempo spada do 49.5 tysięcy w przedziale 12:30, a następnie rośnie przed zamknięciem: 168.3 tysięcy w przedziale 15:30, czyli w okresie poprzedzającym aukcję zamknięcia, co stanowi wynik znacznie wyższy niż popołudniowe minimum. Po sygnale o godzinie 16:00 tempo na minutę gwałtownie spada w handlu po sesji.
Relatywny wolumen intraday: korekta o porę dnia
Korekta zmienia mianownik: bieżący suma porównywana jest do średniej sumy z tej samej godziny. Wymaga to znajomości udziału wolumenu z normalnego dnia, który został już zrealizowany w danym punkcie czasu — w tym przypadku zmierzonego na podstawie ostatnich 20 sesji SPY:
Dokładny kod SQL dla każdej liczby
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 checkpointO godzinie 10:00, pół godziny po rozpoczęciu regularnych handlowych, SPY wykazuje zazwyczaj tylko 12.4% swojego docelowego dziennego wolumenu; o południu 34.8%, o 14:00 51.1%, a o 15:30 wciąż tylko 67.3%. Nawet o 16:00 w momencie zamknięcia sesji suma wynosi 85.7% — wszystkie pozostałe dane są raportowane o 16:00 lub później, a większość z nich pojawia się w pierwszych minutach po zamknięciu, gdy do rejestru trafiają wyniki aukcji zamknięcia i inne transakcje kończące dzień; sama sesja po sesji (after-hours) charakteryzuje się znacznie mniejszą płynnością. Jest to zgodne ze spadkiem widocznym na powyższym wykresie: tempo minutowe gwałtownie spada w momencie zamknięcia, mimo że znaczna część całkowitego dziennego wolumenu jest wciąż raportowana. Skorygowany o czas poranny RVOL dzieli dzisiejszy skumulowany wolumen przez średnią z 20 dni pomnożoną przez udział w danym punkcie kontrolnym. Jedna uwaga: powyższy harmonogram dotyczy SPY — każda akcja posiada własny cykl czasowy, a poniższy przykład dotyczy jednej spółki.
Przykład praktyczny: sesja o bardzo wysokim wolumenie (MU)
Czerwiec 2026 roku był intensywnym miesiącem dla Micron — szczegółowa analiza MU za czerwiec 2026 przedstawia pełny zapis transakcji. Poniżej znajduje się sesja o największym wolumenie w tym miesiącu wraz z obliczeniami RVOL w obu wariantach:
Dokładny kod SQL dla każdej liczby
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_dayNajwiększa sesja MU w tym miesiącu miała miejsce 2026-06-25. Do godziny 10:30 tego dnia obrócono 32.8 milionów akcji, przy czym średnia dla tego samego momentu w ciągu poprzednich 20 sesji wynosiła 17.3 milionów — skorygowany czasowo RVOL wyniósł 1.9. Po podzieleniu porannego wyniku przez średnią dzienną wynoszącą 51 milionów, uproszczony odczyt to 0.64: dzień o wolumenie poniżej średniej, mimo że poranek przebiegał niemal dwukrotnie szybciej niż zwykle. Sesja zakończyła się wolumenem 77.2 milionów akcji, co daje pełnodzienny RVOL na poziomie 1.5.
W porównaniu do zrzutów ekranu z walorami, których wolumen wzrósł dziesięciokrotnie względem średniej, ta wartość końcowa może wydawać się skromna — to, czy faktycznie jest ona niska, zostanie zweryfikowane w analizie rozkładu.
Co oznacza wysoki relatywny wolumen?
Na forach giełdowych często pojawiają się progi typu „RVOL powyżej 2 jest wysoki”. Oto obiektywna definicja: pełnodniowy RVOL dla każdej spółki i ETF notowanej w USA, których średni dzienny wolumen z 20 dni przekracza 5 milionów akcji (przy pełnej historii z 20 poprzednich sesji), obliczony jako percentyl w całej grupie dla ostatniej zakończonej sesji w naszych danych. Uwaga dotycząca klasyfikacji: skaner liczy liczbę akcji, a nie wartość w USD, zatem ta grupa o wysokim wolumenie obejmuje zarówno spółki mega-cap i ETF, jak i tanie, charakteryzujące się dużą rotacją spółki small-cap — wysoki wolumen akcji nie jest tożsamy z wysoką płynnością.
Dokładny kod SQL dla każdej liczby
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 percentileMediana w tej grupie o wysokim wolumenie wynosiła 0.73 średniej z 20 dni. Dziewięć na dziesięć podmiotów uzyskało wynik poniżej 1.37, a tylko jeden na sto przekroczył 4.71. Porównanie sesji MU z poprzedniej sekcji z tą tabelą pokazuje, że wynik nie jest skromny — nawet aktywne spółki spędzają większość dni blisko własnej średniej; wielokrotności tej średniej są rzadkością.
Istotny jest również dolny ogon rozkładu: 10. percentyl wynosił 0.11. Tak niskie odczyty zazwyczaj wskazują na spółkę, której średnia z 20 dni jest wciąż zaburzona przez jedną, bardzo dużą sesję — po gwałtownym wzroście powiększony mianownik obniża RVOL na wiele tygodni. Okno czasowe ma pamięć w obu kierunkach.
Jedna uwaga: jest to przekrój z pojedynczej sesji — percentyle zmieniają się z dnia na dzień, a dni zdarzeń rynkowych (rebalansowanie indeksów, wygasanie opcji) mogą podnieść całą krzywą.
Które akcje odnotowały nietypowy wolumen? Ranking RVOL
Ten sam koszyk akcji, uszeregowany według wyników (wersja tygodniowa znajduje się pod adresem akcje o nietypowym wolumenie w tym tygodniu): dziesięć najwyższych odczytów RVOL dla pełnych sesji z dnia 2026-07-21 spośród podmiotów o średnim dziennym obrocie powyżej 5 milionów akcji — zestawienie obejmuje spółki, które skaner zakwalifikowałby jako posiadające nietypowy wolumen. Skrypt wymaga pełnych 20 poprzednich sesji — nowo wprowadzone spółki nie posiadają znaczącej średniej z 20 dni, co mogłoby spowodować pojawienie się błędnych danych w zestawieniu.
Dokładny kod SQL dla każdej liczby
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 10Na szczycie rankingu, LBGJ odnotował 169.2 milionów akcji przy średniej z 20 dni wynoszącej 5.1 milionów — co daje RVOL na poziomie 33.3. Każdy podmiot przekroczył własną średnią. Takie zestawienia wykazują mniejszą obecność największych spółek typu mega-cap — podwojenie już bardzo wysokiej średniej wymaga ogromnej liczby akcji, podczasnie mniejsza spółka może wielokrotnie zwiększyć swój obrót w ciągu jednej sesji.
Uwagi do danych: wybór sesji i wykluczenia
Oba rankingi wykorzystują ten sam koszyk akcji oraz te same zasady wyboru sesji. Sesja jest uznawana za pełną dopiero wtedy, gdy obrót SPY dla danej daty osiągnie co najmniej 60% średniego obrotu SPY z poprzednich 20 sesji — dane z najnowszego dnia pojawiają się z opóźnieniem, a ta weryfikacja zapobiega błędnemu uznawaniu częściowo załadowanego dnia za zakończoną sesję. Oba zestawienia wykluczają również jeden symbol, który giełdy niedawno przypisały do nowej listy notowań: kanały danych dostawców zawierają historię dwóch różnych spółek pod tym samym tickerem, przez co jego 20-dniowa średnia nie stanowi wiarygodnej podstawy. Lista wykluczeń w bazie SQL jest synchronizowana z naszymi testami tożsamości symboli przy każdym odświeżeniu; każdy nowo wykryty symbol o zmienionej tożsamości jest dodawany w ten sam sposób.
FAQ
Jaka wartość RVOL jest dobra?
Nie istnieje oficjalny próg. Na podstawie danych dla spółek o wysokim wolumenie z USA z ostatniej pełnej sesji, mediana wynosiła 0.73 średniej z 20 dni, dziewięćdziesiąty percentyl wynosił 1.37, a dziewięćdziesiąty dziewiąty wynosił 4.71.
Co oznacza RVOL na poziomie 2?
Akcja była notowana z dwukrotnie większym wolumenem niż średnia dla mierzonego okresu, zazwyczaj dla ostatnich 20 sesji. Kluczowy jest czas: wartość 2 w porównaniu do średniej z tej samej godziny w ciągu dnia oznacza silny odczyt w trakcie sesji; wartość 2 na zamknięciu oznacza dzień o dwukrotnie większym tempie niż zwykle.
Jak oblicza się relatywny wolumen w trakcie sesji?
Należy podzielić skumulowany wolumen z dzisiejszego dnia przez średni skumulowany wolumen o tej samej godzinie w wybranym oknie czasowym. Dzielenie sumy z połowy poranka przez średnią z całego dnia znacząco zaniża wynik — o godzinie 10:00 SPY ma zazwyczaj zrealizowane tylko 12.4% docelowego dziennego wolumenu.
Czy relatywny wolumen uwzględnia handel przedsesyjny i pozasesyjny?
Standardy platform się różnią; ta strona uwzględnia każdy słupek minutowy w kalendarzowym dniu czasu Eastern Time, w tym godziny rozszerzone. W przypadku SPY udział handlu przedsesyjnego jest wyraźnie mały — mediana wynosi 3.5 tysiąca akcji na minutę w przedziale 9:00 w porównaniu do 136 tysięcy tuż po otwarciu.
Czy wysoki relatywny wolumen jest byczy czy niedźwiedzi?
Żaden z nich. RVOL mierzy zaangażowanie, a nie kierunek — wysoka aktywność występuje zarówno w najlepsze, jak i najgorsze dni spółki. Sesje z wysokim RVOL historycznie pokrywały się z publikacjami wyników, zmianami w indeksach oraz ważnymi wiadomościami; wskaźnik ten informuje, że na rynku pojawił się duży kapitał, a nie, w którą stronę zmierza trend.
Każdy powyższy panel zawiera dokładne zapytanie SQL, które go wygenerowało — otwórz jedno z nich, podstaw własny ticker i zmierz RVOL dla spółek, którymi faktycznie handlujesz na terminalu Strasmore.