Strasmore Research
Обучение Matt ConnorАвтор: Matt Connor

что такое максимальная боль в опционах расчет

Максимальная боль это страйк, где держатели опционов получают меньше всего при экспирации. Разбор расчета на реальной цепочке SPY и близость фактического расчета.

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

Как рассчитывается максимальная боль?

Максимальная боль — это перебор, а не формула. Пять шагов:

  1. Собрать открытый интерес, число ещё не закрытых контрактов, по каждому страйку экспирации, с раздельным учётом коллов и путов.
  2. Выбрать кандидата на цену расчёта. Сами листинговые страйки обычно и есть набор кандидатов.
  3. Оценить каждый колл как цену кандидата минус его страйк, с нижней границей в нуле, и каждый пут как страйк минус цену кандидата, с нижней границей в нуле.
  4. Умножить каждую стоимость на открытый интерес этого страйка и на множитель контракта в 100 акций, затем сложить всю цепочку в одну долларовую величину.
  5. Повторить для каждого кандидата и сохранить наименьший итог. Этот кандидат и есть страйк максимальной боли.

Гипотетический пример фиксирует механику. Допустим, открыто 1000 коллов со страйком 95 долларов, и расчёт приходится на 100 долларов. Каждый контракт платит держателю 5 долларов за акцию, то есть блок платит 500 000 долларов на 1000 контрактах по 100 акций. Сдвиньте расчёт вниз до 95 долларов, и этот блок ничего не платит, тогда как каждый пут со страйком выше 95 начинает платить. Движение цены кандидата вверх и вниз по лестнице вычерчивает кривую с дном, и это дно — та цифра, которую цитируют люди.

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

Где контракты лежат на лестнице страйков

Открытый интерес публикуется раз в сессию из клиринговых данных после закрытия. Панели здесь используют торговый объём контрактов за всё время одной экспирации как наглядную замену этому файлу, и объект имеет ту же форму: куча контрактов, сложенная в нескольких долларах от цены базового актива. Каждый контракт цепочки SPY с экспирацией в пятницу, 17 июля 2026 года, сгруппирован по страйкам:

ЗапросКонтракты SPY по страйкам, экспирация 17 июля 2026
Точный SQL-код для каждого числа
SELECT toString(strike_usd) AS strike,
       round(sumIf(contracts, opt_type = 'C') / 1e3, 1) AS call_contracts_k,
       round(sumIf(contracts, opt_type = 'P') / 1e3, 1) AS put_contracts_k
FROM (
    SELECT intDiv(toUInt32OrZero(substring(ticker, length(ticker) - 7, 8)), 1000) AS strike_usd,
           substring(ticker, length(ticker) - 8, 1)                              AS opt_type,
           sum(toFloat64(volume))                                                AS contracts
    FROM global_markets.options_minute_aggs
    WHERE window_start >= toDateTime('2026-06-18 08:00:00')
      AND window_start <  toDateTime('2026-07-18 04:00:00')
      AND startsWith(ticker, 'O:SPY260717')
      AND intDiv(toUInt32OrZero(substring(ticker, length(ticker) - 7, 8)), 1000) BETWEEN 736 AND 757
    GROUP BY strike_usd, opt_type
)
GROUP BY strike_usd, strike
ORDER BY strike_usd
Run this yourself

Лестница наклоняется, пересекая деньги. На страйке 736 путы превышали коллы в соотношении 113.2 тысяч к 8 тысячам. На 757 наклон идёт в другую сторону: 131.7 тысяч коллов против 8.1 тысяч путов. Путы стоят ниже цены базового актива, коллы — выше, и две стороны пересекаются где-то посередине. Эта область пересечения — то место, где ляжет цифра максимальной боли ещё до любой арифметики, и это первое, что стоит знать о статистике. Торговые контракты и открытые контракты — разные счёты, и объём опционов против открытого интереса разделяет их.

Кривая выплат и её дно

Прогон шагов 3–5 по кандидатам на цену расчёта от 730 до 765 долларов вычерчивает форму, которую ищет расчёт:

ЗапросСовокупная выплата держателям опционов по ценам расчёта, SPY 17 июля 2026
Точный SQL-код для каждого числа
WITH chain AS (
    SELECT intDiv(toUInt32OrZero(substring(ticker, length(ticker) - 7, 8)), 1000) AS strike,
           substring(ticker, length(ticker) - 8, 1)                              AS opt_type,
           sum(toFloat64(volume))                                                AS contracts
    FROM global_markets.options_minute_aggs
    WHERE window_start >= toDateTime('2026-06-18 08:00:00')
      AND window_start <  toDateTime('2026-07-18 04:00:00')
      AND startsWith(ticker, 'O:SPY260717')
    GROUP BY strike, opt_type
),
candidates AS (
    SELECT DISTINCT strike AS settle FROM chain WHERE strike BETWEEN 730 AND 765
)
SELECT candidates.settle AS settle_price,
       round(sum(multiIf(chain.opt_type = 'C' AND chain.strike < candidates.settle,
                         chain.contracts * (candidates.settle - chain.strike),
                         chain.opt_type = 'P' AND chain.strike > candidates.settle,
                         chain.contracts * (chain.strike - candidates.settle),
                         0)) * 100 / 1e6, 1) AS holder_payout_usd_mm
