Strasmore Research
Обзор рынка Matt ConnorАвтор: Matt Connor · Обновлено 2026-09-05 · data as of September 5, 2026 · refreshed weekly

Необычная активность на рынке опционов за последнюю сессию

Анализ аномальных объемов торгов на рынке опционов США. Узнайте, какие активы превысили средние показатели за двадцать сессий и как распределился спрос между колл и пут опционами.

Sep 3
Необычная активность на рынке опционов означает, что по базовому активу за сессию было заключено значительно больше контрактов, чем обычно. В этой таблице представлены данные за последнюю завершенную торговую сессию: общее количество проторгованных контрактов по отношению к среднему значению за предыдущие двадцать сессий. Лента опционных сделок обновляется с задержкой относительно ленты акций, поэтому указанная здесь сессия является последней полной сессией в наших данных, а не текущей.

Перед изучением таблицы важно прояснить один момент: это фильтр по объему торгов. Большинство публикаций об аномальной активности сравнивают дневной объем с открытым интересом — количеством контрактов, остающихся в силе после закрытия торгов. Наши данные содержат информацию о сделках, а не о позициях, и поле открытого интереса в них отсутствует. Каждый коэффициент ниже сравнивает объем торгов по базовому активу с его собственной историей объемов. В статье Объем опционов против открытого интереса подробно разбирается, на какие вопросы отвечает каждый из этих показателей.

Нетипичная активность на рынке опционов: итоги последней торговой сессии

