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

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

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

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

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

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

ЗапросНеобычная активность по опционам: последняя торговая сессия в сравнении со средним значением за 20 сессий
ТикерОтношение объемаОбъем сессии (тыс.)Базовый объем (тыс.)Объем пред. максимума (тыс.)Метка сессииID сессииКол-во базовых сессий
URA9.6105.51145.5Oct 152026101520
ARKG9.214715.950.2Oct 152026101520
KNX6.235.55.781.4Oct 152026101520
XLP5.4159.229.7174.5Oct 152026101520
GILD5.328.55.414Oct 152026101520
WULF4.5816.5182.2505.3Oct 152026101520
XLV4.168.716.754.7Oct 152026101520
CRWV41347.7339.91330.8Oct 152026101520
CCJ3.887.822.957.8Oct 152026101520
CORZ3.8191.149.8147.6Oct 152026101520
Точный 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
Запустите сами

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

URA возглавляет список с показателем 9.6x от среднего значения: 105.5 тысяч контрактов против базового уровня в 11 тысяч при предыдущем максимуме за двадцать сессий в 45.5 тысяч.

  • ARKG на уровне 9.2x: 147 тысяч контрактов против базового уровня в 15.9 тысяч.
  • KNX на уровне 6.2x, 35.5 тысяч контрактов при базовом уровне в 5.7 тысяч.
  • XLP на уровне 5.4x, 159.2 тысяч контрактов против максимума за двадцать сессий в 174.5 тысяч.
  • GILD на уровне 5.3x при 28.5 тысячах контрактов.

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

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

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

ЗапросКолл или пут: объем контрактов по колл- и пут-опционам за сессию
ТикерОбъем колл (тыс.)Объем пут (тыс.)Доля колл (%)ID сессии
KNX35.20.39920261015
CORZ174.516.69120261015
GILD20.97.67320261015
CRWV768.2579.55720261015
WULF436.9379.65420261015
XLV34.434.35020261015
ARKG72.474.64920261015
URA31.174.52920261015
XLP29.5129.71920261015
CCJ13.674.21520261015
Точный 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-опционов KNX направил 99% своих контрактов в call-опционы: 35.2 тысяч call-опционов против 0.3 тысяч put-опционов. На другом конце той же таблицы 15% контрактов CCJ пришлись на call-опционы: 13.6 тысяч против 74.2 тысяч put-опционов.

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

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

ЗапросСтруктура контрактов сессии: объем опционов по количеству дней до экспирации
DTE интервалКонтракты (млн)Доля объема (%)ID сессии
same day18.422.720261015
1 to 7 days26.8733.120261015
8 to 30 days12.6715.620261015
31 to 90 days12.6715.620261015
91 to 365 days8.071020261015
over a year2.4320261015
Точный 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
Запустите сами

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

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

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

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

ЗапросОбщий объем опционного рынка по сессиям с указанием ежемесячных экспираций
25 rows (showing 20)
СессияКонтракты (млн)Тип сессииМес. экспирацияID сессии
Sep 1168.3ordinary76.120260911
Sep 1467.5ordinary76.120260914
Sep 1556.6ordinary76.120260915
Sep 1665.4ordinary76.120260916
Sep 1768.2ordinary76.120260917
Sep 1876.1monthly expiration76.120260918
Sep 2180.3ordinary76.120260921
Sep 2263.6ordinary76.120260922
Sep 2369ordinary76.120260923
Sep 2467.3ordinary76.120260924
Sep 2572.6ordinary76.120260925
Sep 2866.6ordinary76.120260928
Sep 2958.6ordinary76.120260929
Sep 3061.8ordinary76.120260930
Oct 169.9ordinary76.120261001
Oct 278.7ordinary76.120261002
Oct 569.4ordinary76.120261005
Oct 663.1ordinary76.120261006
Oct 763ordinary76.120261007
Oct 874.8ordinary76.120261008
Точный 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. В ходе этой сессии по всей ленте торгов в США было зафиксировано 81.1 миллиона контрактов. В ходе последней ежемесячной экспирации в том же окне было зафиксировано 76.1 миллиона. Двадцатидневный базовый период, лежащий в основе каждого коэффициента в таблице, обычно содержит ровно одну ежемесячную экспирацию, поэтому знаменатель учитывает этот единовременный всплеск от сессии к сессии. Экспирация также поднимает вопрос об уровне страйка, на который данный скрининг объёмов ответить не может: max pain определяет, какой страйк приведёт к минимальным выплатам держателям опционов при расчёте по контрактам, и этот показатель рассчитывается на основе открытого интереса, а не на основе объёма торгов, измеряемого здесь.

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

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

ЗапросПоследствия высокой активности: абсолютное изменение цены на следующей сессии в сравнении с обычными днями
Диапазон RVolКол-во событийМедиана след. изм. (%)Медиана тип. изм. (%)Гэп (п.п.)Медиана след. знаков. (%)
5x or more6062.471.90.57-0.12
3x to 5x11662.281.940.34-0.19
2x to 3x18392.071.950.11-0.24
1x to 2x83501.872.01-0.14-0.1
below 1x113751.822-0.18-0.06
Точный 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.47%, тогда как в обычные дни для тех же инструментов этот показатель был равен 1.9%; разрыв составил 0.57 процентных пункта. В нижней части таблицы, характеризующейся низкой активностью, значения в двух столбцах составили 1.82% и 2%, а разрыв — -0.18 пункта.

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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