Strasmore Research
Навчання Matt ConnorВід Matt Connor

Put-Call Parity: пояснення на реальних цифрах

Put-call parity пов’язує call, put, акцію та грошову позику. Розбір реального ланцюжка опціонів, а також implied dividend і borrow rate.

Put-call parity — це фіксована арифметична залежність, яка пов’язує call, відповідний put, базову акцію та грошову позику в єдину ціну. Для European options з однаковими strike та датою експірації ціна call мінус ціна put дорівнює дисконтованій різниці між форвардною ціною акції та цим strike. Якщо застосувати цю залежність до реального ланцюжка, вона дає ціну акції, яку мають на увазі options. Вона рідко збігається з ціною на екрані. Різниця між ними відображає дивіденди та ставку фінансування.

Що насправді означає put-call parity

У розгорнутому вигляді залежність має такий вигляд: C - P = S - PV(K) - PV(D). C — ціна call, а P — ціна put з однаковими strike та датою експірації. S — поточна ціна акції. PV(K) — strike, дисконтований за ставкою фінансування, а PV(D) — поточна вартість дивідендів, які акція виплатить до експірації. Call-опціони дають право купити акцію за strike, а put-опціони — право продати її за цим strike.

За цією алгеброю стоїть єдина конструкція. Купівля call і продаж put з одним strike дають володіння акцією за цим strike на дату експірації незалежно від руху ціни: якщо ціна вище strike, інвестор виконує call; якщо нижче — йому призначають put. Ця пара є синтетичною довгою позицією в акції, придбаною в кредит. Оплата за акцію відбувається на дату експірації, а не сьогодні, і проміжні дивіденди не надходять. Put-call parity враховує лише ці дві поправки.

Уявімо акцію за $100, call з експірацією через один рік і strike $100 за ціною $9, відповідний put за ціною $5 та відсутність дивідендів у цей період. Пара коштує $4. Додаємо strike — і options дають ціну акції $104, хоча на екрані вона котирується по $100. Ці $4 — відсотки за відкладену на один рік оплату, приблизно за ставкою чотири відсотки. Цифри наведено для ілюстрації; їх підібрано для простого розрахунку.

Ціна акції, яку мають на увазі options

Після перестановки членів залежність дає окрему ціну акції: ціна call мінус ціна put плюс strike. Якщо виконати це віднімання для кожного strike в межах однієї експірації, результати відрізнятимуться лише на кілька центів. Це синтетична ціна акції. Різниця між нею та ціною закриття на екрані — basis, або carry, синтетичної позиції. Відсотки до експірації збільшують basis. Дивіденди до експірації його зменшують.

Що формує розрив у put-call parity

Є чотири чинники — і лише чотири:

  • Відсотки до експірації. Оплата strike пізніше, а не зараз, є позикою на весь строк контракту, і пара має ціну цієї позики.
  • Дивіденди до експірації. Синтетичний власник їх не отримує, тому кожен дивіденд, для якого ex-dividend date настає до експірації, зменшує цей розрив.
  • Вартість запозичення акцій. Учасник, який займає інший бік і продає акцію в short, сплачує комісію за stock borrow. Вона відображається в тому самому розриві.
  • Вартість дострокового виконання для American contracts, яка перетворює рівність на діапазон.

Та сама залежність для різних експірацій

Відсотки нараховуються щодня, а дивіденди виплачуються у визначені дати. Тому basis є кривою, а не одним числом. Опціонний ланцюжок дає ще один спосіб прочитати цю криву. Put-call parity пов’язує call і put з одним strike з одним forward. Тому модель, яка використовує власні ставку та дивідендне припущення ланцюжка, дає однакову implied volatility для обох legs. Різниця між legs означає різницю між припущеннями.

Ця панель зафіксована в минулому, тому цифри на цій сторінці не змінюються: щомісячні експірації AAPL з липня 2026 року до січня 2027 року, за даними сесії 16 червня 2026 року, для strike, найближчого до ціни закриття в кожній експірації.

ЗапитІмплайд-волатильність колів і путів поблизу страйку на місячних експіраціях AAPL, 16 червня 2026
Точний SQL-код для кожного числа
SELECT
    expiry_date,
    days_out,
    concat('$', toString(argMin(strike, atm_gap)))                        AS atm_strike_used,
    round(100 * argMin(call_iv, atm_gap), 1)                              AS call_iv_pct,
    round(100 * argMin(put_iv, atm_gap), 1)                               AS put_iv_pct,
    round(100 * (argMin(call_iv, atm_gap) - argMin(put_iv, atm_gap)), 1)  AS iv_gap_pct
