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

Як розрахувати коефіцієнт put/call

Як розраховують коефіцієнт put/call: формули для обсягу й open interest, чому індексні значення вищі та які показники вважають нормальними у 2026 році.

Коефіцієнт put/call розраховують діленням кількості укладених put-контрактів на кількість укладених call-контрактів за один і той самий період. Якщо протягом торгової сесії було укладено 250 000 put-контрактів і 500 000 call-контрактів, коефіцієнт становить 0,50. Усі дискусії щодо цього індикатора — обсяг проти open interest, акції проти індексу — зрештою зводяться до того, що саме врахували в чисельнику та знаменнику. Для базового визначення дивіться що таке коефіцієнт put/call. На цій сторінці наведено розрахунок.

Формула put/call ratio: покрокове пояснення

Формула має два вхідні показники та одну операцію: підрахувати кількість укладених put-опціонів, підрахувати кількість укладених call-опціонів і поділити перший показник на другий. Put-опціон дає його власнику право продати 100 акцій базового активу за фіксованою ціною виконання до дати експірації включно. Call-опціон дає право купити актив за фіксованою ціною виконання. Обсяг показує кількість контрактів, які змінили власника протягом сесії. На початку наступної торгової сесії цей показник обнуляється.

У підрахунку немає жодного зважування. Один контракт із далекого out-of-the-money weekly має таку саму вагу, як один контракт за найактивнішою ціною виконання в опціонному ланцюжку. Жоден із них не коригується з урахуванням суми коштів під ризиком. Це співвідношення кількості контрактів.

На результат впливає те, які саме контракти враховуються. Панель нижче виконує однаковий розрахунок для восьми ліквідних активів протягом повного місяця.

ЗапитОбсяги put і call для восьми відомих компаній, липень 2026
Точний SQL-код для кожного числа
SELECT
    underlying_symbol                 AS symbol,
    sumIf(volume, right_letter = 'P') AS put_volume,
    sumIf(volume, right_letter = 'C') AS call_volume,
    round(toFloat64(sumIf(volume, right_letter = 'P'))
        / toFloat64(sumIf(volume, right_letter = 'C')), 2) AS put_call_ratio
FROM
(
    SELECT
        underlying_symbol,
        volume,
        substring(ticker, length(ticker) - 8, 1) AS right_letter
    FROM global_markets.options_greeks
    WHERE date >= '2026-07-01'
      AND date <  '2026-08-01'
      AND underlying_symbol IN ('SPY', 'QQQ', 'IWM', 'AAPL', 'MSFT', 'NVDA', 'TSLA', 'KO')
      AND volume > 0
)
GROUP BY symbol
HAVING call_volume > 0 AND put_volume > 0
ORDER BY put_call_ratio DESC
Run this yourself

У липні 2026 року IWM мав найвище співвідношення серед восьми активів — 3.11 put-опціонів на один call-опціон, а MSFT — найнижче, на рівні 0.38. Одна формула, один місяць — і розрив між активом із найвищим та найнижчим показником набагато перевищує щоденні коливання, про які зазвичай пишуть. Співвідношення без зазначення його категорії майже не містить інформації.

На основі обсягу чи відкритого інтересу

Чисельник і знаменник можуть визначатися двома різними показниками.

Варіант на основі обсягу враховує кількість контрактів, укладених протягом певного періоду. Це поточний показник, який кожної сесії починається з нуля і показує, що учасники робили сьогодні. Саме цей варіант використовують у всіх заголовкових коефіцієнтах у ринкових оглядах.

Варіант на основі відкритого інтересу ділить кількість непогашених put-опціонів на кількість непогашених call-опціонів. Відкритий інтерес — це кількість контрактів, які були відкриті, але ще не закриті, не виконані й не погашені. Це запасовий показник: накопичена позиція, а не активність за день. Тому він змінюється повільно. Якщо протягом сесії 30 000 put-опціонів переходять від одних власників до інших, обсяг зростає на 30 000, а відкритий інтерес не змінюється. У матеріалі Обсяг опціонів і відкритий інтерес описано відповідний облік.

