Cara Menghitung Rasio Put/Call
Pelajari rumus rasio put/call berdasarkan volume dan open interest, alasan rasio indeks cenderung lebih tinggi, serta kisaran normalnya pada 2026.
Rasio put/call dihitung dengan membagi jumlah kontrak put yang diperdagangkan dengan jumlah kontrak call yang diperdagangkan dalam periode yang sama. Jika 250.000 put dan 500.000 call berpindah tangan dalam satu sesi, rasionya adalah 0,50. Setiap perdebatan mengenai indikator ini—volume dibandingkan dengan open interest, serta equity dibandingkan dengan indeks—berakar pada apa yang dihitung di masing-masing sisi pembagian tersebut. Untuk definisi dasarnya, mulai dari apa itu rasio put/call. Halaman ini membahas perhitungannya.
Rumus put/call ratio, langkah demi langkah
Rumus ini memiliki dua input dan satu operasi: hitung put yang diperdagangkan, hitung call yang diperdagangkan, lalu bagi angka pertama dengan angka kedua. Put adalah kontrak yang memberikan hak kepada pemiliknya untuk menjual 100 saham aset dasar pada harga strike tetap, pada atau sebelum tanggal kedaluwarsa. Call memberikan hak untuk membeli pada harga strike tetap. Volume menghitung jumlah kontrak yang berpindah tangan selama sesi perdagangan dan kembali ke nol pada pembukaan berikutnya.
Tidak ada pembobotan dalam penghitungan ini. Satu lot pada weekly yang jauh out of the money memiliki bobot yang sama dengan satu lot pada strike paling aktif di papan perdagangan. Keduanya juga tidak diskalakan berdasarkan dana yang dipertaruhkan. Rasio ini adalah jumlah kontrak.
Pilihan yang mengubah hasil adalah kontrak mana yang dihitung. Panel di bawah ini menerapkan perhitungan yang sama pada delapan saham likuid selama satu bulan penuh.
SQL tepat di balik setiap angka
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 DESCSelama Juli 2026, IWM mencatat rasio tertinggi dari delapan saham tersebut, yaitu 3.11 put per call, sedangkan MSFT mencatat rasio terendah sebesar 0.38. Satu rumus, satu bulan, dan spread antara saham dengan rasio tertinggi dan terendah jauh lebih lebar daripada fluktuasi harian yang sering dibahas. Rasio yang dikutip tanpa menyebutkan kategorinya hampir tidak memberikan informasi.
Berbasis volume atau open interest
Dua jenis perhitungan dapat mengisi pembilang dan penyebut.
Versi berbasis volume menghitung kontrak yang diperdagangkan dalam periode tersebut. Ini merupakan ukuran arus yang kembali ke nol pada setiap sesi dan menggambarkan aktivitas pelaku pasar hari ini. Setiap rasio utama dalam pemberitaan pasar menggunakan ukuran ini.
Versi berbasis open interest membagi jumlah put yang masih terbuka dengan jumlah call yang masih terbuka. Open interest adalah jumlah kontrak yang telah dibuka dan belum ditutup, dieksekusi, atau kedaluwarsa. Ini merupakan ukuran stok, yaitu posisi akumulatif, bukan aktivitas pada hari tersebut, sehingga pergerakannya lebih lambat. Jika 30.000 put berpindah tangan antara dua pemegang yang sudah ada, volume bertambah 30.000, sedangkan open interest tetap. Volume opsi versus open interest membahas pencatatan tersebut.
Misalkan suatu saham berakhir pada Selasa dengan 40.000 put dan 50.000 call yang masih terbuka, sehingga rasio open interest-nya 0,80. Pada Rabu, sebanyak 30.000 put dan 10.000 call diperdagangkan, sehingga rasio volume menjadi 3,00. Kedua angka tersebut menggambarkan option chain yang sama pada hari yang sama. Namun, nilainya berbeda hampir empat kali lipat, dan keduanya benar. Rasio open interest juga menjadi dasar perhitungan max pain, yang membobotkan strike berdasarkan jumlah kontrak yang masih terbuka, bukan kontrak yang diperdagangkan.
Ukuran arus cenderung bergerak tajam. Di bawah ini adalah rasio volume harian untuk satu ETF dan satu saham individual selama bulan yang sama.
SQL tepat di balik setiap angka
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 dPada Jul 1, SPY mencatat 1.1 dibandingkan dengan 0.49 untuk AAPL. Pada Jul 31, pasangan tersebut berada di 2 dan 0.55. Selama 22 sesi, angka harian bergerak naik turun, dan kedua seri berada pada level yang berbeda di grafik. Perbedaan level merupakan informasi yang lebih berguna dari kedua hal tersebut.
Equity, index, ETP, dan total: empat rasio Cboe
Angka yang disebut sebagai “put/call ratio” berasal dari statistik pasar harian Cboe, yang menerbitkan beberapa jenis rasio. Kategorinya, menurut penamaan Cboe:
- Equity put/call ratio: opsi atas saham individual.
- Index put/call ratio: opsi atas indeks, termasuk SPX dan VIX.
- Exchange traded products put/call ratio: opsi atas ETF, termasuk SPY, QQQ, dan IWM.
- Total put/call ratio: seluruh kategori yang dijumlahkan.
Semuanya dihitung dengan cara yang sama, yaitu total put dibagi total call dalam kategori masing-masing. Karena itu, perbedaannya hanya terletak pada instrumen yang masuk dalam setiap kelompok. Kelompok-kelompok tersebut tidak dapat dipertukarkan.
Index options merupakan instrumen standar untuk melakukan hedging atas seluruh portofolio dalam satu transaksi. Dana yang memegang portofolio saham yang terdiversifikasi dapat membeli index puts sebagai lindung nilai dan tidak memiliki alasan yang sama untuk membeli index calls. Permintaan tersebut hanya mengalir ke satu sisi dan seluruhnya masuk ke numerator kategori index. Arus pada saham individual memiliki kecenderungan sebaliknya. Pembelian call atas saham individual merupakan bagian besar dan persisten dari volume. Kedua kategori berada pada level yang berbeda secara struktural. Membandingkan angka dari satu kategori dengan benchmark dari kategori lain merupakan kesalahan yang paling umum dalam menggunakan indikator ini.
ETF pasar luas memiliki fungsi hedging yang sama seperti index options, tetapi dihitung dalam kategori exchange traded products. Panel di bawah ini melacak median bulanan untuk kedua sisi pemisahan tersebut.
SQL tepat di balik setiap angka
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 monthPanel tersebut mencakup periode Aug 2025 hingga Jul 2026. Pada kedua ujung periode, median rasio harian keranjang ETF berada di sekitar atau di atas 1,0, 1.52 pada bulan pertama dan 1.49 pada bulan terakhir. Median keranjang saham individual berada di bawah 1,0 pada kedua ujung periode, yaitu 0.6 dan 0.56, sepanjang 12 bulan yang ditampilkan dalam grafik. Kesenjangan yang konsisten tersebut menjelaskan mengapa benchmark harus menyebutkan kategorinya sebelum angka tersebut memiliki makna.
Apa yang dianggap sebagai put/call ratio normal
Normal berarti sebuah rentang. Rentang tersebut berlaku untuk suatu kategori, bukan untuk indikatornya. Panel di bawah mengambil setiap sesi selama dua belas bulan terakhir dan menyajikan median rasio harian untuk setiap kelompok, dengan batas persentil ke-10 dan ke-90 di sekelilingnya.
SQL tepat di balik setiap angka
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.1Untuk kelompok saham individual, median sesi tercatat sebesar 0.58, dengan 0.45 pada persentil ke-10 dan 0.76 pada persentil ke-90. Kelompok ETF pasar luas berada pada level yang lebih tinggi di seluruh distribusinya: median sebesar 1.54, di antara batas 1.25 dan 1.86.
Jadi, apakah 1.20 tergolong tinggi? Dibandingkan dengan kelompok saham individual, print 1.20 berada di atas persentil ke-90 sebesar 0.76, sehingga tergolong tidak biasa. Dibandingkan dengan kelompok ETF, angka tersebut mendekati kondisi normal. Dibandingkan dengan kategori indeks, tempat arus hedging yang dijelaskan di atas terkonsentrasi, angka yang sama harus dinilai berdasarkan level yang berbeda lagi. Satu angka yang sama dapat menghasilkan kesimpulan berbeda, dan kategorilah yang menentukan kesimpulan tersebut sebelum interpretasi dimulai.
Rentang ini juga berubah seiring waktu. Persentil yang dihitung berdasarkan dua belas bulan terakhir hanya menggambarkan dua belas bulan terakhir. Sementara itu, rentang acuan yang disalin dari artikel yang ditulis satu dekade lalu menggambarkan pasar dengan komposisi kontrak yang berbeda dan hampir tanpa perdagangan zero day expiry. Menghitung ulang persentil berdasarkan periode terkini adalah satu-satunya cara yang tepat untuk menyebut suatu angka tinggi atau rendah.
Interpretasi merupakan tugas yang terpisah dari perhitungan. Sebagian pihak membaca angka yang tinggi sebagai positioning bearish, sedangkan contrarian membacanya sebagai hedging yang terlalu ramai. Pertanyaan apakah put/call ratio yang tinggi bersifat bullish membedah argumen tersebut secara tepat.
Mengapa moving average 21 hari
Rasio dalam satu sesi merupakan sampel kecil dari rangkaian data yang bising, sehingga versi yang dipublikasikan biasanya diperhalus. Konvensi yang umum digunakan adalah moving average 21 sesi, atau kira-kira satu bulan perdagangan: jumlahkan rasio harian dalam 21 sesi terakhir, bagi dengan 21, lalu geser jendela pengamatan satu sesi ke depan. Versi 10 dan 50 sesi juga digunakan. Panjang periode yang dipilih menentukan seberapa besar lonjakan dalam satu hari tetap terlihat.
Ada dua hal yang perlu diperhatikan. Menghitung rata-rata dari 21 rasio harian bukanlah aritmetika yang sama dengan membagi volume put satu bulan dengan volume call satu bulan. Perhitungan pertama memberi bobot yang sama kepada setiap sesi. Perhitungan kedua memberi bobot lebih besar kepada sesi dengan aktivitas tinggi. Selain itu, angka yang diperhalus dan berada pada titik ekstrem terbentuk dari data selama satu bulan perdagangan. Karena itu, angka tersebut juga meninggalkan titik ekstrem secara perlahan.
SQL tepat di balik setiap angka
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 dGaris bergerigi menunjukkan rasio harian untuk basket saham individual, sedangkan garis halus menunjukkan rata-rata 21 sesinya. Pada sesi pertama yang ditampilkan, Apr 1, print harian tercatat sebesar 1.04, dibandingkan dengan 0.81 untuk angka yang diperhalus. Pada Jul 31, keduanya tercatat sebesar 0.56 dan 0.58. Selama 84 sesi, rata-rata bergerak menempuh sebagian dari jarak yang ditempuh rangkaian data mentah. Itulah tujuan utama penggunaan angka yang diperhalus.
Cara panel-panel ini menghitung
Jenis kontrak ditentukan dari simbol opsi itu sendiri. Huruf yang berada di depan kode strike delapan digit menunjukkan C untuk call dan P untuk put. Hanya kontrak dengan volume yang dilaporkan untuk sesi tersebut yang dihitung. Jadi, strike yang tidak pernah diperdagangkan tidak menambah jumlah di sisi mana pun. Panel pertama membagi total volume put selama satu bulan dengan total volume call selama satu bulan untuk setiap nama. Panel-panel lainnya terlebih dahulu menghitung satu rasio untuk setiap sesi, lalu merangkum rasio-rasio tersebut. Metode ini sesuai dengan cara moving average yang dipublikasikan dibentuk. Basket: SPY, QQQ, dan IWM untuk sisi broad market, serta AAPL, MSFT, NVDA, TSLA, dan KO untuk sisi saham individual. Setiap panel memuat SQL persis yang digunakan untuk menghasilkan data tersebut.
FAQ
Bagaimana cara menghitung put/call ratio?
Bagi jumlah kontrak put dengan jumlah kontrak call dalam periode yang sama. Sebagian besar versi yang dipublikasikan menggunakan volume sesi, sehingga angka 0,65 berarti 65 put diperdagangkan untuk setiap 100 call. Versi open interest menggunakan kontrak yang masih beredar, bukan kontrak yang diperdagangkan, sehingga menjawab pertanyaan yang berbeda.
Apakah put/call ratio di atas 1 tergolong tinggi?
Hal itu bergantung pada kategorinya. Untuk keranjang saham individual pada panel di atas, persentil ke-90 dari angka harian berada di 0.76, sehingga transaksi pada level di atasnya jarang terjadi. Untuk ETF pasar luas dan index options, ketika hedging portofolio terkonsentrasi pada put, angka di sekitar dan di atas 1 merupakan hal yang umum.
Apa perbedaan antara volume put/call ratio dan open interest put/call ratio?
Volume menghitung kontrak yang diperdagangkan selama sesi dan di-reset setiap pagi. Open interest menghitung kontrak yang masih terbuka dan terbawa dari satu hari ke hari berikutnya. Volume dapat meningkat dua kali lipat dalam satu sesi, sedangkan open interest hanya berubah beberapa persen. Karena itu, keduanya sering menunjukkan arah yang berbeda pada hari yang sama.
Put/call ratio mana yang biasanya dikutip media keuangan?
Biasanya Cboe equity put/call ratio atau total put/call ratio. Angka tersebut paling sering disajikan sebagai moving average 21 sesi, bukan print harian mentah. Keempat kategori Cboe bergerak pada level yang berbeda. Karena itu, angka yang dikutip tanpa kategori tidak dapat dibandingkan dengan benchmark apa pun.
Setiap panel di halaman ini dilengkapi SQL yang digunakan untuk menghasilkan datanya, sehingga setiap penghitungan dapat diperiksa baris demi baris. Untuk menjalankan perhitungan yang sama pada nama instrumen lain atau periode yang lebih panjang, ajukan permintaan dalam bahasa biasa di terminal Strasmore.