FROM candidates CROSS JOIN chain
GROUP BY settle_price
ORDER BY settle_price
Run this yourself

Расчёт в 730 долларов заплатил бы держателям 11149.2 миллионов по этой цепочке, почти всё — держателям путов. Расчёт в 765 долларов заплатил бы 11083.9 миллионов, почти всё — держателям коллов. Между концами кривая проваливается в мелкую впадину. Ранжирование тех же итогов от наименьшего вверх называет страйк:

ЗапросШесть страйков с мин. выплатой, экспирация SPY 17 июля 2026
Точный SQL-код для каждого числа
WITH chain AS (
    SELECT intDiv(toUInt32OrZero(substring(ticker, length(ticker) - 7, 8)), 1000) AS strike,
           substring(ticker, length(ticker) - 8, 1)                              AS opt_type,
           sum(toFloat64(volume))                                                AS contracts
    FROM global_markets.options_minute_aggs
    WHERE window_start >= toDateTime('2026-06-18 08:00:00')
      AND window_start <  toDateTime('2026-07-18 04:00:00')
      AND startsWith(ticker, 'O:SPY260717')
    GROUP BY strike, opt_type
),
candidates AS (
    SELECT DISTINCT strike AS settle FROM chain WHERE strike BETWEEN 730 AND 765
)
SELECT concat('$', toString(candidates.settle)) AS candidate_strike,
       round(sum(multiIf(chain.opt_type = 'C' AND chain.strike < candidates.settle,
                         chain.contracts * (candidates.settle - chain.strike),
                         chain.opt_type = 'P' AND chain.strike > candidates.settle,
                         chain.contracts * (chain.strike - candidates.settle),
                         0)) * 100 / 1e6, 1) AS holder_payout_usd_mm
FROM candidates CROSS JOIN chain
GROUP BY candidate_strike
ORDER BY holder_payout_usd_mm ASC
LIMIT 6
Run this yourself

Минимум лежит на $746, на уровне 1898.2 миллионов. Посмотрите, насколько плоска впадина, а не только на то, где она достигает дна. Второй по минимуму, $747, даёт 1940.2 миллионов, а шестой в рейтинге кандидат $7492272.8 миллионов. Шесть цен кандидатов в пределах нескольких долларов на инструменте дороже 700 долларов лежат близко, поэтому скромная правка цепочки сдвигает напечатанный страйк, хотя в рынке ничего не изменилось.

Что утверждает теория

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

Второе утверждение — более слабое. Цифра максимальной боли агрегирует открытый интерес без информации о том, какая сторона длинная, а какая короткая по каждому страйку, поэтому продавцы в истории — это допущение, а не наблюдение. Участнику, способному сдвинуть ETF широкого рынка к выбранному страйку, потребался бы размер сверх хеджирующих потоков, которые генерирует вся цепочка. Там, где описывался реальный механизм хеджирования, это гамма-механизм: книга дилера с положительной гаммой переоценивает хедж, продавая на росте и покупая на слабости, — правило, которое практики называют подавлением или пришпиливанием близ сильно торгуемых страйков. Наш разбор гамма-экспозиции излагает эту оценку и лежащие в её основе допущения.

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

Насколько близко страйк ложится на самом деле?

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

