Strasmore Research

Bullish ba ang Mataas na Put/Call Ratio?

Tingnan ang percentile bands para sa equity at index options, at alamin kung ano ang aktuwal na sumunod sa mga extreme reading ng put/call ratio.

Ang mataas na put/call ratio ang classic contrarian bullish reading: ang hindi pangkaraniwang dami ng pagbili ng put ay itinuturing na senyales na nakapaghanda na ang karamihan sa posibleng pagbagsak. Ngunit may isang problema sa paggamit ng reading na ito. Walang nakapirming halaga ang “mataas,” at ang reading na 1.15 sa screen mo ay maaaring extreme sa single-stock options ngunit pangkaraniwan lamang sa isang session ng index products.

Ang kailangan ng tanong ay isang reference distribution. Nagbibigay ang page na ito ng reference para sa dalawang market book, at sinusukat kung ano ang sumunod sa mga high reading. Ipinapaliwanag ng put/call ratio kung paano binubuo ang ratio, at mula sa depinisyong iyon nagsisimula ang lahat ng nasa ibaba.

Dalawang paalala tungkol sa measurement. Binibilang ng bawat ratio dito ang mga kontratang na-trade sa araw na iyon, kaya volume ratio ito. Binibilang naman ng open interest ang mga position na bukas pa at nasa ibang antas ito (volume kumpara sa open interest ang nagpapaliwanag ng pagkakaiba). Galing din ang mga numero sa isang fixed basket: ten household single-stock names kumpara sa three broad-market ETF, hindi sa buong-market tape. Kaya tingnan ang hugis ng distribution sa halip na ang huling decimal.

Ano ang itinuturing na mataas na put/call ratio?

Sinasagot ng percentile ang tanong na hindi kayang sagutin ng isang level. Saklaw ng curve sa ibaba ang bawat session mula January 2022 hanggang July 2026, na may isang ratio bawat session para sa bawat book.

QueryMga percentile ng put/call volume ratio: basket ng single-stock kumpara sa index ETFs, 2022 hanggang Hulyo 2026
Ang eksaktong SQL sa likod ng bawat numero
WITH book_days AS (
    SELECT date AS day,
           if(underlying_symbol IN ('SPY', 'QQQ', 'IWM'), 'index_etf', 'equity') AS book,
           sumIf(volume, upper(substring(ticker, length(ticker) - 8, 1)) = 'P') AS put_volume,
           sumIf(volume, upper(substring(ticker, length(ticker) - 8, 1)) = 'C') AS call_volume
    FROM global_markets.options_greeks
    WHERE date >= toDate('2022-01-01')
      AND date <= toDate('2026-07-31')
      AND volume > 0
      AND underlying_symbol IN ('SPY', 'QQQ', 'IWM', 'AAPL', 'MSFT', 'NVDA', 'AMZN',
                                'META', 'TSLA', 'GOOGL', 'JPM', 'KO', 'XOM')
    GROUP BY day, book
    HAVING call_volume > 0
),
paired AS (
    SELECT day,
           toFloat64(sumIf(put_volume, book = 'equity'))
             / toFloat64(sumIf(call_volume, book = 'equity')) AS equity_pcr,
           toFloat64(sumIf(put_volume, book = 'index_etf'))
             / toFloat64(sumIf(call_volume, book = 'index_etf')) AS index_pcr
    FROM book_days
    GROUP BY day
    HAVING sumIf(call_volume, book = 'equity') > 0
       AND sumIf(call_volume, book = 'index_etf') > 0
),
curves AS (
    SELECT arrayMap(v -> round(v, 2),
                    quantilesDeterministic(0.05, 0.10, 0.25, 0.50, 0.75, 0.90, 0.95, 0.99)
                                          (equity_pcr, cityHash64(day))) AS eq,
           arrayMap(v -> round(v, 2),
                    quantilesDeterministic(0.05, 0.10, 0.25, 0.50, 0.75, 0.90, 0.95, 0.99)
                                          (index_pcr, cityHash64(day))) AS idx
    FROM paired
)
SELECT z.1 AS percentile,
       z.2 AS equity_pcr,
       z.3 AS index_etf_pcr
FROM (
    SELECT arrayJoin(arrayZip(['p05', 'p10', 'p25', 'p50', 'p75', 'p90', 'p95', 'p99'], eq, idx)) AS z
    FROM curves
)
Run this yourself

