Як потік ордерів змінює implied volatility
Як потік ордерів змінює implied volatility? Простежте один strike: від збалансованого ринку до односторонніх покупок call, із денними даними про volatility та обсяг.
Потік ордерів змінює implied volatility по одному котируванню за раз. Market maker, який котирує опціон, не робить ставку на напрямок руху акції: він виставляє ціну з обох боків ринку. Коли покупки продовжують надходити з одного боку, він підвищує рівень volatility, за яким готовий продавати, доки потік не сповільниться або не буде компенсована вартість утримання позиції. Сама акція протягом усієї послідовності може залишатися на місці — і часто саме так і відбувається.
Що насправді котирує market maker
Опціон має доларову bid- і offer-ціну, але desk з іншого боку ринку працює з volatility. Implied volatility — це річний відсотковий рух, якому відповідає ціна опціону з урахуванням strike, кількості днів до експірації, ціни акції та процентної ставки. Якщо підставити ціну в pricing model, можна отримати значення volatility. Якщо підставити volatility, можна отримати ціну. Implied volatility — це ціна, виражена в інших одиницях. Саме тому професійні учасники ринку котирують опціони у volatility, а не в доларах.
Розглянемо гіпотетичний приклад. Call-опціон зі strike $220 і місяцем до експірації вранці пропонується за $5.20. У другій половині дня той самий контракт пропонується вже за $5.60, ціна акції все ще становить $220, а до експірації залишився на один день менший строк. Strike не змінився, ставка не змінилася, а плин часу зазвичай тисне на ціну опціону в протилежний бік. Додаткові 40 центів містяться у вхідному параметрі volatility — і більше ніде.
Як потік ордерів змінює implied volatility на одному strike
Панель нижче охоплює всі опціони AAPL зі strike у межах 5% від ціни акції та строком до експірації від 20 до 45 днів. Для кожної сесії вона показує три показники: частку денного обсягу контрактів, що припала на call-опціони; середню implied volatility цих near-the-money контрактів; і рівень закриття акції порівняно з її рівнем у перший день періоду.
Точний SQL-код для кожного числа
WITH
(
SELECT toFloat64(close)
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'AAPL'
AND date >= '2026-05-01'
ORDER BY date
LIMIT 1
) AS start_close
SELECT
toString(date) AS date,
round(100 * sumIf(volume, startsWith(lower(toString(option_type)), 'c')) / sum(volume), 1) AS call_share_pct,
round(100 * avg(implied_volatility), 1) AS atm_iv_pct,
round(100 * (toFloat64(any(underlying_close)) / start_close - 1), 1) AS stock_pct_vs_start
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date BETWEEN '2026-05-01' AND '2026-06-30'
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 20 AND 45
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
GROUP BY date
ORDER BY dateЗа 41 сесій у травні та червні 2026 року частка call-опціонів на початку періоду становила 71% near-the-money обсягу, а наприкінці — 80.7%. Volatility цих самих контрактів зросла з 22.5% до 27.8%. За цей період акція завершила рух на рівні 3.2% від початкового значення.
Дві лінії не рухаються синхронно від сесії до сесії, і саме так виглядає механіка на практиці. Один день однобічних покупок змінює котирування на один tick. Серія таких днів зміщує рівень, оскільки market maker щоранку змушений утримувати більшу позицію того самого типу за ціною, яка ще не стримала попит. Для цього акція не повинна нікуди рухатися.
Чому один strike має вищу IV, ніж сусідні
Зафіксуймо одну сесію та порівняймо strikes, а не дні. Панель нижче фіксує дату й експірацію та проходить уздовж найактивнішої експірації цієї сесії — від рівнів нижче ціни акції до рівнів вище неї.
Точний SQL-код для кожного числа
WITH
(
SELECT max(date)
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date <= '2026-06-30'
) AS session_date,
(
SELECT expiration_date
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date = session_date
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 20 AND 45
GROUP BY expiration_date
ORDER BY sum(volume) DESC
LIMIT 1
) AS busy_expiry
SELECT
concat('$', toString(toUInt32(round(toFloat64(strike_price))))) AS strike,
round(100 * avg(implied_volatility), 1) AS offered_iv_pct,
sum(volume) AS contract_volume
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date = session_date
AND expiration_date = busy_expiry
AND iv_converged = 1
AND volume > 0
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) <= 0.06
GROUP BY strike_price
ORDER BY strike_priceУсі контракти на цій панелі стосуються тієї самої акції, тієї самої дати та тієї самої дати експірації. Від рядка до рядка змінюється лише strike, і разом із ним змінюється offer-volatility: 26.2% на strike $275 проти 23.3% на strike $305, загалом за 7 strikes. Така різниця між сусідніми strikes — це volatility skew. Баланс покупок і продажів є одним із чинників, що його формують. Попит не розподіляється рівномірно по всьому ланцюжку опціонів. Він надходить на потрібний комусь strike, і саме котирування на цьому strike змінюється.
Поділ тієї самої сесії за типом опціонів робить картину чіткішою, оскільки call- і put-опціони на однаковій відстані від ціни акції котирує той самий desk у той самий момент.
Точний SQL-код для кожного числа
WITH
(
SELECT max(date)
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date <= '2026-06-30'
) AS session_date
SELECT
multiIf(bucket = 0, 'at spot',
bucket < 0, concat(toString(abs(bucket)), '% below'),
concat(toString(bucket), '% above')) AS strike_vs_spot,
round(100 * avgIf(iv, is_call), 1) AS call_iv_pct,
round(100 * avgIf(iv, NOT is_call), 1) AS put_iv_pct
FROM
(
SELECT
implied_volatility AS iv,
startsWith(lower(toString(option_type)), 'c') AS is_call,
round(((toFloat64(strike_price) / toFloat64(underlying_close)) - 1) * 100 / 2.5) * 2.5 AS bucket
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date = session_date
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 20 AND 45
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) <= 0.10
)
GROUP BY bucket
HAVING countIf(is_call) > 0 AND countIf(NOT is_call) > 0
ORDER BY bucketНа рівні 7.5% below put-опціони мали volatility 30% проти 27.6% у call-опціонів. На рівні 10% above ті самі два показники становили 33.3% і 25.7%. Та сама акція, та сама хвилина, та сама модель. Різницю створюють strikes, на які припадає попит.
Market maker продовжує котирувати інший бік ринку
Підвищення offer-ціни не означає відмову від торгівлі. Desk, який стабільно продає call-опціони на тлі постійного попиту, зрештою отримує коротку позицію в цих call-опціонах. Стандартний захист — купити проти них акції. Це delta hedging: позиція в акціях, розмір якої компенсує directional exposure опціону та коригується разом із рухом акції. Такий hedge не є безкоштовним. Кожне переміщення акції потребує витрат на ребалансування. Крім того, частина ризику, яку не можна компенсувати акціями, — чутливість позиції до самої volatility — зростає з кожним проданим контрактом.
Вища offer-ціна — це плата за прийняття ще однієї одиниці такого самого ризику. Bid-ціна також підвищується, оскільки desk охоче викупив би ці call-опціони назад за кращим рівнем. Різниця між двома сторонами — це як market makers заробляють гроші, а не ставка на напрямок руху.
Що електронне котирування може і чого не може бачити
На біржовому майданчику ордер надходив разом із людиною. Брокер підходив до біржового натовпу, і market makers могли бачити розмір ордера та компанію, яка за ним стояла. Цей контекст враховувався в ціні, яку вони виставляли. Екрани його прибрали. Сучасний market maker аналізує характер потоку постфактум за стрічкою: обсяг за strike та експірацією, нічну зміну open interest — кількості контрактів, що залишаються відкритими, — швидкість виконання пасивної offer-ціни та те, чи повертаються покупки після підвищення volatility. У більшості випадків неможливо відокремити інституційний ордер від роздрібного. Котирування реагує на характер торгів, а не на особу трейдера.
Точний SQL-код для кожного числа
WITH
(
SELECT max(date)
FROM global_markets.options_greeks
WHERE underlying_symbol IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'KO', 'SPY')
AND date <= '2026-06-30'
) AS session_date
SELECT
underlying_symbol AS symbol,
round(100 * sumIf(volume, startsWith(lower(toString(option_type)), 'c')) / sum(volume), 1) AS call_share_pct,
round(100 * avg(implied_volatility), 1) AS atm_iv_pct
FROM global_markets.options_greeks
WHERE underlying_symbol IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'KO', 'SPY')
AND date = session_date
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 20 AND 45
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
GROUP BY underlying_symbol
ORDER BY call_share_pct DESCНа цій сесії AMZN посідав перше місце в групі: 91.9% його near-the-money обсягу припало на call-опціони, а near-the-money vol становила 38.7%. Якщо пройтися двома колонками панелі зверху вниз, вони не збігаються рядок за рядком. Потік ордерів за один день є лише одним із вхідних параметрів для volatility surface, яка також враховує історію торгів кожного активу та позицію, яку desk уже утримує.
Чого це не означає
Котирування не є прогнозом. Вища offer-ціна означає, що desk хоче отримати більшу компенсацію за наступний контракт, який він продасть. Вона нічого не говорить про подальший напрямок руху акції. Implied volatility — це ціна, визначена тим, скільки готові платити учасники ринку. Різниця між implied та historical volatility дає змогу побачити, як часто ціна й фактичний результат розходяться. Strike, котируваний на рівні 40% vol, не прогнозує рух на 40%. Його ціна зросла через попит учасника, якому був потрібен саме цей контракт.
Як вимірюються ці панелі
Кожна панель охоплює лише контракти, для яких модель успішно розрахувала volatility і які фактично торгувалися цього дня. Далі залишаються лише near-the-money strikes зі строком до експірації від 20 до 45 днів. Це стандартний діапазон для оцінки рівня volatility без викривлень, характерних для дуже коротких або дуже довгих строків. Середні значення розраховуються без зважування за контрактами в кожній групі. Частка call-опціонів розраховується за кількістю укладених контрактів, а не за напрямком угоди клієнта, оскільки стрічка не позначає угоду як купівлю чи продаж.
FAQ
Чи підвищує купівля опціонів implied volatility?
Стійкі однобічні покупки на певному strike супроводжуються підвищенням offer-volatility на цьому strike. Desk з іншого боку продає контракти, які потім має хеджувати, і саме offer-ціна визначає рівень для наступного контракту. Один невеликий ордер рідко помітно змінює volatility ліквідного активу.
Чи роблять market makers ставку на напрямок?
Котирування двостороннього ринку — це бізнес, побудований на спреді між bid- та offer-цінами, тоді як exposure до акції хеджується, а не утримується як ставка. Якщо market maker зрештою отримує довгу або коротку позицію, зазвичай це результат виконання ордерів інших учасників.
Чому два strikes однієї акції мають різну implied volatility?
Кожен strike є окремим контрактом із власними попитом і пропозицією. Skew — це назва для структури, за якої strikes нижче й вище поточної ціни котируються з різною volatility навіть за тієї самої експірації.
Чи означає зростання implied volatility, що акція рухатиметься?
Ні. Implied volatility — це ціна опціону, виражена у відсотках. А ціна — це те, скільки учасники ринку готові платити сьогодні. Фактичні рухи постійно виявляються як нижчими, так і вищими за рівень, закладений ринком опціонів.
Чи може market maker визначити, хто купує?
В електронній торгівлі зазвичай ні. Стрічка показує контракти, strikes, експірації та часові позначки, але не містить імені клієнта. На біржовому майданчику market maker міг бачити брокера в натовпі, однак після переходу на екрани цей контекст зник.
Кожна наведена вище панель містить SQL-код, за яким її побудовано. Тому той самий показник можна розрахувати для будь-якого іншого активу або будь-якого іншого тижня. Сформулюйте запит простою англійською мовою в терміналі Strasmore.