ЗапросНеобычная активность по опционам: последняя торговая сессия в сравнении со средним значением за 20 сессий
ТикерОтношение объемаОбъем сессии (тыс.)Базовый объем (тыс.)Объем пред. максимума (тыс.)Метка сессииID сессииКол-во базовых сессий
DPRO27.9204.97.496.4Sep 32026090320
IOT9.145.9516.6Sep 32026090320
ZS7.5123.716.529.6Sep 32026090320
DOCU7598.421.2Sep 32026090320
SNOW7274.539184.7Sep 32026090320
VFC6.348.97.816.2Sep 32026090320
CPB5.947.2848.7Sep 32026090320
LULU5.4153.128.347Sep 32026090320
PL5.192.818.235.9Sep 32026090320
HPE4.6254.455.2213.3Sep 32026090320
Точный SQL-код для каждого числа
WITH tape AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
           sum(toFloat64(volume)) AS vol
    FROM global_markets.options_minute_aggs
    WHERE window_start >= toDateTime(today() - 45, 'America/New_York')
    GROUP BY d
),
ranked AS (
    SELECT d, vol, row_number() OVER (ORDER BY d DESC) AS raw_rn
    FROM tape
),
cal AS (
    SELECT d, vol, rn, sum(if(rn BETWEEN 2 AND 21, 1, 0)) OVER () AS baseline_sessions
    FROM (
        SELECT d, vol, row_number() OVER (ORDER BY d DESC) AS rn
        FROM ranked
        WHERE vol >= 0.75 * (SELECT quantileExact(0.5)(vol) FROM ranked WHERE raw_rn > 1)
    )
),
day_root AS (
    SELECT substring(ticker, 3, length(ticker) - 17) AS root,
           toDate(toTimeZone(window_start, 'America/New_York')) AS d,
           sum(toFloat64(volume)) AS vol
    FROM global_markets.options_minute_aggs
    WHERE window_start >= toDateTime(today() - 45, 'America/New_York')
    GROUP BY root, d
),
scored AS (
    SELECT r.root AS root,
           sumIf(r.vol, c.rn = 1) AS last_vol,
           avgIf(r.vol, c.rn BETWEEN 2 AND 21) AS base_vol,
           maxIf(r.vol, c.rn BETWEEN 2 AND 21) AS prior_high,
           countIf(c.rn BETWEEN 2 AND 21) AS root_sessions,
           max(c.baseline_sessions) AS baseline_session_count,
           maxIf(toYYYYMMDD(c.d), c.rn = 1) AS session_id,
           maxIf(formatDateTime(c.d, '%b %e'), c.rn = 1) AS session_label
    FROM day_root r INNER JOIN cal c ON r.d = c.d
    WHERE c.rn <= 21
      AND r.root NOT IN ('SPCX')
      AND r.root NOT IN ('KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
    GROUP BY r.root
    HAVING last_vol >= 25000 AND base_vol >= 5000 AND root_sessions >= 18
)
SELECT root AS ticker,
       round(last_vol / base_vol, 1) AS vol_ratio,
       round(last_vol / 1000, 1) AS session_volume_k,
       round(base_vol / 1000, 1) AS baseline_volume_k,
       round(prior_high / 1000, 1) AS prior_high_volume_k,
       session_label,
       session_id,
       baseline_session_count
FROM scored
ORDER BY vol_ratio DESC, ticker ASC
LIMIT 10
Запустите сами

Данные представлены в трех столбцах. Коэффициент показывает, насколько объем торгов базовым активом превысил его среднее значение. Базовый уровень отражает нормальный объем: высокий множитель при низкой ликвидности опционной серии менее значим, чем умеренный рост при высокой активности. Максимум за двадцать сессий указывает, превысил ли объем торгов показатели предыдущего месяца. Последние три столбца — это контрольный журнал: дата сессии, на основе которой построена таблица (в виде метки и числа), а также количество учитываемых сессий для расчета базового уровня, которое должно составлять двадцать для публикации страницы.

DPRO возглавляет список с показателем 27.9x от среднего значения: 204.9 тысяч контрактов против базового уровня в 7.4 тысяч при предыдущем максимуме за двадцать сессий в 96.4 тысяч.

  • IOT на уровне 9.1x: 45.9 тысяч контрактов против базового уровня в 5 тысяч.
  • ZS на уровне 7.5x, 123.7 тысяч контрактов при базовом уровне в 16.5 тысяч.
  • DOCU на уровне 7x, 59 тысяч контрактов против максимума за двадцать сессий в 21.2 тысяч.
  • SNOW на уровне 7x при 274.5 тысячах контрактов.

Последняя строка таблицы, HPE, показала объем торгов на уровне 4.6x от среднего. Множитель и абсолютный объем — это разные показатели, поэтому оба присутствуют в таблице. Аналогичные данные по рынку акций представлены в разделе акции с нетипичным объемом торгов на этой неделе, а методика расчета подробно описана в относительном объеме торгов.

Call- или put-опционы: расстановка сил на ленте

Разрыв между объёмами торгов call- и put-опционами — это основной показатель, на который указывает сигнал. Ниже представлена та же площадка и та же сессия, отсортированные по доле call-опционов:

ЗапросКолл или пут: объем контрактов по колл- и пут-опционам за сессию
ТикерОбъем колл (тыс.)Объем пут (тыс.)Доля колл (%)ID сессии
DPRO201.13.89820260903
IOT369.97820260903
HPE182.372.17220260903
PL57.335.56220260903
SNOW163.6110.96020260903
ZS73.749.96020260903
CPB25.821.45520260903
DOCU31285320260903
LULU72.780.44720260903
VFC5.543.41120260903
Точный SQL-код для каждого числа
WITH tape AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
           sum(toFloat64(volume)) AS vol
    FROM global_markets.options_minute_aggs
    WHERE window_start >= toDateTime(today() - 45, 'America/New_York')
    GROUP BY d
),
ranked AS (
    SELECT d, vol, row_number() OVER (ORDER BY d DESC) AS raw_rn
    FROM tape
),
cal AS (
    SELECT d, vol, rn, sum(if(rn BETWEEN 2 AND 21, 1, 0)) OVER () AS baseline_sessions
    FROM (
        SELECT d, vol, row_number() OVER (ORDER BY d DESC) AS rn
        FROM ranked
        WHERE vol >= 0.75 * (SELECT quantileExact(0.5)(vol) FROM ranked WHERE raw_rn > 1)
    )
),
day_root AS (
    SELECT substring(ticker, 3, length(ticker) - 17) AS root,
           toDate(toTimeZone(window_start, 'America/New_York')) AS d,
           sum(toFloat64(volume)) AS vol,
           sumIf(toFloat64(volume), substring(ticker, length(ticker) - 8, 1) = 'C') AS calls,
           sumIf(toFloat64(volume), substring(ticker, length(ticker) - 8, 1) = 'P') AS puts
    FROM global_markets.options_minute_aggs
    WHERE window_start >= toDateTime(today() - 45, 'America/New_York')
    GROUP BY root, d
),
scored AS (
    SELECT r.root AS root,
           round(sumIf(r.vol, c.rn = 1) / avgIf(r.vol, c.rn BETWEEN 2 AND 21), 1) AS vol_ratio,
           sumIf(r.calls, c.rn = 1) AS calls,
           sumIf(r.puts, c.rn = 1) AS puts,
           maxIf(toYYYYMMDD(c.d), c.rn = 1) AS session_id
    FROM day_root r INNER JOIN cal c ON r.d = c.d
    WHERE c.rn <= 21
      AND r.root NOT IN ('SPCX')
      AND r.root NOT IN ('KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
    GROUP BY r.root
    HAVING sumIf(r.vol, c.rn = 1) >= 25000
       AND avgIf(r.vol, c.rn BETWEEN 2 AND 21) >= 5000
       AND countIf(c.rn BETWEEN 2 AND 21) >= 18
),
board AS (
    SELECT root, vol_ratio, calls, puts, session_id
    FROM scored
    ORDER BY vol_ratio DESC, root ASC
    LIMIT 10
)
SELECT root AS ticker,
       round(calls / 1000, 1) AS call_volume_k,
       round(puts / 1000, 1) AS put_volume_k,
       round(100.0 * calls / (calls + puts), 0) AS call_share_pct,
       session_id
FROM board
WHERE calls + puts > 0
ORDER BY call_share_pct DESC, ticker ASC
Запустите сами

В сегменте с преобладанием call-опционов DPRO направил 98% своих контрактов в call-опционы: 201.1 тысяч call-опционов против 3.8 тысяч put-опционов. На другом конце той же таблицы 11% контрактов VFC пришлись на call-опционы: 5.5 тысяч против 43.4 тысяч put-опционов.

Этот разрыв заслуживает внимания, но его легко переоценить. У каждого исполненного контракта есть покупатель и продавец, а лента не фиксирует, какая сторона выступила инициатором сделки. Высокий объём по call-опционам может означать как открытую длинную позицию, так и продажу покрытого call-опциона (covered call) на акции, которыми продавец уже владеет. В статье Покупка и продажа call-опционов подробно разбирается, какие обязательства берет на себя каждая сторона сделки. Там, где лента активна, цены на опционы обычно также высоки, что является темой обзора акций с самой высокой подразумеваемой волатильностью.

Структура контрактов торговой сессии

ЗапросСтруктура контрактов сессии: объем опционов по количеству дней до экспирации
DTE интервалКонтракты (млн)Доля объема (%)ID сессии
same day182520260903
1 to 7 days22.5931.420260903
8 to 30 days17.123.720260903
31 to 90 days7.5210.420260903
91 to 365 days5.517.720260903
over a year1.291.820260903
Точный SQL-код для каждого числа
WITH tape AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
           sum(toFloat64(volume)) AS vol
    FROM global_markets.options_minute_aggs
    WHERE window_start >= toDateTime(today() - 45, 'America/New_York')
    GROUP BY d
),
ranked AS (
    SELECT d, vol, row_number() OVER (ORDER BY d DESC) AS raw_rn
    FROM tape
),
cal AS (
    SELECT d, vol, rn, sum(if(rn BETWEEN 2 AND 21, 1, 0)) OVER () AS baseline_sessions
    FROM (
        SELECT d, vol, row_number() OVER (ORDER BY d DESC) AS rn
        FROM ranked
        WHERE vol >= 0.75 * (SELECT quantileExact(0.5)(vol) FROM ranked WHERE raw_rn > 1)
    )
),
bars AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
           toFloat64(volume) AS v,
           toDate(concat('20', substring(ticker, length(ticker) - 14, 2), '-',
                         substring(ticker, length(ticker) - 12, 2), '-',
                         substring(ticker, length(ticker) - 10, 2))) AS expiry
    FROM global_markets.options_minute_aggs
    WHERE window_start >= toDateTime(today() - 12, 'America/New_York')
      AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM cal WHERE rn = 1)
),
scored AS (
    SELECT multiIf(expiry - d <= 0, 1, expiry - d <= 7, 2, expiry - d <= 30, 3,
                   expiry - d <= 90, 4, expiry - d <= 365, 5, 6) AS bk,
           v, d
    FROM bars
)
SELECT arrayElement(['same day', '1 to 7 days', '8 to 30 days', '31 to 90 days', '91 to 365 days', 'over a year'], bk) AS dte_bucket,
       round(sum(v) / 1e6, 2) AS contracts_m,
       round(100.0 * sum(v) / sum(sum(v)) OVER (), 1) AS pct_of_volume,
       toYYYYMMDD(max(d)) AS session_id