FROM
(
    SELECT
        expiry_date,
        days_out,
        strike,
        call_iv,
        put_iv,
        abs(strike / spot_close - 1) AS atm_gap
    FROM
    (
        SELECT
            toString(expiration_date)                                    AS expiry_date,
            max(dateDiff('day', toDate(date), toDate(expiration_date)))  AS days_out,
            round(toFloat64(strike_price), 2)                            AS strike,
            maxIf(toFloat64(implied_volatility), leg = 'C')              AS call_iv,
            maxIf(toFloat64(implied_volatility), leg = 'P')              AS put_iv,
            max(toFloat64(underlying_close))                             AS spot_close
        FROM
        (
            SELECT
                date,
                expiration_date,
                strike_price,
                implied_volatility,
                underlying_close,
                upper(substring(ticker, length(ticker) - 8, 1)) AS leg
            FROM global_markets.options_greeks
            WHERE underlying_symbol = 'AAPL'
              AND date = '2026-06-16'
              AND expiration_date BETWEEN '2026-07-01' AND '2027-01-31'
              AND toDayOfWeek(toDate(expiration_date)) = 5
              AND toDayOfMonth(toDate(expiration_date)) BETWEEN 15 AND 21
              AND iv_converged = 1
              AND volume > 0
              AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.03
        )
        GROUP BY expiry_date, strike
        HAVING countIf(leg = 'C') > 0
           AND countIf(leg = 'P') > 0
    )
)
GROUP BY expiry_date, days_out
ORDER BY expiry_date
Run this yourself

На 2026-07-17, за 31 днів до експірації, для strike $300 call мав implied volatility 21.9 відсотка, а put — 20.5 відсотка. Розрив становив 1.4 пунктів. На 2027-01-15, за 213 днів до експірації, розрив становить 0.3 пунктів. Обидва legs рухаються узгоджено вниз упродовж усього календаря.

Як отримати implied dividend або implied borrow rate

Щоб отримати implied dividend, візьміть дві експірації, які охоплюють ex-dividend date компанії, розрахуйте basis для кожної та відніміть один результат від іншого. Додаткові відсотки за додаткові дні невеликі, і їх можна розрахувати за поточною ставкою Treasury bill. Залишок — це грошова сума, яку, за очікуваннями ланцюжка, буде виплачено у вигляді дивіденду між цими датами. Порівняйте її з оголошеним графіком на нашій сторінці ex-dividend dates та options — і дивідендне припущення самого ланцюжка буде очевидним.

Щоб отримати implied borrow rate, виконайте розрахунок у зворотному напрямку. Зафіксуйте дивіденд на оголошеному рівні, а фінансування — на ставці Treasury bill. Розрахуйте basis, який дають ці два параметри, і порівняйте його з basis, що котирується в ланцюжку. Для акції, яку легко позичити, результати збігаються. Для акції, яку складно позичити, котируваний basis буде нижчим за розрахунковий. Річний дефіцит і є borrow fee, яку options закладають у ціну.

Спочатку потрібно знати, які саме дві ціни знімати з екрана. Розкладку описано в нашому довіднику з опціонного ланцюжка.

Коли American options порушують рівність

American options можна виконати в будь-який день до експірації. European options можна виконати лише на дату експірації, і put-call parity як строга рівність стосується саме European options. Для American contracts вона перетворюється на діапазон. Він ширший з того боку, де право на дострокове виконання має грошову вартість. Дострокове виконання American call має сенс лише безпосередньо перед дивідендом, який перевищує залишкову часову вартість call. Саме тому дострокове виконання call найчастіше відбувається в день перед ex-dividend date.

Та сама перевірка volatility виконується для всіх strike в межах однієї експірації. Саме тут видно ширину діапазону.

ЗапитІмплайд-волатильність колів і путів за однаковими страйками AAPL, експірація 18 вересня 2026
Точний SQL-код для кожного числа
SELECT
    strike,
    round(100 * call_iv, 1)             AS call_iv_pct,
    round(100 * put_iv, 1)              AS put_iv_pct,
    round(100 * (call_iv - put_iv), 1)  AS iv_gap_pct
