Strasmore Research

ราคา Event Contract คือความน่าจะเป็นอย่างไร

ทำความเข้าใจว่าราคา Event Contract สะท้อนความน่าจะเป็นอย่างไร เหตุใดราคา Yes รวม No จึงเกิน $1 และวิธีตัด spread เพื่ออ่านโอกาสที่แท้จริง

ราคา event contract คือค่าความน่าจะเป็นที่มี spread ครอบอยู่ โดยสัญญาจะจ่าย $1.00 หากผลลัพธ์ที่ระบุไว้เกิดขึ้น และจ่าย $0.00 หากไม่เกิดขึ้น จำนวนเงินจ่ายที่คงที่นี้ทำให้การคำนวณเป็นไปได้: ราคา 30 เซนต์สำหรับสัญญาที่จ่ายหนึ่งดอลลาร์ หมายความว่าตลาดกำลังประเมินโอกาสไว้ราว 30% การอ่านตัวเลขนี้อย่างถูกต้องต้องปรับสองส่วน ได้แก่ spread และกลไกที่อยู่เบื้องหลังการชำระราคา

ราคาสัญญาอีเวนต์บอกอะไรเกี่ยวกับความน่าจะเป็น

ทุกอย่างอธิบายได้จากโครงสร้างการจ่ายผลตอบแทน ซื้อสัญญา Yes ที่ราคา p แล้วจะได้รับเงิน $1.00 หากผลลัพธ์ได้รับการตัดสินว่าเป็น Yes และไม่ได้รับเงินหากผลลัพธ์เป็น No เมื่อเกิดเหตุการณ์ซ้ำหลายครั้ง ค่าเฉลี่ยของเงินที่ได้รับจะเท่ากับความน่าจะเป็นที่แท้จริงของ Yes หากจ่ายราคาเท่ากับความน่าจะเป็นนั้นก็จะเสมอตัว ดังนั้นราคาที่จ่ายจึง เป็น ความน่าจะเป็นจุดคุ้มทุน และนี่คือเหตุผลที่ตัวเลขเดียวกันทำหน้าที่ได้ทั้งสองอย่าง

คำศัพท์สี่คำ ซึ่งให้คำจำกัดความไว้ครั้งเดียว:

  • สัญญา Yes: จ่ายเงิน $1.00 หากเหตุการณ์เกิดขึ้น และจ่าย $0.00 หากไม่เกิดขึ้น
  • สัญญา No: จ่ายเงิน $1.00 หากเหตุการณ์ไม่เกิดขึ้น สัญญา Yes และ No เป็นสองด้านของเหรียญเดียวกัน
  • การชำระผล: ช่วงเวลาที่สัญญาได้รับการตัดสิน และฝ่ายหนึ่งได้รับเงินหนึ่งดอลลาร์
  • แหล่งข้อมูลสำหรับการตัดสินผล: รายงานหรือฟีดที่ระบุไว้ซึ่งใช้เป็นเกณฑ์ในการชำระสัญญา สัญญาจะจ่ายเงินตามสิ่งที่แหล่งข้อมูลนั้นระบุ ไม่ใช่ตามสิ่งที่เกิดขึ้นจริง

ราคาเสนอซื้อขายของสัญญาอีเวนต์ไม่ได้เป็นส่วนหนึ่งของชุดข้อมูลที่ใช้จัดทำหน้านี้ แผงข้อมูลทั้งหมดด้านล่างวัดคณิตศาสตร์เดียวกันในกรณีที่สามารถวัดได้โดยตรง โดยใช้ข้อมูลจาก listed US equity options Delta ของ Call option มีค่าตั้งแต่ 0 ถึง 1 และใช้ประมาณโอกาสที่ตลาดประเมินว่าสัญญาจะหมดอายุแบบ in the money ซึ่งเป็นคำถามแบบทวิภาคีเดียวกับที่สัญญาอีเวนต์ถามว่า ในวันที่ชำระผล ราคาอยู่เหนือระดับที่กำหนดหรือไม่ Delta เป็นเพียงค่าประมาณของความน่าจะเป็น และเป็นความน่าจะเป็นภายใต้สมมติฐาน risk-neutral ไม่ใช่การคาดการณ์ ข้อจำกัดทั้งสองประการปรากฏให้เห็นในแผงข้อมูลต่าง ๆ คู่มือ option delta อธิบายตัววัดนี้โดยตรง