Розглянемо умовну акцію, за якою у вівторок наприкінці сесії залишалися 40 000 непогашених put-опціонів і 50 000 непогашених call-опціонів. Коефіцієнт відкритого інтересу становив 0.80. У середу торгувалися 30 000 put-опціонів і 10 000 call-опціонів. Коефіцієнт на основі обсягу становив 3.00. Обидва показники описують один і той самий опціонний ланцюжок в один і той самий день. Вони відрізняються майже вчетверо, і обидва є правильними. Коефіцієнти відкритого інтересу також лежать в основі розрахунку max pain, де страйки зважуються за кількістю непогашених контрактів, а не за кількістю укладених контрактів.

Поточні показники різко коливаються. Нижче наведено денний коефіцієнт на основі обсягу для одного ETF і однієї окремої акції за той самий місяць.

ЗапитДенне співвідношення обсягів put/call: SPY проти AAPL, липень 2026
Точний SQL-код для кожного числа
SELECT
    toString(d)                                                 AS session_date,
    concat(formatDateTime(d, '%b '), toString(toDayOfMonth(d))) AS day_label,
    round(toFloat64(sumIf(volume, sym = 'SPY' AND right_letter = 'P'))
        / toFloat64(sumIf(volume, sym = 'SPY' AND right_letter = 'C')), 2)  AS spy_put_call_ratio,
    round(toFloat64(sumIf(volume, sym = 'AAPL' AND right_letter = 'P'))
        / toFloat64(sumIf(volume, sym = 'AAPL' AND right_letter = 'C')), 2) AS aapl_put_call_ratio
FROM
(
    SELECT
        date                                     AS d,
        underlying_symbol                        AS sym,
        volume,
        substring(ticker, length(ticker) - 8, 1) AS right_letter
    FROM global_markets.options_greeks
    WHERE date >= '2026-07-01'
      AND date <  '2026-08-01'
      AND underlying_symbol IN ('SPY', 'AAPL')
      AND volume > 0
)
GROUP BY d
HAVING countIf(sym = 'SPY' AND right_letter = 'C') > 0
   AND countIf(sym = 'AAPL' AND right_letter = 'C') > 0
ORDER BY d
Run this yourself

На Jul 1 для SPY було зафіксовано 1.1 проти 0.49 для AAPL. На Jul 31 показники становили відповідно 2 і 0.55. Протягом 22 сесій денні значення коливалися, а два ряди на графіку перебували на різних рівнях. Різниця між рівнями є кориснішою з цих двох характеристик.

Акції, індекси, ETP і сукупний показник: чотири коефіцієнти Cboe

Показник, який називають «коефіцієнтом put/call», походить із щоденної ринкової статистики Cboe, де публікується кілька таких коефіцієнтів. Категорії, у термінології Cboe:

  • Коефіцієнт put/call для акцій: опціони на окремі акції.
  • Коефіцієнт put/call для індексів: опціони на індекси, зокрема SPX і VIX.
  • Коефіцієнт put/call для біржових продуктів: опціони на ETF, зокрема SPY, QQQ та IWM.
  • Сукупний коефіцієнт put/call: усі категорії разом.

Кожен коефіцієнт розраховують однаково: загальна кількість put-опціонів ділиться на загальну кількість call-опціонів у відповідній категорії. Тому значення відрізняються лише складом категорії. Ці категорії не можна взаємозамінювати.

Індексні опціони є стандартним інструментом для хеджування всього портфеля однією операцією. Фонд із широким портфелем акцій купує index puts для його захисту й не має аналогічної потреби купувати index calls. Такий попит є одностороннім і повністю потрапляє до чисельника індексної категорії. Потоки в окремих акціях мають протилежний перекіс: купівля call-опціонів на окремі папери становить значну й стабільну частку обсягу. Через саму структуру ці дві категорії мають різні рівні. Порівняння значення однієї категорії з benchmark іншої — найпоширеніша помилка під час використання цього індикатора.

