Strasmore Research
Học tập Matt ConnorBởi Matt Connor

Cách tính tỷ lệ put/call

Tìm hiểu công thức tính tỷ lệ put/call theo volume và open interest, vì sao tỷ lệ của chỉ số thường cao hơn và mức nào được xem là bình thường năm 2026.

Tỷ lệ put/call được tính bằng cách lấy số hợp đồng put được giao dịch chia cho số hợp đồng call được giao dịch trong cùng một khoảng thời gian. Nếu có 250.000 hợp đồng put và 500.000 hợp đồng call được giao dịch trong một phiên, tỷ lệ này là 0,50. Mọi tranh luận về chỉ báo này, chẳng hạn nên dùng khối lượng giao dịch hay open interest, cổ phiếu hay chỉ số, đều bắt nguồn từ việc yếu tố nào được tính ở mỗi vế của phép chia đó. Để xem định nghĩa cơ bản, hãy bắt đầu với tỷ lệ put/call là gì. Bài viết này thực hiện phép tính.

Công thức tính put/call ratio, từng bước

Công thức có hai đầu vào và một phép tính: đếm số put được giao dịch, đếm số call được giao dịch, rồi chia số thứ nhất cho số thứ hai. Put là hợp đồng trao cho người nắm giữ quyền bán 100 cổ phiếu cơ sở tại một strike price cố định vào hoặc trước ngày đáo hạn. Call trao quyền mua tại một strike price cố định. Volume ghi nhận số hợp đồng đã được chuyển nhượng trong phiên và đặt lại về 0 khi thị trường mở cửa vào phiên kế tiếp.

Các hợp đồng không được tính theo trọng số. Một lot của hợp đồng weekly far out of the money được tính ngang với một lot tại strike price có thanh khoản cao nhất trên bảng giá. Không hợp đồng nào được điều chỉnh theo số tiền chịu rủi ro. Đây là tỷ lệ dựa trên số lượng hợp đồng.

Yếu tố làm thay đổi kết quả là loại hợp đồng được đưa vào phép đếm. Bảng dưới đây áp dụng cùng một phép tính cho tám mã có thanh khoản cao trong trọn một tháng.

Truy vấnKhối lượng put và call của tám tên tuổi quen thuộc, tháng 7/2026
Câu lệnh SQL chính xác đằng sau mỗi con số
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

Trong tháng 7/2026, IWM có ratio cao nhất trong tám mã, ở mức 3.11 put trên mỗi call. MSFT có ratio thấp nhất, ở mức 0.38. Cùng một công thức và cùng một tháng, nhưng spread giữa mã cao nhất và thấp nhất rộng hơn nhiều so với những dao động từng ngày thường được nhắc đến. Một ratio được trích dẫn mà không nêu rõ nhóm phân loại hầu như không cung cấp thông tin.

Tính theo khối lượng giao dịch hay open interest

Có hai cách đếm khác nhau để tính tử số và mẫu số.

Cách tính theo khối lượng đếm số hợp đồng được giao dịch trong khoảng thời gian đó. Đây là thước đo dòng vốn, bắt đầu lại từ 0 trong mỗi phiên và cho biết hoạt động giao dịch trong ngày. Mọi tỷ lệ được nêu trong các bản tin thị trường đều là tỷ lệ này.

Cách tính theo open interest lấy số put đang lưu hành chia cho số call đang lưu hành. Open interest là số hợp đồng đã mở nhưng chưa được tất toán, thực hiện hoặc đáo hạn. Đây là thước đo quy mô vị thế tích lũy, không phải hoạt động trong ngày, nên biến động chậm. Một phiên có 30.000 put được chuyển nhượng giữa hai người đang nắm giữ sẽ cộng thêm 30.000 vào khối lượng, nhưng không làm thay đổi open interest. Khối lượng quyền chọn so với open interest trình bày cách ghi nhận các thay đổi này.