FROM scored
GROUP BY bk
ORDER BY bk ASC
Запустите сами

На контракты с экспирацией в день совершения сделки пришлось 25% всего объёма торгов, что составило 18 миллиона контрактов. Ещё 31.4% контрактов истекают в течение недели. На дальнем конце спектра доля контрактов со сроком погашения более года составила 1.8%.

Такое распределение меняет интерпретацию заголовков об аномальной торговой активности. Основная часть объёма на подобных площадках приходится на краткосрочные инструменты, а контракты с экспирацией в день сделки исполняются к закрытию торгов, а не переносятся на следующий день. Статья опционы 0DTE подробно описывает этот сегмент цепочки опционов.

Была ли это сессия экспирации?

Объём торгов опционами по всему рынку растёт в день ежемесячной экспирации, когда крупнейший блок листинговых контрактов одновременно исключается из обращения. Скрининг коэффициентов, проведённый в день экспирации, отмечает половину рынка, поэтому в таблице ниже каждая сессия в окне снабжена меткой.

ЗапросОбщий объем опционного рынка по сессиям с указанием ежемесячных экспираций
25 rows (showing 20)
СессияКонтракты (млн)Тип сессииМес. экспирацияID сессии
Jul 3175.5ordinary75.120260731
Aug 372.7ordinary75.120260803
Aug 478.9ordinary75.120260804
Aug 569.5ordinary75.120260805
Aug 663.2ordinary75.120260806
Aug 773.2ordinary75.120260807
Aug 1061.4ordinary75.120260810
Aug 1154.6ordinary75.120260811
Aug 1255.4ordinary75.120260812
Aug 1366.6ordinary75.120260813
Aug 1466ordinary75.120260814
Aug 1760.9ordinary75.120260817
Aug 1856.9ordinary75.120260818
Aug 1967.2ordinary75.120260819
Aug 2064.9ordinary75.120260820
Aug 2175.1monthly expiration75.120260821
Aug 2461ordinary75.120260824
Aug 2552.8ordinary75.120260825
Aug 2649.4ordinary75.120260826
Aug 2766.1ordinary75.120260827
Точный SQL-код для каждого числа
WITH tape AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
           sum(toFloat64(volume)) AS vol
    FROM global_markets.options_minute_aggs
    WHERE window_start >= toDateTime(today() - 45, 'America/New_York')
    GROUP BY d
),
ranked AS (
    SELECT d, vol, row_number() OVER (ORDER BY d DESC) AS raw_rn
    FROM tape
),
cal AS (
    SELECT d, vol, rn, sum(if(rn BETWEEN 2 AND 21, 1, 0)) OVER () AS baseline_sessions
    FROM (
        SELECT d, vol, row_number() OVER (ORDER BY d DESC) AS rn
        FROM ranked
        WHERE vol >= 0.75 * (SELECT quantileExact(0.5)(vol) FROM ranked WHERE raw_rn > 1)
    )
),
w AS (
    SELECT d, vol,
           toStartOfMonth(d) + toIntervalDay(((5 - toDayOfWeek(toStartOfMonth(d)) + 7) % 7) + 14) AS third_friday
    FROM cal
    WHERE rn <= 25
),
marked AS (
    SELECT d, vol,
           (d = max(if(d <= third_friday, d, toDate('1970-01-01'))) OVER (PARTITION BY toStartOfMonth(d)))
             AND (third_friday <= max(d) OVER ()) AS is_expiry
    FROM w
),
latest AS (
    SELECT d, vol, is_expiry,
           max(if(is_expiry, d, toDate('1970-01-01'))) OVER () AS last_expiry_d
    FROM marked
)
SELECT formatDateTime(d, '%b %e') AS session,
       round(vol / 1e6, 1) AS contracts_m,
       multiIf(is_expiry, 'monthly expiration', 'ordinary') AS session_type,
       round(max(if(d = last_expiry_d, vol, 0)) OVER () / 1e6, 1) AS monthly_expiry_m,
       toYYYYMMDD(d) AS session_id
