Strasmore Research
İncelemeler Matt ConnorYazan Matt Connor

Yüksek put/call oranı yükseliş sinyali midir?

Yüksek put/call oranı aykırı bir yükseliş sinyali olarak değerlendirilir. Hisse ve endeks opsiyonları için yüzdelik dilimleri inceleyerek uç değerlerin piyasa etkisini görün.

Yüksek put/call oranı, klasik bir aykırı (contrarian) yükseliş sinyali olarak kabul edilir: Olağan dışı yoğun put alımı, piyasanın bir düşüşe karşı zaten önlem aldığı şeklinde yorumlanır. Bu okumaya göre hareket etmenin bir sorunu vardır. "Yüksek" ifadesinin sabit bir değeri yoktur; ekrandaki bir nokta bir beş (1.15) değeri, tekil hisse opsiyonlarında uç bir noktayı temsil edebilirken, endeks ürünlerinde sıradan bir seans verisi olabilir.

1.45

Sorunun çözümü için bir referans dağılımına ihtiyaç duyulmaktadır. Bu sayfa, her iki kitap için de bir referans dağılımı sunmakta ve ardından yüksek okumaları takip eden piyasa hareketlerini ölçmektedir. put/call oranı açıklayıcısı, oranın nasıl oluşturulduğunu ele almaktadır ve aşağıdaki tüm veriler bu tanım üzerinden ilerlemektedir.

Ölçüme dair iki not bulunmaktadır. Buradaki her oran, o gün işlem gören sözleşmeleri saymaktadır; bu nedenle bir hacim oranıdır. Açık pozisyon (open interest) ise henüz kapanmamış pozisyonları sayar ve farklı bir seviyede yer alır (hacim ile açık pozisyon karşılaştırması ikisi arasındaki farkı ortaya koyar). Ayrıca rakamlar, tüm piyasa verisi yerine on adet bilindik tekil hisse senedi ve üç geniş kapsamlı ETF'ten oluşan sabit bir sepetten gelmektedir; bu nedenle son ondalık basamağa değil, dağılımın genel şekline odaklanılmalıdır.

Yüksek put/call oranı neyi ifade eder?

Yüzdelik dilim, bir seviyenin tek başına yanıtlayamadığı soruları yanıtlar. Aşağıdaki eğri, Ocak 2022'den Temmuz 2026'ya kadar olan her seansı, her bir portföy için seans başına bir oran olacak şekilde kapsamaktadır.

SorgulaPut/call hacim oranı yüzdelikleri: tekil hisse sepeti ve endeks ETF'leri karşılaştırması, 2022 - Temmuz 2026
Her verinin arkasındaki tam SQL
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

Tekil hisse senedi sepetinde, medyan seans 0.67 put/call oranı ile gerçekleşti. Seansların en üst yüzde onluk dilimi 0.89 seviyesinden başlarken, en uç yüzde birlik kesim 1.34 seviyesini aştı. Düşük hacimli uç da kalibrasyon için aynı derecede faydalıdır: yirmi seanstan biri 0.48 seviyesinde veya altında kapandı.

ETF sütunu, eğrinin her noktasında farklı bir dağılım sergiler. Medyan seans değeri 1.45 olarak okundu; bu değer, tekil hisse medyanının oldukça altında kaldığı bire bir çizgisinin üzerindedir ve kendi üst yüzde onluk dilimi 1.77 seviyesinden başlamaktadır. Hangi portföye ait olduğu belirtilmeyen bir oran neredeyse anlamsızdır. 1,15'lik bir işlem, hangi sütundan geldiğine bağlı olarak iki farklı anlama gelir.

Endeks rasyosunun birin üzerinde olması neden normal, hisse senedi rasyosunun neden değildir?

Aynı işlem hacmini dayanak varlığa göre ayırdığınızda, seviyeler net bir şekilde ayrışır.

SorgulaDayanak varlığa göre put/call hacim oranı: 1 Ocak - 31 Temmuz 2026
Her verinin arkasındaki tam SQL
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

İki bin yirmi altının ilk yedi ayı boyunca, IWM, çağrı başına 2.73 satım opsiyonu ile listenin zirvesinde yer aldı ve 144 seansının 98.6% kadarında birin üzerinde kapandı. Listenin en altında ise XOM, seansların 2.8% kadarında birin üzerinde kalarak 0.38 işlem gördü.

Bu fark yapısal bir durumdur. Geniş piyasa ETF opsiyonları, portföy riskinden korunma işlemlerinin yapıldığı yerdir: İki yüz pozisyon tutan bir yönetici, her bir varlık için ayrı satım opsiyonu almak yerine endeks satım opsiyonu alır ve bu akışın yanında eşleşen bir alım opsiyonu işlemi bulunmaz. Tekil hisse senedi opsiyon hacmi ise tam tersi yönde, yükseliş beklentisiyle alınan alım opsiyonlarına ve halihazırda sahip olunan hisseler karşılığında yazılan alım opsiyonlarına eğilimlidir. "Toplam" rasyo her iki defteri de harmanlar; bu da rasyoyu ikisinin arasına yerleştirir ve piyasa duyarlılığı kadar günün ürün karmasıyla da hareket etmesine neden olur.