Широкі ринкові ETF виконують ту саму функцію хеджування, що й індексні опціони, але обліковуються в категорії біржових продуктів. На панелі нижче показано місячну медіану для обох частин цього розподілу.

ЗапитМедіанне місячне співвідношення put/call: широкі ринкові ETF проти окремих акцій
Точний SQL-код для кожного числа
WITH
    daily AS
    (
        SELECT
            d,
            toFloat64(sumIf(volume, right_letter = 'P' AND sym IN ('SPY', 'QQQ', 'IWM')))
                / toFloat64(sumIf(volume, right_letter = 'C' AND sym IN ('SPY', 'QQQ', 'IWM')))     AS etf_ratio,
            toFloat64(sumIf(volume, right_letter = 'P' AND sym NOT IN ('SPY', 'QQQ', 'IWM')))
                / toFloat64(sumIf(volume, right_letter = 'C' AND sym NOT IN ('SPY', 'QQQ', 'IWM'))) AS stock_ratio
        FROM
        (
            SELECT
                date                                     AS d,
                underlying_symbol                        AS sym,
                volume,
                substring(ticker, length(ticker) - 8, 1) AS right_letter
            FROM global_markets.options_greeks
            WHERE date >= '2025-08-01'
              AND date <  '2026-08-01'
              AND underlying_symbol IN ('SPY', 'QQQ', 'IWM', 'AAPL', 'MSFT', 'NVDA', 'TSLA', 'KO')
              AND volume > 0
        )
        GROUP BY d
        HAVING countIf(right_letter = 'C' AND sym IN ('SPY', 'QQQ', 'IWM')) > 0
           AND countIf(right_letter = 'C' AND sym NOT IN ('SPY', 'QQQ', 'IWM')) > 0
    )
SELECT
    toString(toStartOfMonth(d))                AS month,
    formatDateTime(toStartOfMonth(d), '%b %Y') AS month_label,
    round(quantileExact(0.5)(etf_ratio), 2)    AS etf_median_ratio,
    round(quantileExact(0.5)(stock_ratio), 2)  AS stock_median_ratio
FROM daily
GROUP BY month, month_label
ORDER BY month
Run this yourself

Панель охоплює період від Aug 2025 до Jul 2026. На обох кінцях періоду медіанний денний коефіцієнт кошика ETF був близьким до 1,0 або перевищував його: 1.52 у першому місяці та 1.49 в останньому. Кошик окремих акцій залишався нижче 1,0 на обох кінцях періоду — 0.6 і 0.56 — протягом усіх 12 місяців, показаних на графіку. Саме цей стабільний розрив означає, що benchmark має вказувати свою категорію, інакше його значення нічого не пояснює.

Що вважається нормальним співвідношенням put/call

Нормальний рівень — це діапазон, причому цей діапазон визначається категорією, а не самим індикатором. У таблиці нижче наведено медіанне щоденне співвідношення для кожного кошика за кожну сесію протягом останніх дванадцяти місяців, а також межі 10-го і 90-го перцентилів.

ЗапитФактичний діапазон денного співвідношення за дванадцять місяців торгових сесій
Точний SQL-код для кожного числа
WITH
    daily AS
    (
        SELECT
            d,
            toFloat64(sumIf(volume, right_letter = 'P' AND sym IN ('SPY', 'QQQ', 'IWM')))
                / toFloat64(sumIf(volume, right_letter = 'C' AND sym IN ('SPY', 'QQQ', 'IWM')))     AS etf_ratio,
            toFloat64(sumIf(volume, right_letter = 'P' AND sym NOT IN ('SPY', 'QQQ', 'IWM')))
                / toFloat64(sumIf(volume, right_letter = 'C' AND sym NOT IN ('SPY', 'QQQ', 'IWM'))) AS stock_ratio,
            toFloat64(sumIf(volume, right_letter = 'P'))
                / toFloat64(sumIf(volume, right_letter = 'C'))                                      AS all_ratio
        FROM
        (
            SELECT
                date                                     AS d,
                underlying_symbol                        AS sym,
                volume,
                substring(ticker, length(ticker) - 8, 1) AS right_letter
            FROM global_markets.options_greeks
            WHERE date >= '2025-08-01'
              AND date <  '2026-08-01'
              AND underlying_symbol IN ('SPY', 'QQQ', 'IWM', 'AAPL', 'MSFT', 'NVDA', 'TSLA', 'KO')
              AND volume > 0
        )
        GROUP BY d
        HAVING countIf(right_letter = 'C' AND sym IN ('SPY', 'QQQ', 'IWM')) > 0
           AND countIf(right_letter = 'C' AND sym NOT IN ('SPY', 'QQQ', 'IWM')) > 0
    )