FROM latest
ORDER BY d ASC
Запустите сами

Самая новая сессия в этой панели — та, которую отражает биржа; дата в обеих таблицах совпадает, а её метка гласит ordinary. В ходе этой сессии по всей ленте торгов в США было зафиксировано 72 миллиона контрактов. В ходе последней ежемесячной экспирации в том же окне было зафиксировано 75.1 миллиона. Двадцатидневный базовый период, лежащий в основе каждого коэффициента в таблице, обычно содержит ровно одну ежемесячную экспирацию, поэтому знаменатель учитывает этот единовременный всплеск от сессии к сессии. Экспирация также поднимает вопрос об уровне страйка, на который данный скрининг объёмов ответить не может: max pain определяет, какой страйк приведёт к минимальным выплатам держателям опционов при расчёте по контрактам, и этот показатель рассчитывается на основе открытого интереса, а не на основе объёма торгов, измеряемого здесь.

Опережает ли необычная активность на рынке опционов динамику акций?

Важно выяснить, следует ли за всплеском активности на рынке опционов значительное движение базового актива. Мы проанализировали данные за последние двести дней: каждая торговая сессия по отдельным инструментам, преодолевшая установленные пороги объёма, была классифицирована по коэффициенту активности и сопоставлена с абсолютным изменением цены закрытия базового актива на следующей сессии. В качестве контрольного показателя используется медианное дневное изменение цены конкретного инструмента за весь период, что позволяет сравнивать каждую группу с её собственными историческими данными.