Giả sử một mã kết thúc phiên thứ Ba với 40.000 put và 50.000 call đang lưu hành, tương ứng tỷ lệ open interest là 0,80. Sang thứ Tư, có 30.000 put và 10.000 call được giao dịch, tương ứng tỷ lệ khối lượng là 3,00. Cả hai con số đều mô tả cùng một chuỗi quyền chọn trong cùng một ngày. Tuy nhiên, chúng chênh nhau gần bốn lần và đều chính xác. Tỷ lệ open interest cũng là cơ sở của phép tính max pain, trong đó các strike được tính trọng số theo số hợp đồng đang lưu hành thay vì số hợp đồng được giao dịch.

Các thước đo dòng vốn biến động mạnh. Dưới đây là tỷ lệ khối lượng hằng ngày của một ETF và một cổ phiếu riêng lẻ trong cùng một tháng.

Truy vấnTỷ lệ khối lượng put/call hằng ngày, SPY so với AAPL, tháng 7/2026
Câu lệnh SQL chính xác đằng sau mỗi con số
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

Trong Jul 1, SPY ghi nhận 1.1 so với 0.49 của AAPL. Đến Jul 31, hai mã lần lượt ở mức 20.55. Trong 22 phiên, các mức giao dịch hằng ngày biến động liên tục, còn hai chuỗi nằm ở các mặt bằng khác nhau trên biểu đồ. Chênh lệch về mặt bằng là thông tin hữu ích hơn trong hai điểm này.

Bốn tỷ lệ của Cboe: cổ phiếu, chỉ số, ETP và tổng

Con số được gọi là “tỷ lệ put/call” lấy từ số liệu thị trường hằng ngày của Cboe, trong đó công bố nhiều tỷ lệ khác nhau. Các nhóm được Cboe gọi như sau:

  • Tỷ lệ put/call cổ phiếu: quyền chọn trên từng cổ phiếu riêng lẻ.
  • Tỷ lệ put/call chỉ số: quyền chọn trên các chỉ số, bao gồm SPX và VIX.
  • Tỷ lệ put/call sản phẩm giao dịch trên sàn (ETP): quyền chọn trên ETF, trong đó có SPY, QQQ và IWM.
  • Tỷ lệ put/call tổng: cộng tất cả các nhóm.

Mỗi tỷ lệ đều được tính theo cùng một cách: tổng số put chia cho tổng số call trong từng nhóm. Vì vậy, các kết quả chỉ khác nhau ở những tài sản nằm trong mỗi nhóm. Các nhóm này không thể dùng thay thế cho nhau.

Quyền chọn chỉ số là công cụ tiêu chuẩn để phòng hộ toàn bộ danh mục chỉ với một giao dịch. Một quỹ nắm giữ danh mục cổ phiếu đa dạng thường mua put chỉ số để phòng hộ và không có lý do tương ứng để mua call chỉ số. Nhu cầu đó chỉ tập trung theo một hướng và hoàn toàn được tính vào tử số của nhóm chỉ số. Dòng tiền ở cổ phiếu riêng lẻ lại có xu hướng ngược lại, khi hoạt động mua call trên từng mã chiếm tỷ trọng lớn và ổn định trong khối lượng giao dịch. Hai nhóm có mặt bằng tỷ lệ khác nhau do đặc điểm cấu trúc. So sánh một tỷ lệ với mức chuẩn thuộc nhóm khác là sai lầm phổ biến nhất khi sử dụng chỉ báo này.

Các ETF thị trường rộng có vai trò phòng hộ tương tự quyền chọn chỉ số, nhưng được tính trong nhóm sản phẩm giao dịch trên sàn. Biểu đồ dưới đây theo dõi median theo tháng của cả hai nhóm.

Truy vấnTrung vị tỷ lệ put/call hằng tháng: ETF thị trường rộng so với cổ phiếu đơn lẻ
Câu lệnh SQL chính xác đằng sau mỗi con số
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

Biểu đồ kéo dài từ Aug 2025 đến Jul 2026. Ở cả hai đầu kỳ, median tỷ lệ hằng ngày của rổ ETF đều ở gần hoặc trên 1,0: 1.52 trong tháng đầu tiên và 1.49 trong tháng cuối cùng. Rổ cổ phiếu riêng lẻ ở dưới 1,0 tại cả hai đầu kỳ, lần lượt là 0.60.56, trong toàn bộ 12 tháng được thể hiện trên biểu đồ. Khoảng cách ổn định đó cho thấy một mức chuẩn phải nêu rõ thuộc nhóm nào thì mới có ý nghĩa.

