Strasmore Research

วิธีคำนวณ Put/Call Ratio และการตีความค่าดัชนี

อธิบายวิธีการคำนวณ Put/Call Ratio ด้วยสูตรปริมาณการซื้อขายและสถานะคงค้าง พร้อมวิเคราะห์เหตุผลที่ค่าดัชนีมักสูงกว่าหุ้นปกติ และเกณฑ์ค่ามาตรฐานที่ควรทราบในเดือนมิถุนายน 2026

อัตราส่วน Put/call

อัตราส่วน Put/call คำนวณโดยการนำจำนวนสัญญา Put ที่มีการซื้อขาย หารด้วยจำนวนสัญญา Call ที่มีการซื้อขายในช่วงเวลาเดียวกัน หากมีการซื้อขาย Put สองแสนห้าหมื่นสัญญา และ Call ห้าแสนสัญญาในระหว่างวัน อัตราส่วนดังกล่าวจะเท่ากับ 0.50 ข้อถกเถียงทั้งหมดเกี่ยวกับตัวชี้วัดนี้ ไม่ว่าจะเป็นเรื่องปริมาณการซื้อขายเทียบกับสถานะคงค้าง หรือหุ้นเทียบกับดัชนี ล้วนมีที่มาจากการนับจำนวนในแต่ละฝั่งของการหารนั้น สำหรับคำจำกัดความพื้นฐาน ให้เริ่มต้นที่ อัตราส่วน put/call คืออะไร หน้านี้จะแสดงวิธีการคำนวณดังกล่าว

ขั้นตอนการคำนวณ Put/call ratio

สูตรนี้มีข้อมูลนำเข้าสองชุดและดำเนินการเพียงขั้นตอนเดียว คือการนับจำนวน Put ที่มีการซื้อขาย นับจำนวน Call ที่มีการซื้อขาย แล้วนำค่าแรกหารด้วยค่าหลัง Put คือสัญญาที่ให้สิทธิแก่ผู้ถือในการขายหุ้นอ้างอิงจำนวนหนึ่งร้อยหุ้น ณ ราคาใช้สิทธิ (strike price) ที่กำหนดไว้ภายในหรือก่อนวันหมดอายุ ส่วน Call คือสิทธิในการซื้อ ณ ราคาใช้สิทธิที่กำหนด ปริมาณการซื้อขาย (volume) จะนับจำนวนสัญญาที่มีการเปลี่ยนมือระหว่างวัน และจะรีเซ็ตเป็นศูนย์เมื่อเปิดตลาดในวันถัดไป

การนับจำนวนนี้ไม่มีการถ่วงน้ำหนัก สัญญาหนึ่งล็อตในสถานะ far out of the money ที่หมดอายุรายสัปดาห์จะมีค่าเท่ากับการนับหนึ่งล็อตใน strike price ที่มีการซื้อขายคึกคักที่สุดในกระดาน และไม่มีการปรับสเกลตามมูลค่าเงินที่มีความเสี่ยง อัตราส่วนนี้จึงเป็นเพียงการนับจำนวนสัญญาเท่านั้น

ทางเลือกที่จะทำให้ผลลัพธ์เปลี่ยนไปคือการเลือกว่าจะนับสัญญาใดบ้าง ตารางด้านล่างนี้แสดงการคำนวณแบบเดียวกันในหุ้นที่มีสภาพคล่องสูงแปดตัวตลอดระยะเวลาหนึ่งเดือนเต็ม

คำสั่งดึงข้อมูลปริมาณ Put และ Call ของหุ้นรายตัว 8 แห่ง ประจำเดือนกรกฎาคม 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 ด้วยสูตรเดียวกันและระยะเวลาหนึ่งเดือนเท่ากัน กลับพบส่วนต่างระหว่างตัวที่มีค่าสูงสุดและต่ำสุดที่กว้างกว่าความผันผวนรายวันที่มักถูกนำมาเขียนถึงเสียอีก อัตราส่วนที่ถูกอ้างถึงโดยไม่มีการระบุหมวดหมู่กำกับไว้แทบจะไม่มีข้อมูลที่เป็นประโยชน์เลย

อิงตามปริมาณการซื้อขายหรืออิงตามสถานะคงค้าง

ตัวเลขสองชุดที่แตกต่างกันสามารถนำมาใช้เป็นตัวตั้งและตัวหารได้