Sa basket ng single-stock, ang median session ay nasa 0.67 puts bawat call. Nagsimula sa 0.89 ang top decile ng mga session, at lumampas sa 1.34 ang pinakamatinding one percent. Kapaki-pakinabang din para sa calibration ang tahimik na dulo: isang session sa bawat dalawampu ang nagtapos sa o mas mababa sa 0.48.

Iba ang distribution ng ETF column sa bawat punto ng curve. Ang median session nito ay nasa 1.45, mas mataas sa one-to-one line na malinaw na mas mababa sa median ng single-stock. Nagsimula naman sa 1.77 ang sarili nitong top decile. Halos walang saysay ang isang ratio kung hindi tinutukoy kung saang book ito nagmula. Magkaiba ang kahulugan ng 1.15 print depende sa column kung saan ito nanggaling.

Bakit normal ang index ratio na higit sa 1 ngunit hindi ang equity ratio na higit sa 1

Kapag hinati ang parehong volume ayon sa underlying, malinaw na naghihiwalay ang mga antas.

QueryPut/call volume ratio ayon sa underlying: Enero 1 hanggang Hulyo 31, 2026
Ang eksaktong SQL sa likod ng bawat numero
WITH symbol_days AS (
    SELECT underlying_symbol AS symbol,
           date AS day,
           sumIf(volume, upper(substring(ticker, length(ticker) - 8, 1)) = 'P') AS put_volume,
           sumIf(volume, upper(substring(ticker, length(ticker) - 8, 1)) = 'C') AS call_volume
    FROM global_markets.options_greeks
    WHERE date >= toDate('2026-01-01')
      AND date <= toDate('2026-07-31')
      AND volume > 0
      AND underlying_symbol IN ('SPY', 'QQQ', 'IWM', 'AAPL', 'MSFT', 'NVDA', 'AMZN',
                                'META', 'TSLA', 'GOOGL', 'JPM', 'KO', 'XOM')
    GROUP BY symbol, day
    HAVING call_volume > 0
)
SELECT symbol,
       round(toFloat64(sum(put_volume)) / toFloat64(sum(call_volume)), 2) AS put_call_ratio,
       round(100 * countIf(put_volume > call_volume) / count(), 1) AS above_one_pct,
       count() AS observations
FROM symbol_days
GROUP BY symbol
ORDER BY put_call_ratio DESC
Run this yourself

Sa unang pitong buwan ng 2026, nanguna sa talaan ang IWM sa 2.73 puts bawat call, at nagtapos sa mahigit one sa 98.6% ng 144 sessions nito. Sa kabilang dulo, nag-trade ang XOM sa 0.38, at nasa mahigit one ito sa 2.8% ng mga session.

Structural ang agwat. Sa broad-market ETF options isinasagawa ang portfolio hedging: ang manager na may dalawang daang positions ay bumibili ng index puts sa halip na puts para sa bawat holding. Walang katapat na call trade ang ganitong flow. Sa single-stock option volume, mas nakatuon ang aktibidad sa pagbili ng calls para sa upside at pagsusulat ng calls laban sa stock na pag-aari na. Pinagsasama ng “total” ratio ang dalawang book. Dahil dito, napapagitna ito sa dalawa at gumagalaw batay sa product mix ng araw, hindi lamang sa sentiment.

Mahalaga ring malaman ang isa pang pagbabago sa antas. Malaking bahagi na ngayon ng index at ETF volume ang same-day expiries (0DTE options), isang kategoryang hindi nag-trade sa ganitong kalaking scale noong unang itinakda ang mga pamilyar na threshold. Hindi maaaring ilipat nang direkta ang mga lumang antas sa tape na iba na ang composition.

Bullish ba ang mataas na put/call ratio? Ano ang sumunod sa mga extreme

Maaaring subukan ang contrarian case. Igrupo ang bawat session sa limang bahagi batay sa equity ratio noong araw na iyon, at sukatin kung paano gumalaw ang S&P 500 tracker sa sumunod na 5 at 20 sessions.