ЗапросПоследствия высокой активности: абсолютное изменение цены на следующей сессии в сравнении с обычными днями
Диапазон RVolКол-во событийМедиана след. изм. (%)Медиана тип. изм. (%)Гэп (п.п.)Медиана след. знаков. (%)
5x or more6242.511.960.55-0.16
3x to 5x12122.352.150.2-0.21
2x to 3x18522.282.210.07-0.22
1x to 2x83801.982.23-0.25-0.05
below 1x115591.892.06-0.17-0.01
Точный SQL-код для каждого числа
WITH daily AS (
    SELECT underlying_symbol AS sym,
           date AS d,
           sum(volume) AS vol,
           max(underlying_close) AS px
    FROM global_markets.options_greeks
    WHERE date >= today() - 200
      AND underlying_close > 0
      AND underlying_symbol NOT IN ('SPCX')
      AND underlying_symbol NOT IN ('KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
      AND underlying_symbol NOT IN (SELECT ticker FROM global_markets.stocks_splits
                                    WHERE execution_date BETWEEN today() - 230 AND today())
    GROUP BY sym, d
),
seq AS (
    SELECT sym, d, vol, px,
           avg(vol) OVER (PARTITION BY sym ORDER BY d ROWS BETWEEN 20 PRECEDING AND 1 PRECEDING) AS base,
           count() OVER (PARTITION BY sym ORDER BY d ROWS BETWEEN 20 PRECEDING AND 1 PRECEDING) AS base_n,
           any(px) OVER (PARTITION BY sym ORDER BY d ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING) AS next_px,
           any(px) OVER (PARTITION BY sym ORDER BY d ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev_px
    FROM daily
),
moves AS (
    SELECT sym, vol, base, base_n,
           if(next_px > 0, 100 * abs(next_px / px - 1), -1) AS next_abs,
           if(next_px > 0, 100 * (next_px / px - 1), -999) AS next_signed,
           if(prev_px > 0, 100 * abs(px / prev_px - 1), -1) AS own_abs
    FROM seq
),
typical AS (
    SELECT sym, quantileExact(0.5)(own_abs) AS typ
    FROM moves
    WHERE own_abs >= 0
    GROUP BY sym
)
SELECT arrayElement(['5x or more', '3x to 5x', '2x to 3x', '1x to 2x', 'below 1x'], bk) AS rvol_bucket,
       count() AS event_count,
       round(quantileExact(0.5)(next_abs), 2) AS median_next_move_pct,
       round(quantileExact(0.5)(typ), 2) AS median_typical_move_pct,
       round(quantileExact(0.5)(next_abs) - quantileExact(0.5)(typ), 2) AS gap_pp,
       round(quantileExact(0.5)(next_signed), 2) AS median_next_signed_pct
FROM (
    SELECT m.sym AS sym,
           multiIf(m.vol / m.base >= 5, 1, m.vol / m.base >= 3, 2, m.vol / m.base >= 2, 3,
                   m.vol / m.base >= 1, 4, 5) AS bk,
           m.next_abs AS next_abs,
           m.next_signed AS next_signed,
           t.typ AS typ
    FROM moves m INNER JOIN typical t ON m.sym = t.sym
    WHERE m.base_n = 20 AND m.base >= 5000 AND m.vol >= 25000 AND m.next_abs >= 0
)
GROUP BY bk
ORDER BY bk ASC
Запустите сами

После сессии, в ходе которой объём торгов в пять раз или более превысил базовый уровень, медианное абсолютное изменение цены на следующий день составило 2.51%, тогда как в обычные дни для тех же инструментов этот показатель был равен 1.96%; разрыв составил 0.55 процентных пункта. В нижней части таблицы, характеризующейся низкой активностью, значения в двух столбцах составили 1.89% и 2.06%, а разрыв — -0.17 пункта.

Честный ответ заключается в том, что эффект невелик и связан скорее с масштабом, чем с направлением движения. За более активными сессиями на рынке опционов следуют лишь незначительно большие движения цены в абсолютном выражении, а разница в медианных значениях составляет доли процентного пункта. Медианное направленное изменение цены на сессии после дня с пятикратным превышением объёма составило -0.16%, а после дня с активностью ниже базового уровня — -0.01%. Ни один из этих результатов не подтверждает громкие заголовки. Также стоит учитывать редкость таких событий: 624 торговых сессий превысили пятикратный базовый объём за весь период исследования, тогда как 11559 сессий показали объём ниже базового уровня.

Методология оценки данного скринера

Скринер, основанный на скрытых правилах, по сути является инструментом интерпретации данных, поэтому все критерии приведены ниже.

  1. Источник. Полная поминутная лента опционных сделок в США. Базовый актив выделяется из OCC-символа каждого контракта, поэтому в выборку наряду с обычными акциями и фондами включены как опционы на индексы, так и контракты с экспирацией в день сделки.
  2. Коэффициент. Общий объем контрактов за последнюю завершенную сессию, деленный на средний объем по тому же базовому активу за предыдущие двадцать торговых дней. Минимум восемнадцать из этих двадцати дней должны иметь ненулевой объем. Длина временного окна отображается в отдельном столбце; если данных недостаточно для двадцати сессий, страница не публикует усредненный показатель под видом двадцатидневного.
  3. Пороговые значения. Минимум двадцать пять тысяч контрактов за сессию и базовый уровень в пять тысяч контрактов. Без этих ограничений список был бы заполнен инструментами, где одна сделка дает десятикратное отклонение от нормы.
  4. Критерии сессии. Каждая панель на этой странице использует данные из одного сорокапятидневного окна той же ленты сделок. Правило едино: сессия учитывается, как только её общерыночный объем достигает семидесяти пяти процентов от медианы предыдущих сессий в этом окне. Самый свежий день исключается из медианы, которую он должен превысить, чтобы неполный торговый день не занижал планку для самого себя. Данные поступают частями, поэтому день с объемом менее трех четвертей от нормального не попадает в отчет, пока не будет полностью сформирован. Каждая панель указывает сессию, к которой относятся данные, что позволяет сопоставлять все четыре панели между собой.
  5. Исключения. Кредитные (leveraged) и инверсные фонды исключаются по названию: объем по трехкратному (3x) инструменту движется пропорционально множителю и переполнял бы список каждую неделю. Также исключен один тикер, который ранее использовался для двух разных компаний, так как исторические данные поставщика объединяют их в один ряд.
  6. Отсутствие открытого интереса. В базе данных нет поля для открытого интереса (open interest), поэтому на этой странице объем не сравнивается с количеством открытых позиций. Там, где скринеры конкурентов показывают превышение объема над открытым интересом, наш показывает превышение объема над собственным двадцатидневным средним.
  7. Дни экспирации. Ежемесячная экспирация увеличивает объем опционных торгов по всему рынку. Панель сессии отмечает это условие, и данные по дню экспирации следует сравнивать с другими днями экспирации.

Исследование последующей динамики использует вторую таблицу — ежедневный файл опционных греков, который содержит очищенный тикер базового актива и цену его закрытия. Он исключает опционы с экспирацией в день сделки и индексные опционы, а также обновляется на несколько сессий позже, чем поминутная лента, поэтому его охват уже, чем у основного скринера. Эмитенты, по которым в период исследования произошел сплит акций, исключаются, так как сплит создает ложное впечатление резкого ценового движения.

Часто задаваемые вопросы

Что такое необычная активность по опционам?

Это ситуация, когда по базовому активу за одну сессию заключается значительно больше опционных контрактов, чем в среднем за последнее время. На этой странице порог определяется арифметически, а не экспертной оценкой: объем контрактов за сессию делится на средний показатель по тому же активу за предыдущие двадцать сессий. При этом установлены минимальные значения: двадцать пять тысяч контрактов за текущую сессию и пять тысяч для базового уровня.

Предсказывает ли необычная активность по опционам движение акций?

Слабо и без указания направления. За последние двести дней наших данных сессии, в которых объем опционов в пять раз превышал базовый уровень, сопровождались медианным абсолютным изменением цены на 2.51% против 1.96% для тех же бумаг в обычный день. Медианное направленное изменение на следующей сессии составило -0.16%, поэтому объем говорит о том, насколько сильно изменилась цена акции, но почти ничего не сообщает о направлении этого движения.

В какое время обновляются данные об объеме опционов?

Объемы контрактов фиксируются в режиме реального времени в консолидированной ленте опционов в течение торговой сессии. Архив данных, на котором основана эта страница, обновляется с задержкой, поэтому система отображает последнюю завершенную сессию, а не текущую, и указывает соответствующую дату. Здесь нет потока данных в реальном времени.

Почему сканер необычной активности по опционам не использует открытый интерес?

Открытый интерес публикуется клиринговой палатой после закрытия торгов, и в наших данных нет поля для этого показателя. Сравнение объема сессии с историей объемов того же актива можно измерить напрямую по ленте, что отвечает на схожий вопрос: является ли данная цепочка опционов более активной, чем обычно.


Каждое число выше получено из сохраненного версионированного запроса. Откройте SQL под любой панелью, чтобы проверить расчет, или запустите тот же скрининг за любой период в терминале Strasmore.

#options#unusual options activity#options volume#market structure