เวอร์ชันที่อิงตามปริมาณการซื้อขาย (volume) จะนับจำนวนสัญญาที่มีการซื้อขายในช่วงเวลาที่กำหนด นี่คือการวัดกระแส (flow measure) ซึ่งเริ่มต้นจากศูนย์ในทุกรอบการซื้อขายและอธิบายถึงสิ่งที่ผู้เล่นในตลาดทำในวันนี้ อัตราส่วนพาดหัวข่าวทุกฉบับในการรายงานข่าวตลาดล้วนใช้ตัวเลขนี้

เวอร์ชันที่อิงตามสถานะคงค้าง (open interest) จะนำจำนวน Put option ที่ค้างอยู่ในตลาดมาหารด้วยจำนวน Call option ที่ค้างอยู่ โดยที่ open interest คือจำนวนสัญญาที่ถูกเปิดไว้และยังไม่มีการปิดสถานะ ใช้สิทธิ หรือหมดอายุ นี่คือการวัดยอดคงค้าง (stock measure) ซึ่งเป็นสถานะสะสมมากกว่าจะเป็นกิจกรรมรายวัน และมีการเปลี่ยนแปลงอย่างช้าๆ รอบการซื้อขายที่มีการเปลี่ยนมือ Put option จำนวน 30,000 สัญญา ระหว่างผู้ถือครองเดิมสองราย จะเพิ่มปริมาณ volume ขึ้น 30,000 สัญญา แต่ open interest จะยังคงเท่าเดิม ปริมาณการซื้อขายออปชันเทียบกับสถานะคงค้าง ครอบคลุมรายละเอียดการบันทึกข้อมูลส่วนนี้

สมมติชื่อหลักทรัพย์หนึ่งที่ปิดตลาดวันอังคารด้วยจำนวน Put option 40,000 สัญญา และ Call option 50,000 สัญญา ซึ่งคิดเป็นอัตราส่วน open interest ที่ 0.80 ในวันพุธมีการซื้อขาย Put option 30,000 สัญญา และ Call option 10,000 สัญญา คิดเป็นอัตราส่วน volume ที่ 3.00 ตัวเลขทั้งสองชุดอธิบายถึงออปชันชุดเดียวกันในวันเดียวกัน โดยมีความแตกต่างกันเกือบสี่เท่าและต่างก็ถูกต้องทั้งคู่ อัตราส่วน open interest ยังเป็นพื้นฐานของ การคำนวณ max pain ซึ่งให้น้ำหนักราคาใช้สิทธิ (strike) ตามจำนวนสัญญาคงค้าง แทนที่จะเป็นจำนวนสัญญาที่มีการซื้อขาย

การวัดกระแส (flow measure) มีความผันผวนสูง ด้านล่างนี้คืออัตราส่วน volume รายวันสำหรับ 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 ratio" มาจากสถิติตลาดรายวันของ Cboe ซึ่งเผยแพร่อัตราส่วนดังกล่าวไว้หลายประเภท โดย Cboe ได้จำแนกหมวดหมู่ไว้ดังนี้:

  • Equity put/call ratio: ออปชันบนหุ้นรายตัว
  • Index put/call ratio: ออปชันบนดัชนี รวมถึง SPX และ VIX
  • Exchange traded products put/call ratio: ออปชันบน ETF ซึ่งรวมถึง SPY, QQQ และ IWM
  • Total put/call ratio: ผลรวมของทุกหมวดหมู่ข้างต้น

แต่ละประเภทคำนวณด้วยวิธีเดียวกัน คือนำจำนวน Put ทั้งหมดหารด้วยจำนวน Call ทั้งหมดภายในหมวดหมู่นั้น ดังนั้นค่าที่ได้จะแตกต่างกันไปตามสินทรัพย์ที่อยู่ในกลุ่ม ซึ่งไม่สามารถนำมาใช้แทนกันได้

