Що таке RVOL та як його читати
RVOL це відношення поточного обсягу акцій до середнього показника за двадцять днів. Дізнайтеся, як інтерпретувати значення вище одиниці та аналізувати RVOL.
Відносний обсяг (RVOL) вимірює інтенсивність торгів акцією порівняно з її власним нещодавнім нормальним показником: обсяг акцій за сесію, поділений на середній щоденний обсяг акції, який зазвичай розраховується за останні двадцять сесій. RVOL рівний одному означає звичайний день, два означає, що змінилося вдвічі більше акцій, ніж зазвичай, а нуль цілих п'ять десятих вказує на сесію, що проходить у двічі повільнішому темпі. Кожен показник на цій сторінці виміряно на основі хвилинних даних ринку США, при цьому до кожної панелі додано точний запит.
Що таке відносний обсяг? Просте визначення
Абсолютний обсяг сам по собі мало про що говорить. П'ять мільйонів акцій — це дуже тихий день для компанії з надвеликою капіталізацією та подія, що трапляється раз на рік, для компанії з малою капіталізацією. Відносний обсяг робить порівняння з нормальними показниками акції явним:
RVOL = обсяг за день ÷ середній щоденний обсяг акції (зазвичай за останні 20 сесій)
Гіпотетичний приклад: акція має середній обсяг 10 мільйонів акцій на день і показує 25 мільйонів на момент закриття. У такому разі RVOL становитиме 2,5. (Принт — це угода, зафіксована у консолідованій стрічці, тобто загальноринковому реєстрі виконаних операцій. «Стрічка» — це трейдерський жаргон для позначення цього реєстру). Період огляду у 20 сесій є загальноприйнятою практикою. Платформи також використовують 10, 30 або 50 днів. Це приблизно один календарний місяць торгів. Це вікно також враховує особливості біржового календаря. Скорочений святковий день додає до середнього значення лише частину обсягу звичайної сесії. ринкові вихідні та раннє закриття показують, коли вони припадають.
Навіщо трейдери відстежують відносний обсяг?
RVOL є показником рівня участі, а не показником напрямку. Дні з високим RVOL зазвичай припадають на визначені події — звіти про прибутки, включення до індексів або головні новини. Рух ціни на великих обсягах свідчить про підтримку з боку натовпу; той самий рух при RVOL 0,3 може бути результатом лише кількох ордерів. Активність також пов'язана з ліквідністю: серед акцій найменш торговані активи мають найширші спреди між ціною купівлі та продажу, які встановлюють маркет-мейкери, що котують обидві сторони протягом дня. Для будь-якої окремої акції котирування зазвичай ширші в найспокійніші сесії, ніж у найактивніші. (Обсяг також є основою для VWAP, середньозваженої за обсягом ціни — іншого важливого орієнтира на основі обсягів.)
Як розрахувати відносний обсяг — та пастка часу доби
Розрахунок за повний день складається з одного ділення: загальний обсяг сесії ÷ середній щоденний обсяг за двадцять сесій. Такий підхід є коректним лише після закриття ринку. Пастка полягає в розрахунку посеред сесії: о 10:30 ранку поточний підсумок природно становить лише частину будь-якого показника за повний день. Через це навіть стрімкий ранковий ріст виглядає низьким. Внутрішньоденний обсяг протягом доби має U-подібну форму, і будь-який внутрішньоденний RVOL має базуватися на цій моделі.
Нижче наведено цю модель, виміряну на SPY, ETF на S&P 500: медіана обсягу акцій, що торгувалися за хвилину в кожному тридцятихвилинному інтервалі за останні тридцять завершених сесій, включаючи подовжені години (з 4:00 до 20:00 за східним часом).
Точний 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 — перші пів години регулярних торгів — медіана становила 136 тисяч акцій за хвилину, проти 3.5 тисяч в інтервалі премаркету о 9:00 безпосередньо перед цим. Темп знижується до 49.5 тисяч в інтервалі 12:30, а потім зростає до закриття: 168.3 тисяч в інтервалі 3:30, під час підготовки до закриваючого аукціону, що значно перевищує обсяги в обідній період. Після дзвона о 16:00 хвилинний темп різко падає під час післябіржової торгівлі.
Внутрішньоденний відносний обсяг: коригування за часом доби
Це виправлення змінює знаменник: поточний підсумок за сьогодні порівнюється із середнім поточним підсумком на той самий час. Для цього необхідно знати частку обсягу звичайного торгового дня, яка вже накопичилася до кожного моменту часу — тут ці дані виміряні на основі останніх двадцяти завершених сесій SPY:
Точний 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:00, через пів години після початку регулярних торгів, SPY зазвичай має лише 12.4% від свого підсумкового денного обсягу; до полудня — 34.8%, до 14:00 — 51.1%, до 15:30 — все ще лише 67.3%. Навіть під час закриття ринку о 16:00 загальний обсяг становить 85.7% — решта даних відображається о 16:00 або пізніше. Більшість цих даних надходить у перші хвилини після закриття, коли реєструються closing auction та інші угоди наприкінці дня; сама післябіржова сесія значно менш активна. Це узгоджується зі стрімким падінням на графіку вище: хвилинний темп обвалюється під час закриття, навіть якщо значна частина денного підсумку все ще відображається. Ранковий RVOL з коригуванням за часом ділить накопичений обсяг за сьогодні на середній показник за двадцять днів, помножений на частку контрольної точки. Одне застереження: цей графік стосується SPY — кожна акція має свій власний часовий цикл, і наведений нижче приклад розрахований для одного конкретного інструмента.
Практичний приклад: сесія з великим обсягом торгів (MU)
Червень 2026 року був активним місяцем для Micron — детальний аналіз MU за червень 2026 року містить повний огляд стрічки. Нижче наведено сесію з найбільшим обсягом торгів за цей місяць із розрахунком 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_dayНайбільша сесія MU за місяць припала на 2026-06-25. До 10:30 того дня було торгнуто 32.8 мільйонами акцій, тоді як у середньому за той самий час протягом попередніх двадцяти сесій обсяг становив 17.3 мільйона — adjusted RVOL за часом склав 1.9. Якщо замість цього розділити ранковий підсумок на середньодобовий показник у 51 мільйона, наївне значення становитиме 0.64: очевидно, день нижче середнього, хоча ранок проходив майже вдвічі швидше зазвичай. Сесія завершилася обсягом 77.2 мільйона акцій, що дає цілодобовий RVOL на рівні 1.5.
Цей підсумковий показник може здатися скромним порівняно зі скриншотами активів, обсяги яких перевищують середні в десять разів. Питання про те, чи є він дійсно скромним, вирішується за допомогою розподілу, який розглянуто далі.
Що вважається високим відносним обсягом?
На торгових форумах часто зустрічаються такі пороги, як «RVOL вище двох — це високий показник». Ось виміряна версія: RVOL за повний день для кожної акції та 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Медіанний актив у цій групі з високим обсягом торгувався в 0.73 разів більше за свій середній показник за двадцять днів. Дев'ять з десяти активів мали показник нижче 1.37, і лише один зі ста перевищив 4.71. Якщо порівняти сесію MU з попереднього розділу з цією таблицею, вона перестане виглядати скромною — навіть активні назви більшість днів проводять біля свого середнього значення; кратні перевищення трапляються рідко.
Нижній хвіст розподілу також має значення: десятий процентиль становив 0.11. Настільки низькі показники зазвичай характеризують акцію, чий середній показник за двадцять днів все ще містить одну надзвичайно об’ємну сесію — після стрибка роздутий знаменник стримує RVOL протягом тижнів. Вікно має пам'ять в обох напрямках.
Одне застереження: це поперечний зріз однієї сесії — процентилі змінюються щодня, а дні загальноринкових подій (ребалансування індексів, експірація опціонів) можуть підняти всю криву.
Які акції мали незвичайний обсяг? Рейтинг RVOL
Той самий перелік активів, відсортований за рангом (постійна щотижнева версія доступна за посиланням акції з незвичайним обсягом цього тижня): десять найвищих показників RVOL за повний день сесії 2026-07-21 серед активів із середнім обсягом понад 5 мільйонів акцій на день. Це список, який скринер позначив би як незвичайний обсяг. Скринер вимагає наявності повних 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, зафіксував обсяг 169.2 мільйонів акцій при 20-денному середньому показнику 5.1 мільйонів — RVOL склав 33.3. Кожен рядок перевищив свій середній показник. Такі рейтинги зазвичай не включають відомі компанії з величезною капіталізацією. Подвоєння і так величезного середнього показника потребує надзвичайного обсягу акцій, тоді як менш відома компанія може значно збільшити свої обсяги за одну сесію.
Примітки до даних: вибір сесій та виключення
Обидві рейтингові таблиці використовують один і той самий перелік активів та одне й те саме правило вибору сесій. Кандидатна сесія вважається завершеною лише тоді, коли обсяг торгів SPY за цю дату становить щонайменше 60% від середнього обсягу SPY за попередні 20 сесій. Дані за останній день надходять із затримкою, і ця перевірка запобігає сприйняттю частково завантаженого дня як завершеної сесії. Обидві таблиці також виключають один символ, який біржі нещодавно призначили новому лістингу. Потоки даних від постачальників містять історію двох різних компаній під цим тікером, тому його 20-деннє середнє не є значущим базовим показником. Список виключень у SQL синхронізується з нашими перевірками ідентичності символів під час кожного оновлення; будь-який новий помічений повторно використаний символ додається аналогічним чином.
FAQ
ЯкимL1% яке значення RVOL вважається хорошим?
ОC2% Офіційного порогуC2% не існує. Згідно з нашими даними заSS0% за останню завершенLSC2% сесію для високоліквідних акцій США, меLSL1% медіанне значення становило 0.73 від середнього за 20 днів, 90-й перцентиль — 1.37, а 99-й — 4.71.
Що означає RVOL, що дорівнює 2?
Це означає, що обсяг торгів акцією у два рази перевищує середній обсяг за обраний період, зазвичай за останні 20 сесій. Час має значення: показник 2 відносно середнього значення на той самий час доби є сильним показником у середині сесії; показник 2 на момент закриття означає, що день пройшов із подвоєним відносно норми темпом.
Як розрахувати відносний обсяг протягом дня?
Поділіть накопиLSS0% сьогоднішній накопичений обсяг на середній накопичений обсяг на той самий час протягом обраS0% обраного періоду. Якщо поділити підсумок за середину ранку на середній денний обсяг,SS0%, результат буде значно заниженим — до 10:00 ранку SPY зазвичай здійснює лише 12.4% від свого підL1% підсумкового денного обсягу.
Чи включає відносний обсяг торгівлю в премаркеті та післязакриття?
Конвенції платформ відріH2%різняються; на цій сторінціLCLHSC2% враховується кожен хвилинний бар у календарному дні за східним часом, включаючи подовжені години торгів. Для SPY внесок премаркету помітно малий — медіана становить 3.5 тисяч акцій за хвилину в інтервалі о 9:00 проти 136 тисяч одразу після відкриття.
Високий відносний обсяг є бичачим чи ведмежим сигналом?
Жодне з двох. RVOL вимірює рівень участі, а не напрямок — велика активність спостерігається як у найкращі, так і в найгірші дні акції. Сесії з високим RVOL історично збігалися з публікацією звітів, змінами в індексах та важливими новинами; цей показник вказує на те, що ринок активізувався, але не вказує на напрямок руху.
Кожна панель вище містить точний SQL-запит, за допомогою якого вона була створена — відкрийте її, підставте свій тікер і виміряйте RVOL для інструментів, якими ви торгуєте в терміналі Strasmore.