FROM
(
    SELECT
        round(toFloat64(strike_price), 2)                AS strike,
        maxIf(toFloat64(implied_volatility), leg = 'C')  AS call_iv,
        maxIf(toFloat64(implied_volatility), leg = 'P')  AS put_iv
    FROM
    (
        SELECT
            strike_price,
            implied_volatility,
            upper(substring(ticker, length(ticker) - 8, 1)) AS leg
        FROM global_markets.options_greeks
        WHERE underlying_symbol = 'AAPL'
          AND date = '2026-06-16'
          AND expiration_date = '2026-09-18'
          AND iv_converged = 1
          AND volume > 0
          AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.15
          AND toUInt32(toFloat64(strike_price)) % 5 = 0
    )
    GROUP BY strike
    HAVING countIf(leg = 'C') > 0
       AND countIf(leg = 'P') > 0
)
ORDER BY strike
Run this yourself

Дві лінії майже збігаються на всій шкалі strike. Для strike 255 call дає implied volatility 30.5 відсотка, а put — 29.3 відсотка. Розрив становить 1.2 пунктів. Якщо на крайніх strike з’являється розрив, можливі причини — застарілий closing print з одного боку, низька ліквідність цього strike, премія за дострокове виконання, яку модель не враховує, або дивідендне припущення, відмінне від того, яке закладено в ціну ланцюжка.

Conversions і reversals — операції, що підтримують залежність

Conversion — це довга позиція в акціях, short call і long put з одним strike. Reversal — дзеркальна конструкція. Обидва пакети при експірації не залежать від ціни акції. Залишаються лише умови фінансування та дивідендів. Market makers відкривають такі позиції, коли розбіжність у парі стає достатньою для покриття їхніх витрат. Цей потік повертає котирування до лінії parity. Перевага належить trading desks із дешевим фінансуванням і доступом до stock loan. Ця сторінка не є інструкцією з торгівлі такими конструкціями.

Чим put-call parity відрізняється від put/call ratio

Ці поняття часто плутають. Put-call parity — це арифметична залежність між одним call і одним put з одним strike. Put/call ratio підраховує обсяг торгів або open interest у всьому ланцюжку і використовується як індикатор настроїв. Parity показує, скільки має коштувати пара відносно акції. Ratio показує, що саме торгували учасники.

Примітки щодо даних і методології

Цифри — це денні closing implied volatilities для контрактів AAPL станом на 16 червня 2026 року. Для кожного strike call зіставлявся з put, а ціна базового активу бралася з тієї самої сесії. До вибірки включалися лише контракти з обсягом торгів понад нуль за день і збіжною implied volatility. Для читабельності шкала strike використовує крок у п’ять доларів. У панелі експірацій обрано strike, найближчий до ціни закриття, для кожної щомісячної експірації. Літера call або put береться з дев’ятого символу з кінця символу контракту OCC. Опціони AAPL мають American style, тому кожна цифра тут включає будь-яку премію за дострокове виконання, яку ринок закладав у ціну того дня.

FAQ

Яка формула put-call parity?

Для European options з однаковими strike та датою експірації ціна call мінус ціна put дорівнює ціні акції мінус поточна вартість strike і мінус поточна вартість дивідендів, виплачених до експірації. Після перестановки членів: ціна call мінус ціна put плюс strike дає ціну акції, яку мають на увазі options.

Чи діє put-call parity для American options?

Не як строга рівність. Право на дострокове виконання перетворює її на діапазон навколо European relation.

Як розрахувати implied dividend за опціонним ланцюжком?

Візьміть call і put з одним strike та датою експірації, розрахуйте ціну call мінус ціну put плюс strike і відніміть ціну акції. Цей розрив дорівнює відсоткам до експірації мінус очікувані дивіденди. Розрахуйте відсотки за ставкою Treasury bill за відповідну кількість днів. Залишок — це дивіденд, який закладає в ціну ланцюжок.

Чому call і put з однаковим strike мають однакову implied volatility?

Parity пов’язує ціни двох options без volatility term у самій залежності. Тому модель, яка оцінює один контракт за заданими forward і discount rate, оцінює інший за тими самими параметрами.


Кожна панель містить SQL-запит, на основі якого її побудовано. Щоб запустити таку саму шкалу для іншого активу або дальшої експірації, сформулюйте запит звичайною англійською мовою в терміналі Strasmore.

#put-call parity#options#arbitrage#dividends#synthetics