ออปชันบนดัชนีเป็นเครื่องมือมาตรฐานสำหรับการป้องกันความเสี่ยงของพอร์ตการลงทุนทั้งหมดในการซื้อขายเพียงครั้งเดียว กองทุนที่ถือหุ้นในวงกว้างจะซื้อ Index put เพื่อป้องกันความเสี่ยงและไม่มีเหตุผลที่ต้องซื้อ Index call ในลักษณะเดียวกัน ความต้องการดังกล่าวจึงเกิดขึ้นเพียงด้านเดียวและไปปรากฏอยู่ในตัวเศษของหมวดดัชนีทั้งหมด ในขณะที่กระแสการซื้อขายหุ้นรายตัวจะมีทิศทางตรงกันข้าม โดยการซื้อ Call บนหุ้นรายตัวถือเป็นสัดส่วนที่ใหญ่และต่อเนื่องของปริมาณการซื้อขาย ทั้งสองหมวดหมู่นี้จึงมีระดับค่าที่แตกต่างกันตามโครงสร้างพื้นฐาน การนำค่าจากหมวดหนึ่งไปเปรียบเทียบกับเกณฑ์มาตรฐานของอีกหมวดหนึ่งถือเป็นข้อผิดพลาดที่พบบ่อยที่สุดในการใช้ตัวชี้วัดนี้

ETF ในตลาดวงกว้างมีบทบาทในการป้องกันความเสี่ยงเช่นเดียวกับออปชันบนดัชนี แต่ถูกนับรวมอยู่ในหมวด Exchange traded products แผงข้อมูลด้านล่างนี้แสดงค่ามัธยฐานรายเดือนของทั้งสองฝั่ง

คำสั่งดึงข้อมูลค่ามัธยฐานรายเดือนของอัตราส่วน 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 เดือนที่แสดงในแผนภูมิ ช่องว่างที่คงอยู่นี้คือเหตุผลว่าทำไมเกณฑ์มาตรฐานจึงต้องระบุหมวดหมู่ให้ชัดเจนก่อนที่จะสามารถตีความหมายใด ๆ ได้

ค่า Put/call ratio ที่ถือว่าปกติคือเท่าใด

คำว่าปกติเป็นเพียงช่วงระดับหนึ่ง ซึ่งช่วงดังกล่าวขึ้นอยู่กับประเภทของสินทรัพย์มากกว่าตัวดัชนีชี้วัดเอง ข้อมูลในตารางด้านล่างนี้รวบรวมทุกช่วงการซื้อขายตลอดสิบสองเดือนที่ผ่านมา โดยแสดงค่ามัธยฐานของอัตราส่วนรายวันสำหรับแต่ละกลุ่มสินทรัพย์ พร้อมด้วยขอบเขตเปอร์เซ็นไทล์ที่ 10 และ 90

คำสั่งดึงข้อมูลตำแหน่งปัจจุบันของอัตราส่วนรายวัน ตลอดระยะเวลา 12 เดือนที่ผ่านมา
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 ในขณะที่กลุ่ม ETF ตลาดในภาพรวมมีระดับที่สูงกว่าตลอดการกระจายตัว โดยมีค่ามัธยฐานอยู่ที่ 1.54 ระหว่างขอบเขตที่ 1.25 และ 1.86

ดังนั้น ค่า 1.20 ถือว่าสูงหรือไม่ หากเทียบกับกลุ่มหุ้นรายตัว ค่า 1.20 ถือว่าเกินเปอร์เซ็นไทล์ที่ 90 ของ 0.76 ซึ่งถือเป็นระดับที่ผิดปกติ แต่หากเทียบกับกลุ่ม ETF ค่านี้ถือเป็นเรื่องปกติทั่วไป ส่วนในกลุ่มดัชนีซึ่งเป็นจุดที่กระแสการป้องกันความเสี่ยง (hedging flow) ตามที่กล่าวไปข้างต้นกระจุกตัวอยู่ ค่าเดียวกันนี้จะต้องถูกประเมินเทียบกับระดับอ้างอิงที่แตกต่างออกไป ตัวเลขเพียงตัวเดียวแต่ประเภทของสินทรัพย์จะเป็นตัวตัดสินก่อนที่จะเริ่มตีความใด ๆ

ช่วงระดับเหล่านี้ยังมีการเปลี่ยนแปลงได้ตลอดเวลา เปอร์เซ็นไทล์ที่คำนวณในช่วงสิบสองเดือนที่ผ่านมาจะอธิบายได้เพียงสิบสองเดือนที่ผ่านมาเท่านั้น และช่วงระดับอ้างอิงที่คัดลอกมาจากบทความเมื่อสิบปีก่อนย่อมสะท้อนตลาดที่มีส่วนผสมของสัญญาที่ต่างออกไป และแทบไม่มี การซื้อขายออปชันที่หมดอายุในวันเดียว (zero day expiry trading) อยู่ในนั้น การคำนวณเปอร์เซ็นไทล์ใหม่ในช่วงเวลาปัจจุบันจึงเป็นวิธีเดียวที่ถูกต้องในการระบุว่าค่าที่อ่านได้นั้นสูงหรือต่ำ