QueryMga galaw ng S&P 500 tracker pagkatapos ng bawat ikalimang bahagi ng equity put/call ratio, 2022 hanggang Hulyo 2026
Ang eksaktong SQL sa likod ng bawat numero
WITH raw AS (
    SELECT date AS day,
           sumIf(volume, upper(substring(ticker, length(ticker) - 8, 1)) = 'P') AS put_volume,
           sumIf(volume, upper(substring(ticker, length(ticker) - 8, 1)) = 'C') AS call_volume
    FROM global_markets.options_greeks
    WHERE date >= toDate('2022-01-01')
      AND date <= toDate('2026-07-31')
      AND volume > 0
      AND underlying_symbol IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'META',
                                'TSLA', 'GOOGL', 'JPM', 'KO', 'XOM')
    GROUP BY day
    HAVING call_volume > 0
),
equity_pcr AS (
    SELECT day, toFloat64(put_volume) / toFloat64(call_volume) AS pcr
    FROM raw
),
spy_daily AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS day,
           toFloat64(argMax(close, window_start)) AS close
    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-08-01')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY day
),
forward AS (
    SELECT day,
           close,
           any(close) OVER (ORDER BY day ASC ROWS BETWEEN 5 FOLLOWING AND 5 FOLLOWING) AS close_5,
           any(close) OVER (ORDER BY day ASC ROWS BETWEEN 20 FOLLOWING AND 20 FOLLOWING) AS close_20
    FROM spy_daily
),
joined AS (
    SELECT p.day AS day,
           p.pcr AS pcr,
           100 * (f.close_5 / f.close - 1) AS fwd_5d_pct,
           100 * (f.close_20 / f.close - 1) AS fwd_20d_pct
    FROM equity_pcr AS p
    INNER JOIN forward AS f ON p.day = f.day
    WHERE f.close_5 > 0 AND f.close_20 > 0
),
cuts AS (
    SELECT quantilesDeterministic(0.2, 0.4, 0.6, 0.8)(pcr, cityHash64(day)) AS q
    FROM joined
)
SELECT multiIf(pcr < q[1], 'lowest fifth',
               pcr < q[2], 'second fifth',
               pcr < q[3], 'middle fifth',
               pcr < q[4], 'fourth fifth',
               'highest fifth') AS pcr_band,
       count() AS observations,
       round(min(pcr), 2) AS band_floor_ratio,
       round(quantileDeterministic(0.5)(fwd_5d_pct, cityHash64(day)), 2) AS fwd_5d_median_pct,
       round(quantileDeterministic(0.5)(fwd_20d_pct, cityHash64(day)), 2) AS fwd_20d_median_pct,
       round(quantileDeterministic(0.25)(fwd_20d_pct, cityHash64(day)), 2) AS fwd_20d_p25_pct,
       round(quantileDeterministic(0.75)(fwd_20d_pct, cityHash64(day)), 2) AS fwd_20d_p75_pct
FROM joined CROSS JOIN cuts
GROUP BY pcr_band
ORDER BY band_floor_ratio ASC
Run this yourself

Nagsisimula sa 0.34 ang ikalimang may pinakamahinahong trading, habang nagsisimula sa 0.81 ang ikalimang may pinakamasiglang trading. Dahil dito, nasa top band ang lahat ng reading na ituturing ng isang contrarian na stretched. Sa 226 session na iyon, umabot sa 3% ang median na 20-session move, kumpara sa 0.91% pagkatapos ng ikalimang may pinakamahinahong trading. Pagkalipas ng 5 sessions, ang parehong dalawang band ay nasa 0.82% at 0.3%.

Itinatago ng mga median ang bahaging mahalaga. Sa loob ng top fifth, mula -1.82% hanggang 5.71% ang gitnang kalahati ng mga resulta sa loob ng 20 sessions. Sa loob ng ikalimang may pinakamahinahong trading, mula -0.83% hanggang 2.67% ang gitnang kalahati. Malaki ang overlap ng dalawang range. Binabago ng band kung saan napabilang ang isang session ang center ng distribution, ngunit halos hindi nito pinapakitid ang range sa paligid ng center na iyon. Ito ang bahaging hindi naipapakita ng isang simpleng rule of thumb.

May isang caveat tungkol sa bigat ng sample. Saklaw ng January 2022 hanggang July 2026 ang isang bear market at ang sumunod na recovery, na may humigit-kumulang 226 session bawat band. Totoong sample ito, ngunit isang yugto lamang ito ng market history.

Nagkukumpol ba ang mga extreme reading sa mga market low?

Nagkukumpol ang mga ito sa mga buwang bumababa ang merkado, na ibang pahayag iyon. Pagsama-samahin ang bawat buwan mula 2022 batay sa galaw ng tracker sa loob nito, at bilangin kung ilang top-decile put/call reading ang napunta sa bawat grupo.