Mức put/call ratio nào được xem là bình thường?

“Bình thường” là một khoảng, và khoảng đó thuộc về từng nhóm tài sản thay vì bản thân chỉ báo. Bảng dưới đây lấy tất cả các phiên trong 12 tháng gần nhất, rồi báo cáo tỷ lệ trung vị hằng ngày của từng nhóm, cùng với ngưỡng phân vị 10% và 90% bao quanh mức trung vị.

Truy vấnTỷ lệ hằng ngày thực tế nằm ở đâu, 12 tháng giao dịch
Câu lệnh SQL chính xác đằng sau mỗi con số
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

Đối với nhóm cổ phiếu đơn lẻ, tỷ lệ trung vị trong một phiên là 0.58. Mức 0.45 nằm tại phân vị 10%, còn 0.76 nằm tại phân vị 90%. Nhóm ETF thị trường diện rộng có phân phối cao hơn: trung vị ở 1.54, nằm giữa hai ngưỡng 1.251.86.

Vậy 1.20 có cao không? So với nhóm cổ phiếu đơn lẻ, một print ở mức 1.20 nằm trên phân vị 90% của 0.76, nên được xem là bất thường. So với nhóm ETF, mức này gần với trạng thái thường thấy. So với nhóm chỉ số, nơi dòng tiền hedging được mô tả ở trên tập trung chủ yếu, cùng một con số đó lại phải được đánh giá dựa trên một bộ ngưỡng khác. Chỉ một con số, nhưng nhóm tài sản đã quyết định kết luận trước khi quá trình diễn giải bắt đầu.

Các khoảng này cũng thay đổi theo thời gian. Các phân vị được tính trên 12 tháng gần nhất chỉ mô tả 12 tháng đó. Một khoảng tham chiếu được sao chép từ bài viết cách đây một thập kỷ lại mô tả một thị trường có cơ cấu hợp đồng khác và gần như chưa có giao dịch quyền chọn đáo hạn trong ngày. Tính lại các phân vị trên một khoảng thời gian gần đây là cách duy nhất để đánh giá trung thực một mức đọc là cao hay thấp.

Diễn giải là một công việc khác với tính toán. Một số người xem mức cao là dấu hiệu của vị thế bearish, trong khi các nhà đầu tư theo trường phái ngược chiều lại xem đó là một vị thế phòng hộ quá đông đúc. Bài viết put/call ratio cao có phải là tín hiệu bullish không sẽ phân tích đầy đủ lập luận này.

Vì sao dùng đường trung bình động 21 phiên

Tỷ lệ của một phiên chỉ là mẫu nhỏ trong một chuỗi dữ liệu nhiễu, nên phiên bản được công bố thường được làm mượt. Quy ước phổ biến là đường trung bình động 21 phiên, tương đương khoảng một tháng giao dịch: cộng các tỷ lệ ngày của 21 phiên gần nhất, chia cho 21, rồi dịch cửa sổ tính thêm một phiên. Ngoài ra còn có phiên bản 10 và 50 phiên. Độ dài được chọn sẽ quyết định mức độ một đột biến trong một ngày được giữ lại.

Có hai điểm cần lưu ý. Lấy trung bình 21 tỷ lệ ngày không giống với việc chia tổng khối lượng put của một tháng cho tổng khối lượng call của một tháng. Cách thứ nhất cho mỗi phiên trọng số như nhau. Cách thứ hai dành trọng số lớn hơn cho các phiên có hoạt động giao dịch sôi động. Ngoài ra, một giá trị đã được làm mượt ở vùng cực đoan được hình thành từ dữ liệu của cả tháng giao dịch, nên cũng rời khỏi vùng cực đoan đó từ từ.

Truy vấnTỷ lệ put/call hằng ngày của cổ phiếu đơn lẻ so với mức trung bình 21 phiên
Câu lệnh SQL chính xác đằng sau mỗi con số
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