การตีความถือเป็นงานที่แยกออกจากการคำนวณ ค่าที่สูงอาจถูกมองโดยบางกลุ่มว่าเป็นการวางสถานะเชิงลบ (bearish) แต่ในมุมมองของนักลงทุนสวนกระแส (contrarian) อาจมองว่าเป็นการป้องกันความเสี่ยงที่หนาแน่นเกินไป ซึ่งบทความเรื่อง ว่าด้วยเรื่องค่า put/call ratio ที่สูงนั้นเป็นสัญญาณเชิงบวกหรือไม่ ได้วิเคราะห์ประเด็นนี้ไว้อย่างละเอียดแล้ว

เหตุผลที่ต้องใช้ค่าเฉลี่ยเคลื่อนที่ 21 วัน

อัตราส่วนของวันซื้อขายเดียวเป็นเพียงกลุ่มตัวอย่างขนาดเล็กของข้อมูลที่มีความผันผวนสูง ดังนั้นข้อมูลที่เผยแพร่มักจะถูกปรับให้เรียบ (smoothed) โดยธรรมเนียมปฏิบัติทั่วไปคือการใช้ค่าเฉลี่ยเคลื่อนที่ 21 วัน ซึ่งเทียบเท่ากับหนึ่งเดือนของการซื้อขาย โดยคำนวณจากผลรวมของอัตราส่วนรายวันย้อนหลัง 21 วัน หารด้วย 21 แล้วเลื่อนช่วงเวลาไปข้างหน้าทีละวัน นอกจากนี้ยังมีเวอร์ชัน 10 วันและ 50 วัน ซึ่งความยาวของช่วงเวลาที่เลือกจะเป็นตัวกำหนดว่าผลกระทบจากความผันผวนในวันเดียวจะคงเหลืออยู่มากน้อยเพียงใด

มีรายละเอียดสองประการที่ควรทราบ ประการแรก การหาค่าเฉลี่ยจากอัตราส่วนรายวัน 21 วัน ไม่เหมือนกับการนำปริมาณ Put option ทั้งเดือนมาหารด้วยปริมาณ Call option ทั้งเดือน วิธีแรกจะให้น้ำหนักทุกวันเท่ากัน ส่วนวิธีหลังจะให้น้ำหนักกับวันที่มียอดซื้อขายสูงมากกว่า ประการที่สอง ค่าที่ถูกปรับให้เรียบเมื่ออยู่ในระดับสุดโต่งนั้นถูกสะสมมาตลอดช่วงหนึ่งเดือน ดังนั้นค่าดังกล่าวจึงค่อย ๆ ปรับตัวออกจากระดับสุดโต่งนั้นอย่างช้า ๆ เช่นกัน

คำสั่งดึงข้อมูลอัตราส่วน 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 วันที่ผ่านมา ค่าเฉลี่ยเคลื่อนที่เปลี่ยนแปลงไปเพียงเศษเสี้ยวของระยะที่ข้อมูลดิบเคลื่อนที่ไป ซึ่งนั่นคือเหตุผลสำคัญของการอ้างอิงตัวเลขที่ปรับให้เรียบแล้ว

วิธีการนับข้อมูลในแต่ละส่วน

ประเภทของสัญญาจะระบุจากสัญลักษณ์ของ option โดยตัวอักษรที่อยู่หน้าตัวเลขรหัสราคาใช้สิทธิ 8 หลัก คือ C สำหรับ Call และ P สำหรับ Put เฉพาะสัญญาที่มีการรายงานปริมาณการซื้อขายในวันนั้นเท่านั้นที่จะถูกนำมานับ ดังนั้นราคาใช้สิทธิที่ไม่มีการซื้อขายจะไม่ถูกนำมาคำนวณในทั้งสองฝั่ง ส่วนแรกจะคำนวณโดยนำปริมาณ Put option รวมทั้งเดือนหารด้วยปริมาณ Call option รวมทั้งเดือนของแต่ละหลักทรัพย์ ส่วนที่เหลือจะคำนวณอัตราส่วนต่อวันขึ้นมาก่อน แล้วจึงนำมาสรุปผล ซึ่งสอดคล้องกับวิธีการสร้างค่าเฉลี่ยเคลื่อนที่ที่เผยแพร่ทั่วไป ตะกร้าหุ้น: SPY, QQQ และ IWM สำหรับฝั่งดัชนีตลาด และ AAPL, MSFT, NVDA, TSLA และ KO สำหรับฝั่งหุ้นรายตัว ทุกส่วนประกอบด้วยคำสั่ง SQL ที่ใช้สร้างข้อมูลนั้นโดยเฉพาะ