QueryMga put/call reading na nasa top decile bawat buwan, ayon sa galaw ng S&P 500 tracker
Ang eksaktong SQL sa likod ng bawat numero
WITH raw AS (
    SELECT date AS day,
           sumIf(volume, upper(substring(ticker, length(ticker) - 8, 1)) = 'P') AS put_volume,
           sumIf(volume, upper(substring(ticker, length(ticker) - 8, 1)) = 'C') AS call_volume
    FROM global_markets.options_greeks
    WHERE date >= toDate('2022-01-01')
      AND date <= toDate('2026-07-31')
      AND volume > 0
      AND underlying_symbol IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'META',
                                'TSLA', 'GOOGL', 'JPM', 'KO', 'XOM')
    GROUP BY day
    HAVING call_volume > 0
),
equity_pcr AS (
    SELECT day, toFloat64(put_volume) / toFloat64(call_volume) AS pcr
    FROM raw
),
cut AS (
    SELECT quantileDeterministic(0.90)(pcr, cityHash64(day)) AS p90
    FROM equity_pcr
),
by_month AS (
    SELECT toStartOfMonth(day) AS month_start,
           countIf(pcr >= cut.p90) AS extreme_reads,
           quantileDeterministic(0.5)(pcr, cityHash64(day)) AS median_pcr
    FROM equity_pcr CROSS JOIN cut
    GROUP BY month_start
),
spy_daily AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS day,
           toFloat64(argMax(close, window_start)) AS close
    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-07-31')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY day
),
spy_month AS (
    SELECT toStartOfMonth(day) AS month_start,
           100 * (argMax(close, day) / argMin(close, day) - 1) AS move_pct
    FROM spy_daily
    GROUP BY month_start
)
SELECT multiIf(s.move_pct <= -3, 'index down 3% or more',
               s.move_pct < 0, 'index down under 3%',
               s.move_pct < 3, 'index up under 3%',
               'index up 3% or more') AS index_move_bucket,
       count() AS observations,
       round(avg(m.extreme_reads), 1) AS top_decile_reads_avg,
       round(quantileDeterministic(0.5)(m.median_pcr, cityHash64(m.month_start)), 2) AS typical_pcr_ratio
FROM by_month AS m
INNER JOIN spy_month AS s ON m.month_start = s.month_start
GROUP BY index_move_bucket
ORDER BY min(s.move_pct) ASC
Run this yourself

Ang mga buwang nagtapos ang tracker nang 3% o higit pang mas mababa ay may average na 4.2 top-decile reading bawat isa, kumpara sa 1.9 sa mga buwang tumaas ito nang 3% o higit pa. Ang median daily reading ng bawat grupo ay nasa huling column, sa 0.75 para sa pinakamasamang grupo at 0.62 para sa pinakamaganda. Ang dalawang dulo ng talahanayan ay may tig-12 at 22 buwan.

Sabay na lumilitaw ang mga extreme put/call reading at bumababang presyo. Co-occurrence ito, at ang mga forward number sa naunang seksyon ang nagpapakita ng halaga nito. Ang ratio ay same-day measurement ng same-day tape, kaya lumilitaw ang mga spike nito sa loob ng mga pagbaba, hindi bago mangyari ang mga ito. Ang market low ay label na ikinakabit pagkatapos mangyari ang galaw.

Pagbasa sa isang level kumpara sa distribution

Dalawang gawi ang makukuha mula sa mga numerong nasa itaas.

Una, ikumpara ang magkakatulad. May saysay lamang ang isang reading kapag inihambing sa sariling history ng parehong book sa isang maihahambing na panahon. Ito mismo ang ipinapakita ng percentile table, na hindi kayang ibigay ng isang threshold na naaalala lamang.

Ikalawa, bantayan ang denominator. Bumababa ang ratio kapag biglang tumataas ang call volume kahit hindi nagbabago ang put buying. Ang pagbaba o pagtaas ng ratio ay maaaring magmula sa paggalaw ng isang panig lamang ng fraction. Kaya nakikita ang arithmetic kapag hiwalay na binabasa ang put volume at call volume.