SELECT
    p.2                                  AS category,
    round(quantileExact(0.1)(p.3), 2)    AS p10_ratio,
    round(quantileExact(0.5)(p.3), 2)    AS median_ratio,
    round(quantileExact(0.9)(p.3), 2)    AS p90_ratio
FROM
(
    SELECT arrayJoin([
        tuple(1, 'Broad market ETFs', etf_ratio),
        tuple(2, 'Single stocks',     stock_ratio),
        tuple(3, 'All eight names',   all_ratio)
    ]) AS p
    FROM daily
)
GROUP BY p.1, p.2
ORDER BY p.1
Run this yourself

Для кошика окремих акцій медіанне значення за сесію становило 0.58. 10-й перцентиль дорівнював 0.45, а 90-й — 0.76. Кошик broad market ETF мав вищі значення в усьому розподілі: медіанне значення 1.54 у діапазоні від 1.25 до 1.86.

То чи є 1.20 високим значенням? Порівняно з кошиком окремих акцій показник 1.20 перевищує 90-й перцентиль, що дорівнює 0.76, і тому є нетиповим. Для кошика ETF він близький до звичайного рівня. Для категорії індексів, у якій зосереджений описаний вище потік хеджування, це саме значення потрібно порівнювати вже з іншим набором рівнів. Висновок визначає категорія ще до початку інтерпретації.

Ці діапазони також змінюються. Перцентилі, розраховані за останні дванадцять місяців, описують саме цей період. А діапазон бенчмарка, скопійований зі статті десятирічної давності, описує ринок з іншим складом контрактів і майже без торгівлі опціонами з експірацією того самого дня. Перерахунок перцентилів за недавній період — єдиний коректний спосіб визначити, чи є показник високим або низьким.

Інтерпретація — окреме завдання, не тотожне розрахунку. Дехто сприймає високий показник як ведмеже позиціонування, а контраріанські інвестори — як переповнений хедж. Аргумент про те, чи є високий put/call ratio бичачим сигналом, розглядає це питання належним чином.

Чому використовується 21-сесійна ковзна середня

Співвідношення за одну сесію є невеликою вибіркою з шумного ряду, тому опублікований показник зазвичай згладжують. Поширений підхід — 21-сесійна ковзна середня, тобто приблизно один торговий місяць: підсумувати щоденні співвідношення за останні 21 сесію, поділити результат на 21, а потім змістити вікно на одну сесію вперед. Також використовують середні за десять і 50 сесій. Обрана довжина визначає, яка частина одноденного сплеску збережеться в показнику.

Варто знати про дві деталі. Усереднення 21 щоденного співвідношення — це не те саме, що ділення місячного обсягу put-опціонів на місячний обсяг call-опціонів. У першому випадку кожна сесія має однакову вагу, а в другому активніші сесії мають більшу вагу. Крім того, згладжений показник на екстремальному рівні формується протягом місяця сесій, тому й виходить із цього екстремуму повільно.