เหตุใด Yes และ No จึงรวมกันได้มากกว่า $1?

Yes และ No ที่จับคู่กันครอบคลุมผลลัพธ์ทั้งหมด และมีเพียงหนึ่งฝั่งเท่านั้นที่จ่ายผลตอบแทน ใน options chain คู่เดียวกันนี้เทียบได้กับ Call และ Put ที่มี strike และวันหมดอายุเดียวกัน โดย Call จะอยู่ in the money เมื่อราคาปิดสูงกว่า strike ส่วน Put จะอยู่ in the money เมื่อราคาปิดต่ำกว่า strike ดังนั้นความน่าจะเป็นของทั้งสองฝั่งต้องรวมกันเป็น 100% ต่อไปนี้คือคู่ดังกล่าวจาก SPY chain หนึ่งชุดในวันเดียว โดยจัดกลุ่มเป็นช่วง 2% รอบราคาปัจจุบัน

คำสั่งดึงข้อมูลความน่าจะเป็นของ Yes และ No ใน SPY chain เดียว: ฝั่ง call ฝั่ง put และรวมทั้งคู่
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH chain AS (
    SELECT strike_price,
           toFloat64(any(underlying_close)) AS spot,
           avgIf(delta, delta > 0) AS call_delta,
           avgIf(-delta, delta < 0) AS put_delta_abs,
           countIf(delta > 0) AS calls,
           countIf(delta < 0) AS puts
    FROM global_markets.options_greeks
    WHERE underlying_symbol = 'SPY'
      AND date = toDate('2026-06-30')
      AND expiration_date = toDate('2026-07-31')
      AND iv_converged = 1
      AND volume > 0
    GROUP BY strike_price
    HAVING calls > 0 AND puts > 0
),
banded AS (
    SELECT toInt32(round(100 * (toFloat64(strike_price) / spot - 1) / 2) * 2) AS band,
           call_delta,
           put_delta_abs
    FROM chain
)
SELECT concat(if(band > 0, '+', ''), toString(band), '% vs spot') AS strike_vs_spot,
       round(100 * avg(call_delta), 1) AS yes_prob_pct,
       round(100 * avg(put_delta_abs), 1) AS no_prob_pct,
       round(100 * avg(call_delta + put_delta_abs), 1) AS pair_total_pct,
       count() AS strikes
FROM banded
WHERE abs(band) <= 8
GROUP BY band
ORDER BY band
Run this yourself

ที่ -8% vs spot ฝั่ง Call อยู่ที่ 91.6% และฝั่ง Put อยู่ที่ 7.8% รวมกันเป็น 99.5% ที่ปลายสุดของ ladder คือ +6% vs spot ทั้งสองฝั่งอยู่ที่ 3.6% และ 82.5% รวมเป็น 86.2% ทุกช่วงจำนวน 8 ช่วงอยู่ภายในค่าคลาดเคลื่อนจากการปัดเศษของ 100% เส้นราบตลอดกราฟนี้คือข้อจำกัดที่ตลาด binary ทุกแห่งต้องอยู่ภายใต้ การวัดสถานะรวมของทั้งสองฝั่งคือสิ่งที่ อัตราส่วน Put Call ใช้นับ