Pareho ang disiplinang ito sa bawat sentiment gauge na ipinapakita bilang isang standalone na numero. Hindi mababasa ang VIX at isang 30% implied volatility print nang walang sarili nitong distributions. Gayundin, nananatiling valid sa aktuwal na data ang mga contrarian sentiment rule kapag sinusukat ang reference level sa halip na ipinapalagay lamang.

Mga FAQ

Bullish ba ang mataas na put/call ratio?

Sa contrarian na pagbasa, ipinahihiwatig ng malakihang pagbili ng put options na nakaposisyon na ang karamihan para sa pagbaba. Kung ikukumpara sa single-stock basket sa itaas, ang mga session na nasa pinakamataas na one-fifth ng mga reading ay sinundan ng median na 20-session move na 3% sa S&P 500 tracker, kumpara sa 0.91% pagkatapos ng pinakakalmang one-fifth. Ang gitnang kalahati ng mga resulta sa pinakamataas na one-fifth ay nasa pagitan ng -1.82% at 5.71%.

Ano ang normal na put/call ratio?

Lubos itong nakadepende sa mga option na binibilang. Sa basket ng ten household single-stock names, ang median session mula 2022 hanggang July 2026 ay nagbasa ng 0.67 puts bawat call. Sa tatlong broad-market ETF sa parehong mga session, ang median ay 1.45.

Bakit mas mataas ang index put/call ratio kaysa equity put/call ratio?

Ang broad index at ETF options ang karaniwang ginagamit sa portfolio hedging. Kapag bumibili ang hedger ng index puts, walang katugmang call trade sa kabilang panig. Sa single-stock volume, mas nangingibabaw ang mga call na binibili para sa upside at mga call na sinusulat laban sa shares na hawak na. Dahil dito, mas mababa ang ratio ng book na iyon.

Gumagana ba ang put/call ratio para sa market timing?

Ipinapakita ng measurement sa itaas ang distribusyon ng mga sumunod na resulta sa bawat one-fifth ng mga reading. Mas malawak ang spread sa loob ng anumang isang band kaysa sa agwat ng mga median ng bawat band. Mas nakatuon din ang mga reading na nasa top-decile sa mga buwan na nagtapos na mas mababa ang index, na may 4.2 bawat buwan sa pinakamahinang grupo.

Ano ang kaibahan ng volume put/call ratio at open-interest put/call ratio?

Binibilang ng volume ratio ang mga kontratang na-trade sa isang session. Kaya nagre-reset ito araw-araw at mabilis tumutugon. Binibilang naman ng open-interest ratio ang mga posisyong nananatiling outstanding. Mabagal itong nagbabago at may sarili itong level. Hindi maaaring pagpalitin ang dalawang ratio. Ang threshold na hiniram mula sa isa ay maaaring magbigay ng maling basa sa isa pa.

Paano binuo ang mga numerong ito
  • Source: isang row bawat option contract sa bawat session, na may traded volume para sa session na iyon. Pinaghihiwalay ang puts at calls batay sa OCC contract code. Ang huling walong character ang strike, at ang character bago nito ay C para sa call at P para sa put. Buksan ang SQL sa ilalim ng anumang panel para makita ang eksaktong table at filters.
  • Volume ratio ang bawat ratio sa page na ito. Hindi kasama ang open interest sa computation, kaya walang open-interest ratio dito.
  • Walang inilapat na implied-volatility quality filter. Nakabatay lamang ang pagsama ng mga kontrata sa traded volume, dahil sinusukat ng mga panel na ito ang trading activity at hindi volatility.
  • Ang basket: AAPL, MSFT, NVDA, AMZN, META, TSLA, GOOGL, JPM, KO at XOM para sa single-stock book, kasama ang SPY, QQQ at IWM para sa index-ETF book. Saklaw ng exchange-published ratios ang buong merkado at kasama rito ang mga index product gaya ng SPX, kaya iba ang kanilang levels.
  • Ang mga presyo ng index ay ang huling regular-session print ng bawat araw para sa S&P 500 tracker. Inaalis sa forward returns ang huling 20 session ng sample dahil wala pa silang 20-session future. Ang monthly moves ay mula sa close ng unang session hanggang sa close ng huling session sa loob ng bawat buwan.

Ang bawat panel sa itaas ay maaaring i-expand para makita ang SQL sa likod nito. Gumagana rin ang parehong percentile queries laban sa anumang underlying na sinusubaybayan mo sa Strasmore terminal.

#put-call ratio#sentiment#options structure#contrarian#reference levels