ЗапитДенне співвідношення put/call окремої акції проти її середнього за 21 сесію
Точний SQL-код для кожного числа
WITH
    daily AS
    (
        SELECT
            d,
            toFloat64(sumIf(volume, right_letter = 'P'))
                / toFloat64(sumIf(volume, right_letter = 'C')) AS raw_ratio
        FROM
        (
            SELECT
                date                                     AS d,
                volume,
                substring(ticker, length(ticker) - 8, 1) AS right_letter
            FROM global_markets.options_greeks
            WHERE date >= '2026-01-02'
              AND date <  '2026-08-01'
              AND underlying_symbol IN ('AAPL', 'MSFT', 'NVDA', 'TSLA', 'KO')
              AND volume > 0
        )
        GROUP BY d
        HAVING countIf(right_letter = 'C') > 0
    )
SELECT
    session_date,
    day_label,
    daily_ratio,
    ma21_ratio
FROM
(
    SELECT
        d,
        toString(d)                                                 AS session_date,
        concat(formatDateTime(d, '%b '), toString(toDayOfMonth(d))) AS day_label,
        round(raw_ratio, 2)                                         AS daily_ratio,
        round(avg(raw_ratio) OVER (ORDER BY d ROWS BETWEEN 20 PRECEDING AND CURRENT ROW), 2) AS ma21_ratio
    FROM daily
)
WHERE d >= '2026-04-01'
ORDER BY d
Run this yourself

Зубчаста лінія показує щоденне співвідношення для кошика окремих акцій, а плавна — його 21-сесійну середню. У першій показаній сесії, Apr 1, щоденне значення становило 1.04, а згладжене — 0.81. На Jul 31 ці два показники становили відповідно 0.56 і 0.58. За 84 сесій середнє проходить лише частину відстані, яку долає первинний ряд. Саме тому наводять згладжене значення.

Як рахуються ці панелі

Тип контракту визначається безпосередньо з опціонного символу: літера перед восьмизначним кодом strike позначає C для call-опціону та P для put-опціону. До підрахунку потрапляють лише контракти з указаним обсягом торгів за сесію. Тому strike, за яким не було угод, не додає обсягу до жодної зі сторін. Перша панель для кожної назви ділить загальний місячний обсяг put-опціонів на загальний місячний обсяг call-опціонів. В інших панелях спочатку розраховується одне співвідношення за кожну сесію, а потім ці сесії узагальнюються. Саме так формується опублікована ковзна середня. Кошики: SPY, QQQ та IWM для широкого ринку, а також AAPL, MSFT, NVDA, TSLA і KO для окремих акцій. Кожна панель містить точний SQL-запит, за яким її було побудовано.

Часті запитання

Як розраховується співвідношення put/call?

Кількість put-контрактів ділиться на кількість call-контрактів за той самий період. У більшості опублікованих розрахунків використовується обсяг торгів за сесію. Тому значення 0,65 означає, що на кожні 100 call було укладено угоди зі 65 put. У розрахунку на основі open interest використовуються відкриті контракти, а не проторговані, тому він відповідає на інше запитання.

Чи є співвідношення put/call вище за 1 високим?

Це залежить від категорії. Для кошика окремих акцій на наведених вище панелях 90-й перцентиль денних значень становить 0.76, тому значення вище цього рівня трапляються нечасто. Для широких ринкових ETF та індексних опціонів, де хеджування портфелів концентрується на put, значення близько 1 і вище є звичайними.

У чому різниця між співвідношенням put/call за обсягом і за open interest?

Обсяг охоплює контракти, за якими укладалися угоди протягом сесії, і щоранку починає відлік заново. Open interest охоплює контракти, які залишаються відкритими, і переноситься з дня на день. Значення за обсягом може подвоїтися протягом однієї сесії, тоді як open interest може змінитися лише на кілька відсотків. Тому в один і той самий день ці два показники часто вказують на різні тенденції.

Яке співвідношення put/call наводить фінансова преса?

Зазвичай це equity put/call ratio або total put/call ratio від Cboe. Найчастіше показник наводять як 21-сесійну ковзну середню, а не як необроблене денне значення. Чотири категорії Cboe мають різні рівні. Тому значення без зазначення категорії не можна порівнювати з жодним бенчмарком.


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

#put call ratio#options#sentiment#cboe#options volume