ค่าที่คำนวณตามแบบจำลองเป็นไปตามหลัก แต่ราคาเสนอซื้อขายไม่เป็นเช่นนั้น สมมติว่าสัญญาหนึ่งมี bid ที่ 62 และ ask ที่ 66 ขณะที่ฝั่ง No มี bid ที่ 36 และ ask ที่ 40 หากซื้อ Yes ที่ 66 และ No ที่ 40 เท่ากับจ่าย $1.06 สำหรับสถานะที่รับประกันว่าจะจ่ายคืนเพียง $1.00 หากขายทั้งสองฝั่งที่ราคา bid จะเก็บเงินได้ 98 เซนต์ ขณะที่มีภาระต้องจ่าย $1.00 ส่วนต่าง 6 เซนต์ระหว่างราคา ask ทั้งสองฝั่งคือ overround หรือจำนวนที่นักพนันกีฬามักเรียกว่า vig และเป็นค่าตอบแทนที่ venue และ market maker ได้รับจากการวางสภาพคล่องอยู่ในตลาด หน้า ส่วนต่างระหว่างราคา bid และ ask อธิบายว่าส่วนต่างนี้เกิดขึ้นได้อย่างไร

การคำนวณ de-vig ทีละขั้นตอน

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

  1. คำนวณราคากลางของแต่ละฝั่ง โดยราคา No อยู่ที่ 64 เซนต์ และราคา No อยู่ที่ 38 เซนต์
  2. นำราคากลางมาบวกกัน มูลค่ารวมของตลาดเท่ากับ 102 เซนต์
  3. นำราคากลางของแต่ละฝั่งหารด้วยมูลค่ารวมดังกล่าว 64 / 102 เท่ากับ 62.7% และ 38 / 102 เท่ากับ 37.3%
  4. ตรวจสอบผลรวม ความน่าจะเป็นของทั้งสองฝั่งรวมกันเท่ากับ 100%

การปรับสเกลนี้คือความหมายทั้งหมดของ de-vigging และเป็นการทำให้ข้อมูลอยู่ในรูปมาตรฐานเดียวกับที่ผู้เดิมพันใช้กับอัตราต่อรองแบบทศนิยม

ลองใช้วิธีเดียวกันกับตลาดที่มีส่วนต่างแคบลง โดยเสนอราคาสัญญาเดิมที่ 63 bid และ 64 ask ขณะที่ฝั่ง No อยู่ที่ 36 bid และ 37 ask ราคากลางจึงเท่ากับ 63.5 และ 36.5 มูลค่ารวมของตลาดเท่ากับ 100 เซนต์พอดี และความน่าจะเป็นหลังทำ de-vig อยู่ที่ 63.5% ค่าประมาณสองชุด ได้แก่ 62.7% จากตลาดที่มีส่วนต่างกว้าง และ 63.5% จากตลาดที่มีส่วนต่างแคบ ต่างกันไม่ถึงหนึ่งจุดเปอร์เซ็นต์ แต่ช่วงความน่าจะเป็นที่สมเหตุสมผลไม่ได้แคบเท่ากัน ความน่าจะเป็นใด ๆ ระหว่างราคา bid ที่ 62 เซนต์กับราคา ask ที่ 66 เซนต์ยังสอดคล้องกับราคาที่เสนอในตลาดกว้าง ดังนั้นตลาดที่มีส่วนต่าง 4 เซนต์จึงระบุอัตราต่อรองได้ภายในช่วงประมาณ 4 จุดเท่านั้น และไม่ควรตีความเกินกว่านั้น การเขียนว่า “62.7%” จากตลาดที่มีส่วนต่าง 4 เซนต์ เท่ากับระบุความแม่นยำสามหลัก ทั้งที่ตลาดไม่มีข้อมูลรองรับ ความกว้างของ spread คือระดับความแม่นยำของข้อมูล

ราคาที่ 30% หมายความว่าเหตุการณ์นี้เกิดขึ้น 30% ของเวลาหรือไม่?