Bilinmesi gereken bir seviye değişimi daha mevcuttur. Endeks ve ETF hacmi artık gün içi vadeli opsiyonların (0DTE opsiyonları) büyük bir kısmını taşımaktadır; bu kategori, bilinen eşik değerlerin belirlendiği dönemde bu ölçekte işlem görmüyordu. Eski seviyeler, farklı bir yapıya sahip olan mevcut piyasa verilerine doğrudan uyarlanamaz.

Yüksek put/call oranı yükseliş sinyali midir? Uç değerleri neler izledi

Aykırı görüş (contrarian) yaklaşımı test edilebilir niteliktedir. Her seansı, o günkü hisse senedi oranına göre beş dilime ayırın ve ardından S&P 500 takipçisinin sonraki beş ve yirmi seanstaki hareketini ölçün.

SorgulaS&P 500 takipçisinin hisse put/call oranının her bir beşte birlik dilimindeki hareketleri, 2022 - Temmuz 2026
Her verinin arkasındaki tam SQL
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

En sakin beşte birlik seans dilimi 0.34 seviyesinden başlar ve en hareketli beşte birlik dilim 0.81 seviyesinden başlar; dolayısıyla en üst bant, aykırı görüşe sahip bir yatırımcının aşırı olarak nitelendireceği her okumayı içerir. Bu 226 seans boyunca, yirmi seanslık medyan hareket 3% olarak ölçülmüştür; en sakin beşte birlik dilimden sonra ise bu oran 0.91% olmuştur. Beş seans sonrasında, aynı iki bant 0.82% ve 0.3% değerlerini göstermiştir.

Medyan değerler, önemli olan kısmı gizler. En üst beşte birlik dilimin içinde, yirmi seanslık sonuçların orta yarısı -1.82% ile 5.71% arasında gerçekleşmiştir. En sakin beşte birlik dilimin içinde ise orta yarı -0.83% ile 2.67% arasında kalmıştır. Bu iki aralık, büyük ölçüde aynı alanı kapsamaktadır. Bir seansın içine düştüğü bant, dağılımın merkezini kaydırır ancak bu merkez etrafındaki aralığı neredeyse hiç daraltmaz; bu da genel geçer kuralların göz ardı ettiği kısımdır.

Ağırlık konusunda bir uyarı: Ocak 2022'den Temmuz 2026'ya kadar olan dönem, bir ayı piyasasını ve ardından gelen toparlanmayı kapsar; bant başına yaklaşık 226 seans düşmektedir. Bu gerçek bir örneklemdir ve piyasa tarihinin tek bir kesitidir.

Uç değerler piyasa diplerinde mi kümeleniyor?

Bu değerler düşüş yaşanan aylarda kümelenmektedir; bu ise farklı bir iddiadır. 2022 yılından itibaren her ayı, takipçi endeksin (tracker) ay içindeki hareketine göre gruplandırın ve ardından en üst desildeki put/call okumalarının her bir grupta kaç kez gerçekleştiğini sayın.

SorgulaAylık en yüksek desil put/call değerleri, S&P 500 takipçisinin hareketine göre gruplandırılmış
Her verinin arkasındaki tam SQL
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

Takipçi endeksin yüzde üç veya daha fazla değer kaybettiği aylar, ortalama 4.2 adet üst desil okumasına sahipken, yüzde üç veya daha fazla yükseldiği aylarda bu sayı 1.9 düzeyindedir. Her grubun medyan günlük okuması son sütunda yer almakta olup, en kötü grup için 0.75, en iyi grup için ise 0.62 seviyesindedir. Tablonun iki ucu sırasıyla 12 ve 22 ay içermektedir.

Uç put/call okumaları ve düşen fiyatlar birlikte ortaya çıkmaktadır. Bu bir eş zamanlılıktır ve önceki bölümde yer alan ileriye dönük veriler, bu durumun değerini ortaya koymaktadır. Rasyo, aynı günün piyasa hareketinin aynı gün yapılan bir ölçümüdür; dolayısıyla rasyodaki ani yükselişler, düşüşlerin önünde değil, bizzat düşüşlerin içinde yer alır. Dip seviyesi ise ancak sonradan konulan bir etikettir.

Bir seviyeyi dağılım üzerinden okumak

Yukarıdaki rakamlardan iki alışkanlık öne çıkmaktadır.

Birincisi, benzerleri birbiriyle kıyaslamaktır. Bir okuma, yalnızca aynı kitabın kendi geçmişindeki benzer bir zaman dilimiyle kıyaslandığında anlam kazanır; yüzdelik dilim tablosunun sunduğu ve ezberlenmiş bir eşik değerin sunamadığı tam olarak budur.

İkincisi, paydayı takip etmektir. Put alımları hiç değişmese bile, call hacmi arttığında oran düşer. Orandaki bir düşüş veya yükseliş, kesrin yalnızca bir tarafındaki hareketten kaynaklanabilir; bu nedenle put hacmi ile call hacmini ayrı ayrı okumak, aritmetiğin görünür kalmasını sağlar.

