Ціна event contract як ймовірність
Event contract виплачує $1 або $0, тому його ціна відображає ймовірність. Дізнайтеся, чому Yes плюс No коштує понад $1 і як врахувати spread.
Ціна event contract — це ймовірність, до якої додано spread. Контракт виплачує $1.00, якщо заявлена подія відбувається, і $0.00, якщо ні. Саме фіксована виплата робить цю арифметику можливою: 30 центів за контракт із виплатою один долар означають, що ринок оцінює ймовірність приблизно у 30%. Щоб коректно інтерпретувати ціну, потрібно врахувати spread і механіку, що визначає розрахунок за контрактом.
Що ціна event contract говорить про ймовірність
Усе випливає з виплати. Якщо придбати контракт Yes за ціною p, ви отримаєте $1.00, якщо результат буде визначено як Yes, і нічого — якщо результат буде визначено як No. За великої кількості повторень середня виплата дорівнює фактичній імовірності результату Yes. Якщо сплатити саме цю ймовірність, угода буде беззбитковою. Сплачена ціна і є беззбитковою ймовірністю, тому одне число виконує обидві функції.
Чотири терміни, визначені один раз:
- Контракт Yes: виплачує $1.00, якщо подія відбувається, і $0.00 — в іншому разі.
- Контракт No: виплачує $1.00, якщо подія не відбувається. Yes і No — це дві сторони одного результату.
- Розрахунок: момент, коли контракт закривається за результатом і одна зі сторін отримує долар.
- Джерело визначення результату: названий звіт або стрічка даних, на основі яких проводиться розрахунок за контрактом. Виплата здійснюється відповідно до того, що вказує це джерело, а не відповідно до фактичної події.
Котирування event contracts не є частиною набору даних, на якому базується ця сторінка. Кожна панель нижче вимірює однакову арифметичну залежність там, де її можна безпосередньо виміряти, — у лістингових US equity options. Delta call-опціону змінюється від 0 до 1 і приблизно відображає ринкові шанси на те, що контракт експірує у грошах. Це те саме бінарне питання, яке ставить event contract: чи буде ціна вище заданої межі на дату розрахунку, чи ні. Delta є наближенням до цієї ймовірності та має risk-neutral характер, а не є прогнозом. Обидва обмеження відображені на панелях. У посібнику про delta опціону розглянуто сам цей показник.
Чому сума Yes і No перевищує $1?
Yes і відповідний No охоплюють усі можливі результати, і виплату здійснює рівно один із них. В опціонному ланцюжку ця сама пара є call- і put-опціонами з одним strike та однією датою експірації: call завершує торги в грошах вище за strike, а put — нижче за нього. Їхні ймовірності мають у сумі становити 100%. Нижче наведено цю пару в одному ланцюжку SPY за один день, згруповану в діапазони по 2% навколо поточної ціни.
Точний SQL-код для кожного числа
WITH chain AS (
SELECT strike_price,
toFloat64(any(underlying_close)) AS spot,
avgIf(delta, delta > 0) AS call_delta,
avgIf(-delta, delta < 0) AS put_delta_abs,
countIf(delta > 0) AS calls,
countIf(delta < 0) AS puts
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND date = toDate('2026-06-30')
AND expiration_date = toDate('2026-07-31')
AND iv_converged = 1
AND volume > 0
GROUP BY strike_price
HAVING calls > 0 AND puts > 0
),
banded AS (
SELECT toInt32(round(100 * (toFloat64(strike_price) / spot - 1) / 2) * 2) AS band,
call_delta,
put_delta_abs
FROM chain
)
SELECT concat(if(band > 0, '+', ''), toString(band), '% vs spot') AS strike_vs_spot,
round(100 * avg(call_delta), 1) AS yes_prob_pct,
round(100 * avg(put_delta_abs), 1) AS no_prob_pct,
round(100 * avg(call_delta + put_delta_abs), 1) AS pair_total_pct,
count() AS strikes
FROM banded
WHERE abs(band) <= 8
GROUP BY band
ORDER BY bandНа рівні -8% vs spot сторона call показує 91.6%, а сторона put — 7.8%. Разом це становить 99.5%. На дальньому кінці шкали, +6% vs spot, значення дорівнюють 3.6% і 82.5%, а загальна сума — 86.2%. Усі 8 діапазонів після округлення дають 100%. Ця рівна лінія на графіку є обмеженням, якому підпорядковується кожен бінарний ринок. Сукупне позиціонування з обох боків відображає співвідношення put до call.
Модельні значення узгоджуються. Котирування — ні. Припустімо, контракт має bid 62 і ask 66, а його сторона No — bid 36 і ask 40. Купуючи Yes за 66 і No за 40, ви сплачуєте $1.06 за позицію, гарантована виплата якої становить $1.00. Продаючи обидві сторони за їхніми bid, ви отримуєте 98 центів, маючи зобов’язання на $1.00. Різниця у 6 центів між двома ask — це overround, або vig у термінології букмекерів. Саме її отримують майданчик і market maker за підтримання котирувань. На сторінці спреду bid-ask пояснюється, чому ця різниця взагалі виникає.
De-vig-розрахунок крок за кроком
На вході — дві котирувальні ціни. На виході — дві справедливі ймовірності, сума яких дорівнює одиниці.
- Візьміть mid кожної сторони. Mid для Yes становить 64 центи, для No — 38 центів.
- Додайте їх. Сума в книзі заявок становить 102 центи.
- Поділіть кожен mid на цю суму. 64 / 102 = 62,7%. 38 / 102 = 37,3%.
- Перевірте суму. Тепер пара дає 100%.
Це і є весь зміст de-vigging. Так само нормалізує ймовірності беттор, коли працює з десятковими коефіцієнтами.
Тепер застосуймо цей розрахунок до ринку з вужчим спредом. Для того самого контракту котирування становить 63 bid і 64 ask, а для No — 36 bid і 37 ask. Mid дорівнюють 63,5 і 36,5, сума в книзі заявок — рівно 100 центів, а de-vig-ймовірність — 63,5%. Два результати — 62,7% для широкого ринку та 63,5% для вузького — відрізняються менш ніж на один відсотковий пункт. Але діапазон, який обґрунтовано випливає з цих котирувань, не є таким вузьким. Будь-яка ймовірність між bid на рівні 62 центів і ask на рівні 66 центів узгоджується з широким котируванням. Отже, спред у 4 центи визначає коефіцієнти з точністю приблизно до 4 пунктів — і не більше. Запис «62,7%» для ринку зі спредом у 4 центи створює враження точності до трьох знаків після коми, якої цей ринок не містить. Ширина спреду визначає точність.
Чи означає ціна 30%, що це відбувається у 30% випадків?
Перевірка калібрування дає відповідь: потрібно зібрати всі випадки, коли ринок оцінював імовірність близько 30%, а потім підрахувати, як часто це справді відбувалося. Йдеться про кожен call-контракт на SPY у базі даних із січня 2022 року, зафіксований приблизно за 30 днів до експірації. Контракти розподілили за діапазонами implied probability і порівняли з тим, чи закрився SPY вище відповідного strike у дату експірації.
Точний SQL-код для кожного числа
WITH px AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session,
argMax(toFloat64(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('2022-01-01')
AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY session
),
snap AS (
SELECT ticker AS contract,
argMin(delta, abs(days_to_expiry - 30)) AS implied_prob,
toFloat64(any(strike_price)) AS strike,
any(expiration_date) AS expiry
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND date >= toDate('2022-01-01')
AND expiration_date <= toDate('2026-06-30')
AND days_to_expiry BETWEEN 25 AND 35
AND iv_converged = 1
AND volume > 0
AND delta > 0.02
AND delta < 0.98
GROUP BY contract
)
SELECT multiIf(implied_prob < 0.10, '2-10%',
implied_prob < 0.20, '10-20%',
implied_prob < 0.30, '20-30%',
implied_prob < 0.40, '30-40%',
implied_prob < 0.50, '40-50%',
implied_prob < 0.60, '50-60%',
implied_prob < 0.70, '60-70%',
implied_prob < 0.80, '70-80%',
implied_prob < 0.90, '80-90%',
'90-98%') AS implied_bucket,
count() AS contracts,
round(100 * avg(implied_prob), 1) AS implied_prob_pct,
round(100 * avg(close_px > strike), 1) AS finished_above_pct
FROM snap
INNER JOIN px ON px.session = snap.expiry
GROUP BY implied_bucket
ORDER BY implied_prob_pctКолонка implied за конструкцією зростає вздовж шкали. Колонка realized показує те, чого ніхто не знав наперед. У нижньому діапазоні 2-10% середня implied probability становила 4.7% для 4276 контрактів, а ціна завершилася вище strike у 4.9% випадків. У верхньому діапазоні 90-98% середня implied probability становила 94.3%, а результат виявився позитивним у 97.8% випадків. Реалізована частка в нижній частині шкали значно нижча за реалізовану частку у верхній частині. Саме так виглядає калібрування, коли воно загалом працює.
З будь-якою такою таблицею пов’язані два застереження. Важливим є часовий період: вибірка, що охоплює переважно зростання цін, підвищує показник realized у кожному діапазоні call-опціонів, тоді як інший період дасть інший результат. Крім того, delta показує, яка ймовірність забезпечує внутрішню узгодженість ціноутворення, а не те, у що вірить будь-який прогнозист. Один і той самий ланцюжок опціонів оцінює весь розподіл, а не лише один поріг (очікуваний рух).
Якщо звузити вибірку до контрактів, які ринок оцінював як підкидання монети — близько 50 центів на долар, — для шести відомих компаній:
Точний SQL-код для кожного числа
WITH px AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS session,
argMax(toFloat64(close), window_start) AS close_px
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'KO', 'XOM')
AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2023-01-01')
AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY ticker, session
),
snap AS (
SELECT underlying_symbol AS symbol,
ticker AS contract,
argMin(delta, abs(days_to_expiry - 30)) AS implied_prob,
toFloat64(any(strike_price)) AS strike,
any(expiration_date) AS expiry
FROM global_markets.options_greeks
WHERE underlying_symbol IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'KO', 'XOM')
AND date >= toDate('2023-01-01')
AND expiration_date <= toDate('2026-06-30')
AND days_to_expiry BETWEEN 25 AND 35
AND iv_converged = 1
AND volume > 0
AND delta BETWEEN 0.40 AND 0.60
GROUP BY symbol, contract
)
SELECT snap.symbol AS symbol,
count() AS contracts,
round(100 * avg(implied_prob), 1) AS implied_prob_pct,
round(100 * avg(close_px > strike), 1) AS finished_above_pct
FROM snap
INNER JOIN px ON px.ticker = snap.symbol AND px.session = snap.expiry
GROUP BY symbol
ORDER BY finished_above_pct DESCImplied probability за конструкцією близька до 50% у кожному рядку. Колонка realized розходиться: SPY завершилися вище свого strike у 68.4% випадків із 4785 контрактів, тоді як для XOM цей показник становив 49.9%. 6 назв компаній, однакова implied probability і широкий діапазон фактичних результатів. Ціна близько 50 центів описує ринкові шанси. Водночас будь-який окремий контракт усе одно розраховується за $1.00 або $0.00.
Яка точка беззбитковості для контракту за $0.70?
Контракт, придбаний за 70 центів, виплачує $1.00 у разі Yes і нічого — у разі No. Прибуток становить 30 центів, збиток — 70 центів, а ймовірність беззбитковості точно відповідає ціні. За справжньої ймовірності 70% позиція має рівно 50% шансів на прибуток, але з додатковими умовами. Вище за 70% математика працює на користь покупця, нижче — проти нього, ще до врахування витрат.
Витрати зміщують цю межу нерівномірно. Якщо додати один цент витрат на повний цикл операції до контракту за 70 центів, точка беззбитковості зміститься приблизно з 70% до 71%. Для такої позиції це похибка округлення. Якщо додати той самий цент до контракту за 5 центів, точка беззбитковості зросте з 5% до 6%, забравши п’яту частину теоретичної переваги. Фіксовані комісії найбільше шкодять дешевим довгим ставкам, де комісія становить найбільшу частку сплаченої ціни. Тип ордера працює так само: виконання за ask означає сплату повного спреду, тоді як лімітний ордер, що залишається в книзі, виконується за вказаною вами ціною і може так і не бути виконаний (ринковий ордер проти лімітного ордера).
Чому майже гарантований результат торгується по $0,97?
Навіть результат, щодо якого ніхто не сперечається, рідко торгується по $1,00. У цих останніх 3 центах відображаються чотири чинники:
- Вартість грошей у часі. Долар надійде під час розрахунку. Сплата 97 центів сьогодні за $1,00 через три місяці означає дохідність на вкладений капітал, а ці кошти можна використати інакше (розміщення вільних коштів).
- Ризик джерела розрахунку. Контракт розраховується на основі даних, опублікованих зазначеним джерелом, за його графіком. Перегляди даних, затримки й неоднозначні формулювання залишаються чинниками ризику навіть щодо погодженого результату.
- Сам спред. Якщо котирування становить 96 на bid і 98 на ask, mid дорівнює 97 центам, але угод по 97 не відбувається. У відсотковому вираженні спред часто найбільший саме на крайніх рівнях.
- Хвостовий ризик. Слово «гарантований» часто вживають без достатніх підстав. Контракти розраховуються відповідно до визначення в правилах.
Зближення ціни з результатом можна виміряти. Візьмімо call-опціони на SPY, ціна яких за місяць до експірації була близькою до рівня 50/50, розділімо їх за фактичним результатом і подивімося на середню implied probability у шести контрольних точках.
Точний SQL-код для кожного числа
WITH px AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session,
argMax(toFloat64(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('2025-06-01')
AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY session
),
coin_flips AS (
SELECT ticker AS contract
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND date >= toDate('2025-06-01')
AND expiration_date <= toDate('2026-06-30')
AND days_to_expiry BETWEEN 28 AND 32
AND iv_converged = 1
AND volume > 0
AND delta > 0
GROUP BY contract
HAVING avg(delta) BETWEEN 0.35 AND 0.65
),
obs AS (
SELECT g.days_to_expiry AS dte,
g.delta AS implied_prob,
if(px.close_px > toFloat64(g.strike_price), 1, 0) AS finished_above
FROM global_markets.options_greeks AS g
INNER JOIN coin_flips AS c ON g.ticker = c.contract
INNER JOIN px ON px.session = g.expiration_date
WHERE g.underlying_symbol = 'SPY'
AND g.date >= toDate('2025-06-01')
AND g.expiration_date <= toDate('2026-06-30')
AND g.iv_converged = 1
AND g.volume > 0
AND g.delta > 0
AND (g.days_to_expiry BETWEEN 28 AND 32
OR g.days_to_expiry BETWEEN 19 AND 23
OR g.days_to_expiry BETWEEN 12 AND 16
OR g.days_to_expiry BETWEEN 6 AND 8
OR g.days_to_expiry BETWEEN 3 AND 4
OR g.days_to_expiry <= 1)
)
SELECT multiIf(dte >= 28, '30 days out',
dte >= 19, '21 days out',
dte >= 12, '14 days out',
dte >= 6, '7 days out',
dte >= 3, '3 days out',
'1 day out') AS checkpoint,
round(100 * avgIf(implied_prob, finished_above = 1), 1) AS eventual_yes_pct,
round(100 * avgIf(implied_prob, finished_above = 0), 1) AS eventual_no_pct,
count() AS contract_days
FROM obs
GROUP BY checkpoint
HAVING countIf(finished_above = 1) > 0 AND countIf(finished_above = 0) > 0
ORDER BY avg(dte) DESCНа 30 days out контракти, які зрештою завершилися вище за strike, мали середню implied probability на рівні 52.6% проти 47.8% для контрактів, які цього не зробили. На 1 day out ті самі дві групи показували 79.8% і 14.4% відповідно. Такий поділ зроблено ретроспективно. На першій контрольній точці ніхто, аналізуючи ланцюжок котирувань, не міг відрізнити ці дві групи. Саме в такому стані завжди перебуває активний event contract. Визначеність настає в дату розрахунку, а ціна поступово рухається до неї. Правила розрахунку встановлюють точний момент: опціони з розрахунком AM і PM показують, наскільки важливою може бути ця деталь, а implied volatility є відповіддю того самого ланцюжка на питання про масштаб руху, а не про його напрям.
Примітки щодо даних та обмежень
Delta є наближеним показником ціни Yes, але не тотожна їй. Вона наближено відображає risk-neutral odds завершення контракту in the money і дещо відрізняється від модельної ймовірності тієї самої події. У цьому аналізі результати визначаються шляхом порівняння ціни закриття регулярної сесії в дату експірації зі strike. Це наближає розрахунок, але не відтворює офіційне значення розрахункової ціни. Для кожної опціонної панелі застосовано фільтр за збіжною implied volatility і ненульовим обсягом цього контракту в цю дату, тому контракти з низькою активністю не потрапляють до вибірки. Кожен контракт включається до панелей калібрування один раз — у знімку даних, найближчому до 30 днів до експірації.
Поширені запитання про ціноутворення event contracts
Чи є ціна event contract такою самою, як імовірність?
Це імовірність із двома коригуваннями. Котирування включає spread, який стягують майданчик і market makers, а також дисконтує долар, що буде отриманий під час розрахунку, а не сьогодні. Якщо виключити обидва чинники, залишиться ринкова оцінка ймовірності, за якої відбувається балансування ринку.
Що дає de-vigging двостороннього ринку?
Воно масштабує дві mid-ціни так, щоб у сумі вони дорівнювали 100%. Додайте mid-ціну Yes і mid-ціну No, а потім поділіть кожну з них на цю суму. Якщо Yes котирується по 64 центи, а No — по 38 центів, загальна сума становить 102 центи, а після de-vigging пара дорівнює 62,7% і 37,3%.
Чому ціни Yes і No в сумі перевищують долар?
Одна з двох сторін гарантовано виплатить $1.00, тому за відсутності фрикцій пара мала б коштувати рівно $1.00. Додаткові центи на стороні ask — це overround, тобто дохід від spread, закладений у двосторонній ринок. Якщо продати обидві сторони, у підсумку ви отримаєте менше долара — дзеркальне відображення того самого розриву.
Чи означає ціна контракту 90 центів, що він програє один раз із десяти?
Приблизно так, якщо ринок добре відкалібрований на великій кількості подібних контрактів. На панелі SPY вище bucket 90-98% мав середню implied probability 94.3% і завершувався вище свого strike у 97.8% випадків. Окремий контракт у підсумку все одно розраховується за одним із двох варіантів: один долар або нуль.
Наскільки широкий spread змінює implied probability?
Приблизно на ширину spread. Ринок зі spread в 1 цент обмежує оцінку ймовірності діапазоном в один процентний пункт. Ринок зі spread у 4 центи залишає діапазон у 4 процентні пункти, і будь-яка ймовірність у його межах узгоджується з котируванням.
Усі наведені вище числа отримано зі stored query за даними котирувань listed contracts. SQL-код для кожної панелі доступний в один клік. Виконайте той самий розрахунок de-vig для актуального ланцюжка контрактів у терміналі Strasmore.