การทดสอบ calibration คือคำตอบ ให้รวบรวมสัญญาทั้งหมดที่ตลาดกำหนดราคาไว้ใกล้ 30% แล้วนับว่าเหตุการณ์นั้นเกิดขึ้นบ่อยเพียงใด โดยใช้สัญญา Call ของ SPY ทุกสัญญาที่มีข้อมูลตั้งแต่เดือนมกราคม 2022 ซึ่งบันทึกข้อมูลเมื่อเหลือเวลาประมาณ 30 วันก่อนหมดอายุ จากนั้นจัดกลุ่มตามช่วงความน่าจะเป็นที่สะท้อนในราคา และตรวจสอบว่า SPY ปิดสูงกว่า strike price ดังกล่าวในวันหมดอายุหรือไม่

คำสั่งดึงข้อมูลความน่าจะเป็นโดยนัยเทียบกับผลที่เกิดขึ้นจริง: call ของ SPY ที่เหลือ 30 วันก่อนหมดอายุ ตั้งแต่ปี 2022 ถึงมิถุนายน 2026
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH px AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session,
           argMax(toFloat64(close), window_start) AS close_px
    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-06-30')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY session
),
snap AS (
    SELECT ticker AS contract,
           argMin(delta, abs(days_to_expiry - 30)) AS implied_prob,
           toFloat64(any(strike_price)) AS strike,
           any(expiration_date) AS expiry
    FROM global_markets.options_greeks
    WHERE underlying_symbol = 'SPY'
      AND date >= toDate('2022-01-01')
      AND expiration_date <= toDate('2026-06-30')
      AND days_to_expiry BETWEEN 25 AND 35
      AND iv_converged = 1
      AND volume > 0
      AND delta > 0.02
      AND delta < 0.98
    GROUP BY contract
)
SELECT multiIf(implied_prob < 0.10, '2-10%',
               implied_prob < 0.20, '10-20%',
               implied_prob < 0.30, '20-30%',
               implied_prob < 0.40, '30-40%',
               implied_prob < 0.50, '40-50%',
               implied_prob < 0.60, '50-60%',
               implied_prob < 0.70, '60-70%',
               implied_prob < 0.80, '70-80%',
               implied_prob < 0.90, '80-90%',
                                    '90-98%') AS implied_bucket,
       count() AS contracts,
       round(100 * avg(implied_prob), 1) AS implied_prob_pct,
       round(100 * avg(close_px > strike), 1) AS finished_above_pct
FROM snap
INNER JOIN px ON px.session = snap.expiry
GROUP BY implied_bucket
ORDER BY implied_prob_pct
Run this yourself

คอลัมน์ความน่าจะเป็นที่สะท้อนในราคาจะเพิ่มขึ้นตามลำดับขั้นโดยโครงสร้างของการจัดกลุ่ม ส่วนคอลัมน์ผลลัพธ์ที่เกิดขึ้นจริงคือสิ่งที่ตลาดไม่ทราบล่วงหน้า ที่ด้านล่าง 2-10% มีค่าเฉลี่ยความน่าจะเป็นที่สะท้อนในราคา 4.7% จากทั้งหมด 4276 สัญญา และปิดสูงกว่า strike price 4.9% ของเวลา ที่ด้านบน 90-98% มีค่าเฉลี่ย 94.3% และปิดสูงกว่า strike price 97.8% ของเวลา สัดส่วนที่เกิดขึ้นจริงบริเวณด้านล่างของลำดับขั้นต่ำกว่าสัดส่วนที่เกิดขึ้นจริงบริเวณด้านบนอย่างมาก ซึ่งเป็นลักษณะของ calibration ที่ยังคงใช้ได้โดยประมาณ

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

เมื่อจำกัดกลุ่มให้เหลือสัญญาที่ตลาดประเมินว่าเป็นโอกาสใกล้เคียงกัน หรือมีราคาใกล้ 50 เซนต์ต่อดอลลาร์ สำหรับหุ้นชื่อดังในภาคครัวเรือนหกแห่ง:

คำสั่งดึงข้อมูลสัญญาที่มีราคาใกล้เคียงการเสี่ยงหัวก้อย: ผลลัพธ์โดยนัยเทียบกับผลลัพธ์จริงแยกตามชื่อ ตั้งแต่ปี 2023 ถึงมิถุนายน 2026
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH px AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS session,
           argMax(toFloat64(close), window_start) AS close_px
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'KO', 'XOM')
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2023-01-01')
      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker, session
),
snap AS (
    SELECT underlying_symbol AS symbol,
           ticker AS contract,
           argMin(delta, abs(days_to_expiry - 30)) AS implied_prob,
           toFloat64(any(strike_price)) AS strike,
           any(expiration_date) AS expiry
    FROM global_markets.options_greeks
    WHERE underlying_symbol IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'KO', 'XOM')
      AND date >= toDate('2023-01-01')
      AND expiration_date <= toDate('2026-06-30')
      AND days_to_expiry BETWEEN 25 AND 35
      AND iv_converged = 1
      AND volume > 0
      AND delta BETWEEN 0.40 AND 0.60
    GROUP BY symbol, contract
)
SELECT snap.symbol AS symbol,
       count() AS contracts,
       round(100 * avg(implied_prob), 1) AS implied_prob_pct,
       round(100 * avg(close_px > strike), 1) AS finished_above_pct
FROM snap
INNER JOIN px ON px.ticker = snap.symbol AND px.session = snap.expiry
GROUP BY symbol
ORDER BY finished_above_pct DESC
Run this yourself

ความน่าจะเป็นที่สะท้อนในราคาจะอยู่ใกล้ 50% ในทุกรายการตามโครงสร้างของการจัดกลุ่ม ส่วนคอลัมน์ผลลัพธ์ที่เกิดขึ้นจริงกระจายตัวออกจากกัน: SPY ปิดสูงกว่า strike price 68.4% ของเวลา จากทั้งหมด 4785 สัญญา เทียบกับ 49.9% สำหรับ XOM มีหุ้นชื่อดัง 6 แห่ง ใช้ความน่าจะเป็นที่สะท้อนในราคาเดียวกัน แต่ผลลัพธ์ที่เกิดขึ้นจริงแตกต่างกันอย่างมาก ราคาที่ใกล้ 50 เซนต์สะท้อนอัตราต่อรองที่ตลาดประเมิน สัญญาแต่ละสัญญายังคงชำระราคาได้เพียง $1.00 หรือ $0.00

จุดคุ้มทุนของสัญญาราคา $0.70 อยู่ที่เท่าไร

สัญญาที่ซื้อในราคา 70 เซนต์จะจ่าย $1.00 หากผลลัพธ์เป็น Yes และไม่จ่ายเงินหากเป็น No กำไรอยู่ที่ 30 เซนต์ ขาดทุนอยู่ที่ 70 เซนต์ และความน่าจะเป็นจุดคุ้มทุนเท่ากับราคาพอดี หากความน่าจะเป็นที่แท้จริงอยู่ที่ 70% สถานะนี้ก็มีผลคาดหมายเสมือนการโยนเหรียญ เพียงแต่มีขั้นตอนเพิ่มเติม หากความน่าจะเป็นสูงกว่า 70% ตัวเลขจะเป็นประโยชน์ต่อผู้ซื้อ หากต่ำกว่านั้น ตัวเลขจะเป็นผลเสียต่อผู้ซื้อ ทั้งหมดนี้ยังไม่รวมต้นทุน