ЗапросМинимизирующий страйк против цены закрытия: месячные экспирации SPY, фев–июл 2026
Точный SQL-код для каждого числа
WITH expiries AS (
    SELECT arrayJoin([toDate('2026-02-20'), toDate('2026-03-20'), toDate('2026-04-17'),
                      toDate('2026-05-15'), toDate('2026-06-18'), toDate('2026-07-17')]) AS expiry
),
chain AS (
    SELECT toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6)))  AS expiry,
           intDiv(toUInt32OrZero(substring(ticker, length(ticker) - 7, 8)), 1000) AS strike,
           substring(ticker, length(ticker) - 8, 1)                              AS opt_type,
           sum(toFloat64(volume))                                                AS contracts
    FROM global_markets.options_minute_aggs
    WHERE ((window_start >= toDateTime('2026-02-16 08:00:00') AND window_start < toDateTime('2026-02-21 04:00:00'))
        OR (window_start >= toDateTime('2026-03-16 08:00:00') AND window_start < toDateTime('2026-03-21 04:00:00'))
        OR (window_start >= toDateTime('2026-04-13 08:00:00') AND window_start < toDateTime('2026-04-18 04:00:00'))
        OR (window_start >= toDateTime('2026-05-11 08:00:00') AND window_start < toDateTime('2026-05-16 04:00:00'))
        OR (window_start >= toDateTime('2026-06-15 08:00:00') AND window_start < toDateTime('2026-06-19 04:00:00'))
        OR (window_start >= toDateTime('2026-07-13 08:00:00') AND window_start < toDateTime('2026-07-18 04:00:00')))
      AND startsWith(ticker, 'O:SPY26')
      AND toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) IN (SELECT expiry FROM expiries)
    GROUP BY expiry, strike, opt_type
),
curve AS (
    SELECT c1.expiry AS expiry,
           c1.strike AS settle,
           sum(multiIf(c2.opt_type = 'C' AND c2.strike < c1.strike, c2.contracts * (c1.strike - c2.strike),
                       c2.opt_type = 'P' AND c2.strike > c1.strike, c2.contracts * (c2.strike - c1.strike),
                       0)) AS payout
    FROM chain AS c1 INNER JOIN chain AS c2 ON c1.expiry = c2.expiry
    GROUP BY c1.expiry, c1.strike
),
pain AS (
    SELECT expiry, argMin(settle, payout) AS pain_strike FROM curve GROUP BY expiry
),
px AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
           argMax(close, window_start)                          AS close_px
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-02-05')
      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-07-17')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY d
),
prior AS (
    SELECT expiries.expiry AS expiry, argMax(px.close_px, px.d) AS week_earlier_px
    FROM expiries CROSS JOIN px
    WHERE px.d <= expiries.expiry - 7
    GROUP BY expiries.expiry
)
SELECT formatDateTime(pain.expiry, '%b %e')                                   AS expiry_label,
       pain.pain_strike                                                       AS min_payout_strike,
       round(px.close_px, 2)                                                  AS settlement_close,
       round(abs(px.close_px - pain.pain_strike) / px.close_px * 100, 2)      AS max_pain_miss_pct,
       round(abs(px.close_px - prior.week_earlier_px) / px.close_px * 100, 2) AS week_earlier_miss_pct
FROM pain
INNER JOIN px ON pain.expiry = px.d
INNER JOIN prior ON pain.expiry = prior.expiry
ORDER BY pain.expiry
Run this yourself

Разрыв между минимизирующим страйком и закрытием шёл от 0.07% на экспирации Jun 18 до 0.53% на Mar 20, оставаясь меньше шести десятых процента каждый месяц. Процитированный сам по себе, это выглядит как высокая доля попаданий. Две особенности измерения снижают её.

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

Последний столбец — контроль, который стоит читать. Закрытие SPY за неделю до Apr 17 промахнулось по цене расчёта на 4.32%, против 0.42% для минимизирующего страйка. В May 15 два прогноза сошлись в доле друг от друга: 0.21% против 0.12%. Статистика, вычисленная в день экспирации, должна бить цену недельной давности с большим отрывом. Честный тест, который эта панель не делает, замораживает цепочку за неделю и спрашивает, зовёт ли тот страйк закрытие лучше, чем цена на экране в тот же день.

Как читать опубликованную цифру максимальной боли

  • Спросите, какие контракты в неё вошли. Издатели расходятся по недельным и месячным сериям, и по индексным цепочкам против ETF-цепочек, отслеживающих тот же бенчмарк.
  • Спросите, когда был взят открытый интерес. Клиринговый файл обновляется раз в сессию, поэтому внутридневная цифра, которая движется, пересчитывается из чего-то другого.
  • Спросите, как выглядит вся кривая, а не только где лежит дно. Плоская впадина значит, что напечатанный страйк — один из нескольких почти равных ответов.
  • Сравните с наивной альтернативой, прежде чем читать близость как мастерство.

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

Частые вопросы по максимальной боли

Что значит максимальная боль в торговле опционами?

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

Всегда ли акции закрываются на страйке максимальной боли?

Нет. На шести месячных экспирациях SPY, измеренных выше, минимизирующий страйк лежал в пределах 0.53% от закрытия в самом широком случае, что звучит плотно, пока цифру не сравнишь с наивным бенчмарком и с тем фактом, что кандидаты-страйки и так кучно около цены. Близость на лестнице, центрированной в споте, — слабый тест.

Как часто меняется цифра максимальной боли?

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

Это максимальная боль то же самое, что гамма-экспозиция?

Нет. Обе читают ту же опционную цепочку и отвечают на разные вопросы. Максимальная боль называет цену, используя только открытый интерес без модели ценообразования. Гамма-экспозиция размеряет хеджирующий поток в долларах на один процент движения, и ей нужна поверхность подразумеваемой волатильности плюс допущение о том, какую сторону каждого контракта держат дилеры.

Работает ли максимальная боль на отдельных акциях?

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


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