Aynı disiplin, çıplak bir rakam olarak alıntılanan her duyarlılık göstergesi için geçerlidir. VIX ve yüzde otuzluk bir zımni volatilite gerçekleşmesi, kendi dağılımları olmadan anlamsızdır ve aykırı duyarlılık kuralları, yalnızca referans seviyesi varsayıldığında değil ölçüldüğünde veriyle desteklenir.

Sıkça Sorulan Sorular

Yüksek put/call oranı yükseliş sinyali midir?

Aykırı görüş (contrarian) yaklaşımı, yoğun put alımını piyasanın düşüşe karşı zaten pozisyon almış olduğu şeklinde yorumlar. Yukarıdaki tekil hisse senedi sepetiyle kıyaslandığında, okumaların en üst beşte birlik diliminde yer aldığı seansları, S&P 500 takipçisinde medyan yirmi seanslık 3%'lik bir hareket izlemiştir; en sakin beşte birlik dilimden sonra ise bu oran 0.91% olmuştur. En üst beşte birlik dilimdeki sonuçların orta yarısı -1.82% ile 5.71% arasında gerçekleşmiştir.

Normal bir put/call oranı nedir?

Bu tamamen hangi opsiyonların hesaba katıldığına bağlıdır. 2022'den Temmuz 2026'ya kadar olan dönemde, on adet bilindik tekil hisse senedinden oluşan bir sepette medyan seans okuması call başına 0.67 put olarak gerçekleşmiştir. Aynı seanslarda üç geniş piyasa ETF'sinde ise medyan okuma 1.45 olmuştur.

Endeks put/call oranı neden hisse senedi put/call oranından daha yüksektir?

Geniş endeks ve ETF opsiyonları, portföyden korunma (hedging) için standart araçlardır ve endeks put opsiyonu alan bir yatırımcının karşılığında eşleşen bir call işlemi bulunmaz. Tekil hisse senedi hacmi, yükseliş beklentisiyle alınan call opsiyonlarına ve halihazırda elde tutulan hisselere karşı yazılan call opsiyonlarına yöneliktir; bu durum ilgili defterin oranını daha düşük tutar.

Put/call oranı piyasa zamanlaması için işe yarar mı?

Yukarıdaki ölçüm, her bir okuma dilimini takip eden sonuçların dağılımını göstermektedir; herhangi bir bant içindeki spread, bant medyanları arasındaki mesafeden çok daha geniştir. En üst desildeki okumalar, endeksin düşüşle kapattığı aylarda yoğunlaşmakta olup, en kötü grupta ayda 4.2 oranında gerçekleşmektedir.

Hacim bazlı put/call oranı ile açık pozisyon (open interest) oranı arasındaki fark nedir?

Hacim oranı, bir seans boyunca işlem gören sözleşmeleri sayar; bu nedenle her gün sıfırlanır ve hızlı tepki verir. Açık pozisyon oranı ise henüz kapanmamış pozisyonları sayar; bu oran yavaş değişir ve kendi seviyesinde seyreder. İkisi birbirinin yerine kullanılamaz; birinden alınan bir eşik değeri diğerinde yanlış okumaya yol açar.

Bu veriler nasıl oluşturulur?
  • Kaynak: Her seans için işlem hacmini içeren, opsiyon sözleşmesi başına bir satır. Put ve call opsiyonları, son sekiz karakterin kullanım fiyatını, ondan önceki karakterin ise call için C, put için P harfini temsil ettiği OCC sözleşme kodundan ayrıştırılır. Kesin tablo ve filtreler için herhangi bir panelin altındaki SQL'i açın.
  • Bu sayfadaki her oran bir hacim oranıdır. Açık pozisyon hesaplamaya dahil edilmemiştir, dolayısıyla burada açık pozisyon oranı bulunmamaktadır.
  • Zımni volatilite (implied-volatility) kalite filtresi uygulanmamıştır. Bu paneller volatiliteyi ölçmek yerine işlem aktivitesini saydığı için sözleşmeler yalnızca işlem hacmi üzerinden dahil edilir.
  • Sepet: Tekil hisse senedi defteri için AAPL, MSFT, NVDA, AMZN, META, TSLA, GOOGL, JPM, KO ve XOM; endeks-ETF defteri için ise SPY, QQQ ve IWM. Borsa tarafından yayınlanan oranlar tüm piyasayı kapsar ve SPX gibi endeks ürünlerini içerir, bu nedenle seviyeleri farklılık gösterir.
  • Endeks fiyatları, S&P 500 takipçisinin her günkü son normal seans işlemidir (print). İleriye dönük getiriler, henüz yirmi seanslık geleceği olmayan örneklemin son yirmi seansını dışarıda bırakır. Aylık hareketler, her ayın ilk seans kapanışından son seans kapanışına kadar hesaplanır.

Yukarıdaki her panel, arkasındaki SQL'e genişletilebilir ve aynı yüzdelik dilim sorguları, Strasmore terminalinde takip ettiğiniz herhangi bir dayanak varlık için çalıştırılabilir.

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