ต้นทุนทำให้จุดดังกล่าวเปลี่ยนไปไม่เท่ากัน การเพิ่มต้นทุนไปกลับ 1 เซนต์ให้กับสัญญาราคา 70 เซนต์ จะทำให้จุดคุ้มทุนขยับจาก 70% เป็นประมาณ 71% ซึ่งแทบไม่มีนัยสำคัญเมื่อเทียบกับสถานะ การเพิ่มต้นทุนเท่ากันให้กับสัญญาราคา 5 เซนต์ จะทำให้จุดคุ้มทุนขยับจาก 5% เป็น 6% และดึงส่วนหนึ่งในห้าของความได้เปรียบทางทฤษฎีออกไป ค่าธรรมเนียมคงที่สร้างความเสียหายมากที่สุดต่อ long shot ที่มีราคาถูกที่สุด เพราะค่าธรรมเนียมคิดเป็นสัดส่วนที่สูงที่สุดของราคาที่จ่าย ประเภทคำสั่งซื้อก็มีผลในลักษณะเดียวกัน การข้าม spread หมายถึงการจ่ายราคาเสนอขายเต็มจำนวน ขณะที่คำสั่งจำกัดราคาที่วางค้างอยู่จะตั้งไว้ที่ราคาที่ผู้ซื้อกำหนด และอาจไม่ถูกจับคู่เลย (คำสั่ง market order เทียบกับคำสั่ง limit order)

เหตุใดผลลัพธ์ที่แทบจะแน่นอนจึงซื้อขายกันที่ $0.97?

แม้จะเป็นผลลัพธ์ที่ไม่มีใครโต้แย้ง แต่ราคาซื้อขายก็แทบไม่อยู่ที่ $1.00 ปัจจัยสี่ประการอยู่ในส่วนต่างสามเซนต์สุดท้ายนี้:

  • มูลค่าของเงินตามเวลา เงินหนึ่งดอลลาร์จะได้รับเมื่อถึงวันชำระราคา การจ่าย 97 เซนต์ในวันนี้เพื่อรับ $1.00 ในอีกสามเดือนถือเป็นผลตอบแทนจากเงินทุน และเงินสดก้อนนั้นยังนำไปใช้ประโยชน์อื่นได้ (พักเงินสดที่ไม่ได้ใช้งาน).
  • ความเสี่ยงจากแหล่งข้อมูลที่ใช้ตัดสินผล สัญญาจะชำระราคาตามข้อมูลที่แหล่งข้อมูลที่ระบุไว้รายงาน และตามกำหนดเวลาของแหล่งข้อมูลนั้น การแก้ไขข้อมูล ความล่าช้า และถ้อยคำที่กำกวมยังคงเป็นความเสี่ยง แม้ผลลัพธ์จะเป็นที่ยอมรับร่วมกันแล้วก็ตาม
  • ส่วนต่าง bid-ask ตลาดที่เสนอราคา bid ที่ 96 และ ask ที่ 98 มีราคากลาง 97 เซนต์ แต่ไม่มีการซื้อขายที่ 97 ในแง่เปอร์เซ็นต์ สมุดคำสั่งซื้อมักมีส่วนต่างกว้างที่สุดตรงปลายช่วงราคา
  • ความเสี่ยงปลายหาง ผู้คนมักใช้คำว่า “แน่นอน” อย่างหลวม ๆ สัญญาจะชำระราคาตามคำจำกัดความในข้อกำหนดของสัญญา

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