Đường gấp khúc là tỷ lệ hằng ngày của nhóm cổ phiếu đơn lẻ. Đường mượt là đường trung bình 21 phiên của tỷ lệ này. Trong phiên đầu tiên được hiển thị, Apr 1, tỷ lệ ngày là 1.04, so với mức đã làm mượt 0.81. Tại Jul 31, hai giá trị lần lượt là 0.560.58. Trong 84 phiên, đường trung bình chỉ dịch chuyển một phần quãng đường của chuỗi dữ liệu gốc. Đây chính là lý do sử dụng giá trị đã làm mượt.

Cách các bảng này đếm dữ liệu

Loại hợp đồng được xác định từ chính option symbol: chữ cái đứng trước mã strike gồm tám chữ số là C đối với call và P đối với put. Chỉ những hợp đồng có khối lượng được báo cáo trong phiên mới được tính. Vì vậy, một strike không phát sinh giao dịch sẽ không đóng góp vào bên nào. Bảng đầu tiên chia tổng khối lượng put trong tháng cho tổng khối lượng call trong tháng của từng mã. Các bảng còn lại trước tiên tính một tỷ lệ cho từng phiên, sau đó tổng hợp các phiên đó. Đây là cách đường trung bình động được công bố được xây dựng. Các nhóm gồm SPY, QQQ và IWM ở phía thị trường rộng; cùng AAPL, MSFT, NVDA, TSLA và KO ở phía cổ phiếu đơn lẻ. Mỗi bảng đều kèm theo câu lệnh SQL chính xác đã tạo ra bảng đó.

Câu hỏi thường gặp

Tỷ lệ put/call được tính như thế nào?

Chia số hợp đồng put cho số hợp đồng call trong cùng một khoảng thời gian. Hầu hết các phiên bản được công bố sử dụng khối lượng giao dịch trong phiên. Vì vậy, mức 0,65 nghĩa là có 65 put được giao dịch trên mỗi 100 call. Phiên bản dựa trên open interest sử dụng số hợp đồng đang lưu hành thay vì số hợp đồng đã giao dịch, nên trả lời một câu hỏi khác.

Tỷ lệ put/call trên 1 có cao không?

Điều này phụ thuộc vào nhóm tài sản. Với rổ cổ phiếu đơn lẻ trong các biểu đồ trên, phân vị 90 của các mức trong ngày là 0.76. Vì vậy, các giao dịch ở trên mức này không phổ biến. Với ETF thị trường diện rộng và quyền chọn chỉ số, hoạt động phòng hộ danh mục thường tập trung vào put, nên mức quanh 1 hoặc cao hơn là bình thường.

Tỷ lệ put/call theo khối lượng khác gì tỷ lệ put/call theo open interest?

Khối lượng đếm số hợp đồng được giao dịch trong phiên và được đặt lại vào mỗi buổi sáng. Open interest đếm số hợp đồng còn mở và được duy trì từ ngày này sang ngày khác. Tỷ lệ theo khối lượng có thể tăng gấp đôi trong một phiên, trong khi tỷ lệ theo open interest chỉ dịch chuyển vài phần trăm. Vì vậy, hai chỉ số này thường cho tín hiệu khác nhau trong cùng một ngày.

Báo chí tài chính thường trích dẫn tỷ lệ put/call nào?

Thông thường là tỷ lệ put/call cổ phiếu của Cboe hoặc tổng tỷ lệ put/call. Phần lớn được trích dẫn dưới dạng đường trung bình động 21 phiên thay vì một mức trong ngày. Bốn nhóm của Cboe có các mức khác nhau. Vì vậy, một con số được trích dẫn nhưng không kèm nhóm không thể được so sánh với bất kỳ mức chuẩn nào.


Mỗi biểu đồ trên trang này đều đi kèm SQL đã tạo ra biểu đồ đó. Vì vậy, bạn có thể kiểm tra từng phép đếm theo từng dòng. Để thực hiện cùng phép tính với một mã khác hoặc khoảng thời gian dài hơn, hãy yêu cầu bằng tiếng Anh tự nhiên trên terminal Strasmore.

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