что такое RVOL и как читать относительный объем
Узнайте, что такое RVOL и как использовать относительный объем для анализа активности акций. Разбираем формулу расчета и значение показателей выше единицы.
Относительный объем (RVOL) показывает интенсивность торгов акциями по сравнению с их типичными показателями. Он рассчитывается как объем торгов за текущую сессию, деленный на средний дневной объем акций, который обычно берется за последние 20 сессий. Значение RVOL равное 1 означает обычный торговый день. Значение 2 означает, что объем торгов в два раза превышает средний показатель. Значение 0.5 указывает на снижение активности в два раза. Все данные на этой странице рассчитаны на основе минутных рыночных данных США; к каждой панели приложен соответствующий запрос.
Что такое относительный объем? Простое определение
Сама по себе величина объема мало о чем говорит: пять миллионов акций — это спокойный день для компании с огромной капитализацией, но редкое событие для компании с малой капитализацией. Относительный объем (RVOL) наглядно сравнивает текущие показатели с типичными значениями для данной акции:
RVOL = объем за день ÷ средний дневной объем акции (обычно за последние 20 сессий)
Гипотетический пример: если акция торгуется в среднем 10 миллионов акций в день, а к закрытию объем составил 25 миллионов, то показатель RVOL равен 2.5. (Под «печатью» подразумевается сделка, зафиксированная в консолидированной ленте — общерыночном реестре исполненных ордеров; термин «лента» используется трейдерами для обозначения этого реестра). Использование 20-сессионного периода — это общепринятая практика; платформы также могут использовать периоды в 10, 30 или 50 дней; это примерно один календарный месяц торгов. Данное временное окно также зависит от специфики биржевого календаря: сокращенный торговый день в праздничный день добавит к среднему значению лишь малую часть объема обычной сессии. Список рыночных праздников и ранних закрытий содержит информацию об этих датах.
Почему трейдеры следят за относительным объемом?
RVOL — это показатель участия участников рынка, а не индикатор направления движения цены. Дни с высоким RVOL обычно приурочены к конкретным событиям: отчетности, включению акций в индексы или важным новостям. Ценовое движение при больших объемах означает поддержку со стороны широкого круга участников; то же самое движение при RVOL 0.3 может быть результатом всего нескольких сделок. Активность также связана с ликвидностью: среди акций наиболее низколиквидные инструменты имеют самые широкие бид-аск спреды, которые устанавливают маркетмейкеры, котирующие обе стороны сделки в течение всего дня. Для любой отдельной акции спреды, как правило, шире в периоды низкой активности, чем в периоды высокой. (Объем также лежит в основе VWAP, средневзвешенной по объему цены — еще одного важного ориентира, основанного на объеме.)
Как рассчитать относительный объем и ловушка временного интервала
Расчет за полный торговый день выполняется одним действием: общий объем сессии делится на средний дневной объем за 20 сессий. Этот показатель становится достоверным только после закрытия рынка. Ошибка заключается в расчете во время торговой сессии: в 10:30 текущий объем закономерно составляет лишь часть от итогового дневного показателя, поэтому даже высокая утренняя активность может выглядеть слабой. Внутридневной объем имеет U-образную форму в течение дня, и любой показатель RVOL должен учитывать эту закономерность.
Ниже представлена график на примере SPY (ETF на индекс S&P 500): медианное количество акций, торгуемых в минуту в каждом 30-минутном интервале за последние 30 завершенных торговых сессий, включая внебиржевые часы (с 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 тысяч акций в минуту, тогда как в предшествующем интервале премаркета в 9:00 он составлял 3.5 тысяч. К 12:30 активность снижается до 49.5 тысяч в минуту, а затем растет к закрытию: 168.3 тысяч в интервале 15: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 или позже. Большая часть этих данных фиксируется в первые минуты после закрытия, когда в ленте появляются результаты аукциона и другие сделки в конце дня; сама внебиржевая сессия характеризуется гораздо меньшей активностью. Это объясняет резкий спад на графике выше: минутный темп падает в момент закрытия, хотя значительная часть дневного объема все еще фиксируется. Внутридневной RVOL с поправкой на время рассчитывается путем деления текущего кумулятивного объема на среднее значение за 20 дней, умноженное на долю объема для данного контрольного момента. Важное замечание: данный график относится к 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 млн акций за то же время в течение предыдущих 20 сессий — скорректированный по времени RVOL составил 1.9. Если разделить утренний объем на средний показатель за полный день в 51 млн акций, то получится наивное значение 0.64: на первый взгляд, день был ниже среднего, несмотря на то что утренние торги шли почти в два раза быстрее обычного. Сессия завершилась объемом в 77.2 млн акций, что соответствует RVOL за полный день на уровне 1.5.
Этот показатель закрытия может показаться скромным на фоне скриншотов акций, объем торгов которыми в десять раз превышает средний. Является ли он действительно скромным, можно определить с помощью распределения, которое будет рассмотрено далее.
Что считается высоким относительным объемом (RVOL)?
На торговых форумах часто называют порогом «RVOL выше 2». Вот точное определение: это показатель RVOL за полный торговый день для всех акций и ETF, торгующихся на американских биржах, у которых средний дневной объем за 20 дней превышает 5 миллионов акций (при наличии истории за полные 20 предыдущих сессий). Значение рассчитывается как процентиль по всей группе за последнюю завершенную торговую сессию в наших данных. Важное примечание: фильтр учитывает количество акций, а не объем в долларах. Поэтому в группу высокого объема входят как мега-капитализация и 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 от среднего объема за 20 дней. Девять из десяти инструментов показали результат ниже 1.37, и только один из ста превысил 4.71. Если сравнить показатели MU из предыдущего раздела с этой таблицей, они перестанут казаться скромными — даже активные акции большую часть дней торгуются около своего среднего значения; кратные значения встречаются редко.
Нижняя граница также имеет значение: 10-й процентиль составил 0.11. Столь низкие показатели обычно характерны для акций, чей 20-дневный средний объем все еще включает одну аномально высокую сессию — после резкого скачка завышенный знаменатель снижает 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% от его собственного среднего объема за предыдущие 20 сессий. Данные за последний день поступают с задержкой, и эта проверка предотвращает попадание частично загруженного дня в качестве завершенной сессии. Обе таблицы также исключают один тикер, который биржи недавно переназначили новому листингу: в потоках данных разных поставщиков история двух разных компаний может быть записана под одним тикером, поэтому его 20-дневное среднее значение не является достоверной базовой величиной. Список исключений в SQL синхронизируется с нашими проверками идентификаторов символов при каждом обновлении; любой новый переназначенный символ добавляется таким же образом.
FAQ
Какое значение RVOL считается хорошим?
Официального порога не существует. Согласно нашим данным по высоколиквидным акциям США за последнюю завершенную сессию, медианное значение составило 0.73 от среднего показателя за 20 дней. 90-й процентиль составил 1.37, а 99-й — 4.71.
Что означает RVOL, равный 2?
Объем торгов акцией в два раза превысил средний объем за выбранный период, обычно за последние 20 сессий. Время имеет значение: значение 2 относительно среднего показателя для этого же времени суток является сильным индикатором в середине сессии; значение 2 на закрытии означает, что торговый день прошел в два раза активнее обычного.
Как рассчитывается относительный объем внутри дня?
Разделите текущий совокупный объем на средний совокупный объем в то же время суток за выбранный период. Деление утреннего объема на средний объем за полный день приводит к серьезному занижению показателя — к 10:00 утра SPY обычно выполняет только 12.4% от своего итогового дневного объема.
Включает ли относительный объем торги на премаркете и после закрытия?
Правила платформ различаются; на этой странице учитывается каждая минутная свеча в течение календарного дня по восточному времени, включая расширенные часы торгов. Для SPY вклад премаркета заметно мал: медиана составляет 3.5 тысяч акций в минуту в интервале 9:00 против 136 тысяч сразу после открытия.
Высокий относительный объем — это бычий или медвежий сигнал?
Ни то, ни другое. RVOL измеряет уровень участия участников рынка, а не направление движения — высокая активность наблюдается как в лучшие, так и в худшие дни торгов. Исторически сессии с высоким RVOL совпадали с публикацией отчетности, изменениями в индексах и важными новостями; этот показатель говорит о том, что на рынке появилось много участников, но не указывает на их предпочтения.
Каждый график выше содержит точный SQL-запрос, который его сформировал — откройте его, подставьте свой тикер и измерьте RVOL для активов, которыми вы торгуете на терминале Strasmore.