คำสั่งดึงข้อมูลการคลี่คลายของความน่าจะเป็นใกล้เคียงการเสี่ยงหัวก้อย: ความน่าจะเป็นโดยนัยเฉลี่ยตามจุดตรวจสอบ แยกตามผลลัพธ์
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH px AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session,
           argMax(toFloat64(close), window_start) AS close_px
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2025-06-01')
      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY session
),
coin_flips AS (
    SELECT ticker AS contract
    FROM global_markets.options_greeks
    WHERE underlying_symbol = 'SPY'
      AND date >= toDate('2025-06-01')
      AND expiration_date <= toDate('2026-06-30')
      AND days_to_expiry BETWEEN 28 AND 32
      AND iv_converged = 1
      AND volume > 0
      AND delta > 0
    GROUP BY contract
    HAVING avg(delta) BETWEEN 0.35 AND 0.65
),
obs AS (
    SELECT g.days_to_expiry AS dte,
           g.delta AS implied_prob,
           if(px.close_px > toFloat64(g.strike_price), 1, 0) AS finished_above
    FROM global_markets.options_greeks AS g
    INNER JOIN coin_flips AS c ON g.ticker = c.contract
    INNER JOIN px ON px.session = g.expiration_date
    WHERE g.underlying_symbol = 'SPY'
      AND g.date >= toDate('2025-06-01')
      AND g.expiration_date <= toDate('2026-06-30')
      AND g.iv_converged = 1
      AND g.volume > 0
      AND g.delta > 0
      AND (g.days_to_expiry BETWEEN 28 AND 32
        OR g.days_to_expiry BETWEEN 19 AND 23
        OR g.days_to_expiry BETWEEN 12 AND 16
        OR g.days_to_expiry BETWEEN 6 AND 8
        OR g.days_to_expiry BETWEEN 3 AND 4
        OR g.days_to_expiry <= 1)
)
SELECT multiIf(dte >= 28, '30 days out',
               dte >= 19, '21 days out',
               dte >= 12, '14 days out',
               dte >= 6, '7 days out',
               dte >= 3, '3 days out',
                         '1 day out') AS checkpoint,
       round(100 * avgIf(implied_prob, finished_above = 1), 1) AS eventual_yes_pct,
       round(100 * avgIf(implied_prob, finished_above = 0), 1) AS eventual_no_pct,
       count() AS contract_days
FROM obs
GROUP BY checkpoint
HAVING countIf(finished_above = 1) > 0 AND countIf(finished_above = 0) > 0
ORDER BY avg(dte) DESC
Run this yourself

30 days out สัญญาที่ท้ายที่สุดปิดเหนือราคาใช้สิทธิมีความน่าจะเป็นโดยนัยเฉลี่ย 52.6% เทียบกับ 47.8% สำหรับสัญญาที่ไม่ปิดเหนือราคาใช้สิทธิ เมื่อถึง 1 day out กลุ่มสองกลุ่มเดิมมีค่า 79.8% และ 14.4% ตามลำดับ การแบ่งกลุ่มนี้อาศัยข้อมูลย้อนหลัง ไม่มีใครที่อ่าน chain ณ จุดตรวจสอบแรกสามารถแยกสองกลุ่มนี้ออกจากกันได้ ซึ่งเป็นสภาวะเดียวกับที่สัญญาอีเวนต์ซึ่งอยู่ระหว่างการซื้อขายกำลังเผชิญอยู่เสมอ ความแน่นอนจะเกิดขึ้นในวันชำระราคา และราคาจะค่อย ๆ เคลื่อนไปสู่จุดนั้น ข้อกำหนดการชำระราคาจะกำหนดช่วงเวลาที่แน่นอน: ออปชันที่ชำระราคาตาม AM กับ PM แสดงให้เห็นว่ารายละเอียดด้านเวลานี้อาจมีผลมากเพียงใด และ ความผันผวนโดยนัย คือคำตอบของ chain เดียวกันต่อคำถามเรื่องขนาดของการเคลื่อนไหว ไม่ใช่ทิศทาง

หมายเหตุและข้อจำกัดของข้อมูล

Delta เป็นตัวแทนของราคา Yes แต่ไม่ใช่สิ่งเดียวกัน Delta ใช้ประมาณค่าโอกาสแบบ risk-neutral ที่สัญญาจะหมดอายุ in the money และแตกต่างเล็กน้อยจากความน่าจะเป็นตามแบบจำลองของอีเวนต์เดียวกัน ผลลัพธ์ในที่นี้เปรียบเทียบราคาปิดของช่วงการซื้อขายปกติในวันหมดอายุกับราคาใช้สิทธิ ซึ่งเป็นค่าประมาณของการชำระราคา ไม่ใช่การทำซ้ำค่าชำระราคาอย่างเป็นทางการ แผงข้อมูล options ทุกชุดจะกรองเฉพาะสัญญาที่มี implied volatility บรรจบกันและมีปริมาณการซื้อขายมากกว่าศูนย์ในวันดังกล่าว ดังนั้นสัญญาที่ไม่มีการเคลื่อนไหวจะถูกตัดออกจากกลุ่มตัวอย่าง สัญญาแต่ละรายการจะเข้าสู่แผง calibration เพียงครั้งเดียว ณ snapshot ที่ใกล้เคียงกับ 30 วันก่อนหมดอายุมากที่สุด