คำถามที่พบบ่อย

วิธีการคำนวณ Put/call ratio คืออะไร

ให้นำจำนวนสัญญา Put หารด้วยจำนวนสัญญา Call ในช่วงเวลาเดียวกัน ข้อมูลส่วนใหญ่ที่เผยแพร่จะใช้ปริมาณการซื้อขาย (volume) ของวันนั้น ดังนั้นค่าที่ระดับ 0.65 หมายถึงมีการซื้อขาย Put 65 สัญญา ต่อทุกๆ 100 สัญญาของ Call สำหรับเวอร์ชันที่ใช้ Open interest จะนับจำนวนสัญญาคงค้างแทนจำนวนสัญญาที่มีการซื้อขาย ซึ่งเป็นการตอบคำถามในมุมมองที่ต่างออกไป

ค่า Put/call ratio ที่สูงกว่า 1 ถือว่าสูงหรือไม่

ขึ้นอยู่กับประเภทของสินทรัพย์ สำหรับกลุ่มหุ้นรายตัวในตารางด้านบน ค่าเปอร์เซ็นไทล์ที่ 90 ของการอ่านค่ารายวันอยู่ที่ 0.76 ดังนั้นการซื้อขายที่ระดับสูงกว่านั้นจึงพบเห็นได้ไม่บ่อยนัก สำหรับ ETF ในตลาดวงกว้างและออปชันบนดัชนี ซึ่งการป้องกันความเสี่ยงของพอร์ตลงทุนมักกระจุกตัวอยู่ในฝั่ง Put ค่าที่อยู่ระดับประมาณ 1 หรือสูงกว่าถือเป็นเรื่องปกติ

ความแตกต่างระหว่าง Put/call ratio ที่คำนวณจาก Volume และ Open interest คืออะไร

Volume นับจำนวนสัญญาที่มีการซื้อขายระหว่างวันและจะรีเซ็ตใหม่ทุกเช้า ส่วน Open interest นับจำนวนสัญญาที่ยังคงสถานะอยู่และสะสมต่อเนื่องไปในแต่ละวัน ค่าที่คำนวณจาก Volume อาจเพิ่มขึ้นเป็นสองเท่าได้ภายในวันเดียว ในขณะที่ค่าจาก Open interest จะเปลี่ยนแปลงเพียงไม่กี่เปอร์เซ็นต์ ดังนั้นทั้งสองค่าจึงมักชี้ไปในทิศทางที่ต่างกันในวันเดียวกัน

สื่อทางการเงินมักอ้างอิง Put/call ratio ตัวใด

โดยปกติจะเป็น Cboe equity put/call ratio หรือ total put/call ratio และมักแสดงในรูปแบบค่าเฉลี่ยเคลื่อนที่ 21 วัน มากกว่าที่จะเป็นค่าดิบรายวัน ทั้งนี้ Cboe ทั้งสี่ประเภทมีระดับค่าที่แตกต่างกัน ดังนั้นตัวเลขที่อ้างถึงโดยไม่มีการระบุประเภทจึงไม่สามารถนำไปเทียบกับเกณฑ์มาตรฐานใด ๆ ได้


ข้อมูลทุกตารางในหน้านี้มาพร้อมกับ SQL ที่ใช้ประมวลผล ดังนั้นทุกจำนวนสามารถตรวจสอบได้ทีละบรรทัด หากต้องการคำนวณด้วยสมการเดียวกันกับสินทรัพย์อื่นหรือช่วงเวลาที่ยาวขึ้น สามารถระบุความต้องการเป็นภาษาอังกฤษทั่วไปได้ที่ Strasmore terminal

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