คำถามที่พบบ่อยเกี่ยวกับการกำหนดราคา event contract

ราคาของ event contract เท่ากับความน่าจะเป็นหรือไม่

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

การ de-vig ตลาดแบบสองด้านทำอะไร

การ de-vig จะปรับสัดส่วนราคา midpoint ของทั้งสองฝั่งให้รวมกันเป็น 100% ให้นำ Yes mid บวกกับ No mid แล้วหารแต่ละค่าด้วยผลรวมดังกล่าว หาก Yes อยู่ที่ 64 เซนต์ และ No อยู่ที่ 38 เซนต์ รวมเป็น 102 เซนต์ คู่ราคาหลัง de-vig จะอยู่ที่ 62.7% และ 37.3%

เหตุใดราคา Yes และ No จึงรวมกันมากกว่าหนึ่งดอลลาร์

ในสองฝั่งนี้จะมีหนึ่งฝั่งที่จ่ายเงิน $1.00 อย่างแน่นอน ดังนั้นในตลาดที่ไม่มีต้นทุนเสียดทาน ราคาของทั้งคู่รวมกันควรเท่ากับ $1.00 พอดี ส่วนต่างที่เพิ่มขึ้นบนฝั่ง ask คือ overround หรือรายได้จาก spread ที่รวมอยู่ในตลาดแบบสองด้าน หากขายทั้งสองฝั่งแทน ราคาที่ได้รับรวมกันจะต่ำกว่าหนึ่งดอลลาร์ ซึ่งเป็นภาพสะท้อนของส่วนต่างเดียวกันในทางกลับกัน

Contract ที่ราคา 90 เซนต์จะไม่สำเร็จหนึ่งครั้งในสิบครั้งใช่หรือไม่

โดยประมาณ หากตลาดได้รับการปรับเทียบอย่างเหมาะสมเมื่อพิจารณา contract ลักษณะเดียวกันจำนวนมาก ในแผง SPY ด้านบน กลุ่ม 90-98% มีความน่าจะเป็นโดยนัยเฉลี่ยที่ 94.3% และราคาปิดสูงกว่า strike 97.8% ของเวลา อย่างไรก็ดี contract รายการเดียวจะชำระที่หนึ่งดอลลาร์หรือศูนย์เท่านั้น

Spread ที่กว้างมีผลต่อความน่าจะเป็นโดยนัยมากเพียงใด

โดยประมาณเท่ากับความกว้างของ spread ตลาดที่มี spread 1 เซนต์จะจำกัดค่าความน่าจะเป็นให้อยู่ภายในช่วงหนึ่งจุด ตลาดที่มี spread 4 เซนต์จะเหลือช่วงความน่าจะเป็นกว้าง 4 จุด และค่าความน่าจะเป็นทุกค่าภายในช่วงนั้นยังสอดคล้องกับราคาที่เสนออยู่


ตัวเลขทั้งหมดข้างต้นมาจาก stored query ที่ประมวลผลข้อมูล contract ที่จดทะเบียนไว้ โดยสามารถเปิดดู SQL เบื้องหลังแต่ละแผงได้ในคลิกเดียว ทดลองคำนวณ de-vig แบบเดียวกันกับ chain แบบเรียลไทม์บน Strasmore terminal

#prediction markets#event contracts#probability#market mechanics#options