Strasmore Research
學習 Matt Connor作者: Matt Connor

事件合約價格如何反映機率?

事件合約支付固定為一美元,價格可近似解讀為機率。了解為何 Yes 加 No 會超過一美元,以及如何扣除買賣價差,還原較接近真實的機率。

事件合約價格,本質上是加上買賣價差的機率。若所述結果發生,合約支付 $1.00;若未發生,則支付 $0.00。正是這項固定支付金額,讓計算得以成立:一份最終支付一美元的合約若報價為 thirty cents,代表市場報出的機率約為 30%。要正確解讀這個數字,必須進行兩項調整:一項是考量買賣價差,另一項是考量結算機制。

事件合約價格所反映的機率

一切都取決於支付方式。以價格 p 買進 Yes 合約,若結果判定為 Yes,便可收取 1.00 美元;若判定為 No,則一無所獲。經過多次重複後,平均支付金額就是真實的 Yes 機率。若支付的價格正好等於該機率,結果便是損益兩平。實際支付的價格就是損益兩平機率,因此同一個數字可同時代表兩者。

四個術語定義如下:

  • Yes 合約:若事件發生,支付 1.00 美元;否則支付 0.00 美元。
  • No 合約:若事件未發生,支付 1.00 美元。Yes 與 No 是同一枚硬幣的兩面。
  • 結算:合約判定結果、其中一方取得該美元的時點。
  • 結算來源:合約依據其進行結算的指定報告或資料來源。合約支付的依據是該來源所載內容,而不是實際發生的事情。

事件合約的報價不屬於本頁面所使用的資料集。以下每個面板,都在能夠直接衡量的範圍內,以掛牌交易的美國股票選擇權,測量完全相同的算術關係。買權的 delta 介於 0 與 1 之間,約略反映市場認為合約到期時處於價內的機率;這與事件合約提出的是同一個二元問題:在結算日高於該門檻,或否。Delta 是機率的近似值,而且是風險中性機率,不是預測機率。這兩項限制都會在面板中呈現。選擇權 delta指南將介紹這項衡量指標本身。

為什麼 Yes 和 No 加總後會超過 $1?

Yes 與相對應的 No 涵蓋全部結果,而且兩者恰有一個會支付報酬。在選擇權報價鏈中,同一組合對應到同一履約價與到期日的買權和賣權:標的價格高於履約價時,買權價內;低於履約價時,賣權價內。兩者的機率合計必須是 100%。以下是某一天 SPY 選擇權鏈中的這組合約,按現貨價格上下每 2% 的區間分組。

查詢單一 SPY 選擇權鏈的「是」與「否」機率:買權、賣權及兩者合計
每個數據背後的精確 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,買權側顯示 91.6%,賣權側顯示 7.8%,兩者合計為 99.5%。在價格階梯的最遠端 +6% vs spot,兩者分別為 3.6% 與 82.5%,合計為 86.2%。全部 8 個區間經四捨五入後都落在 100% 附近。圖表中的這條水平線,就是每個二元市場都必須遵守的約束。兩側的總體部位配置,正是 put call ratio 所計算的內容。

模型價值會遵守這項約束,但報價不會。假設某份合約的買價為 62、賣價為 66,而其 No 側的買價為 36、賣價為 40。以 66 買進 Yes、以 40 買進 No,等於支付 $1.06,卻只能確定收回 $1.00。若以兩者的買價同時賣出,則可收取 98 美分,但承擔 $1.00 的負債。兩個賣價之間的 6 美分差額就是 overround,運動博彩玩家稱之為 vig;這是交易場所與 market maker 因提供流動性並承擔報價責任而獲得的報酬。bid ask spread 頁面說明了這項差額為何存在。

去除莊家優勢的計算,逐步說明

輸入兩個報價,得到兩個總和為一的公平機率。

  1. 取兩側的中間價。Yes 的中間價是 64 美分,No 的中間價是 38 美分。
  2. 將兩者相加。整本報價合計 102 美分。
  3. 將各中間價除以該總額。64 / 102 為 62.7%;38 / 102 為 37.3%。
  4. 檢查總和。兩者現在合計為 100%。

這種重新調整就是去除莊家優勢的全部含義,也是投注者套用在十進位賠率上的相同正規化方式。

現在將這套方法套用到價差較窄的市場。相同合約的買價為 63、賣價為 64;No 的買價為 36、賣價為 37。兩側中間價分別為 63.5 和 36.5,整本報價恰好合計 100 美分,因此去除莊家優勢後的機率為 63.5%。兩個答案分別是寬價差市場的 62.7% 與窄價差市場的 63.5%,相差不到一個百分點。但它們周圍合理的機率區間並不相同。只要機率落在 62 美分買價與 66 美分賣價之間,就與這個寬價差報價一致。因此,4 美分的市場只能將賠率範圍約縮小至 4 個百分點,無法提供更高精度。根據 4 美分的市場寫出「62.7%」,等於宣稱市場並未提供的三位數精確度。價差寬度就是精確度。

30%的價格是否代表有30%的機率發生?

校準是檢驗方法:蒐集所有市場定價接近30%的合約,再統計事件實際發生的頻率。資料涵蓋自2022年1月起的每一筆 SPY 買權合約,於到期前約30天擷取快照,依隱含機率分組,並比對 SPY 在到期日收於履約價之上的情況。

查詢隱含機率與實際結果:到期前30天的 SPY 買權,2022年至2026年6月
每個數據背後的精確 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 份合約,最終有 4.9% 的比例收於履約價之上。在頂部,90-98% 組的平均隱含機率為 94.3%,最終有 97.8% 的比例達標。階梯底部的實現比例遠低於頂部,這正是校準大致有效時會呈現的樣貌。

任何這類表格都必須注意兩點。首先是樣本期間。若樣本主要涵蓋價格上漲期間,所有買權分組的實現機率欄位都會提高;換一個期間,結果也會改變。其次,delta 所回答的是:何種機率能使定價在內部保持一致,而不是任何預測者相信的機率。同一條期權鏈反映的是完整的機率分布,而非單一門檻(預期波動幅度)。

將範圍縮小至市場判定為五五波、價格接近每1美元中50美分的合約,涵蓋六個家喻戶曉的名稱:

查詢定價接近五五波的契約:各標的的隱含機率與實際結果,2023年至2026年6月
每個數據背後的精確 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%。實現機率則明顯分散:SPY4785 份合約中,有 68.4% 的比例收於履約價之上;49.9% 的比例則對應 XOM6 個名稱、相同的隱含機率,以及實際結果之間的巨大差異。接近50美分的價格描述的是市場機率。任何單一合約到期時,結算金額仍只有1.00美元或0.00美元。

70美分合約的損益平衡點是多少?

以70美分買進的合約,在「是」的情況下支付1.00美元,在「否」的情況下則一無所獲。獲利為30美分,虧損為70美分,而損益平衡機率正好等於價格。若真實機率為70%,這個部位的結果就像拋硬幣,只是多了幾個步驟。機率高於70%時,數學期望對買方有利;低於70%時則對買方不利,而且這還未計入成本。

成本會不對稱地改變這條界線。若70美分合約的來回交易成本增加1美分,損益平衡點會從70%移至約71%,相對於部位而言只是四捨五入誤差。若同樣增加1美分的成本套用在5美分合約上,損益平衡點會從5%升至6%,並因此吃掉理論優勢的五分之一。固定費用對最便宜的高賠率標的傷害最大,因為費用占買進價格的比重最高。委託類型也有相同影響:直接成交會支付完整的賣方要價,而掛出的限價單則以你指定的價格等待,且可能永遠無法成交(市價單與限價單)。

為什麼幾乎確定的結果仍以 $0.97 交易?

即使沒有人質疑結果,價格也很少會交易在 $1.00。最後的 3 美分通常反映四項因素:

  • 貨幣的時間價值。 這 1 美元要到結算時才會收到。今天支付 97 美分,三個月後取得 $1.00,代表資本報酬;而這筆現金目前還有其他用途(閒置現金的資金停泊)。
  • 結算來源風險。 契約依指定來源公布的結果結算,也依該來源採用的時程處理。即使結果已獲普遍認同,修訂、延遲與措辭含糊仍可能持續影響結算。
  • 買賣價差本身。 若市場報價為 96 買進、98 賣出,中間價就是 97 美分,但未必有任何交易在 97 美分成交。以百分比計,市場邊際的買賣價差通常在價格接近兩端時最寬。
  • 尾端風險。 「確定」是人們經常寬鬆使用的詞。契約仍須依規則手冊中的定義結算。

這項收斂可以量化。以到期前一個月、定價接近五五波的 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%。這項區分是事後形成的。在第一個檢查點查看期權鏈時,沒有人能分辨這兩組契約;即時事件契約始終處於這種狀態。確定性要到結算日才會出現,而價格會逐步向該結果靠攏。結算規則會決定確切時點:AM 與 PM 結算的選擇權說明這項時間細節可能有多大影響,而 隱含波動率則是同一期權鏈對規模問題、而非方向問題的回答。

資料說明與限制

Delta 可作為 Yes 價格的替代指標,但兩者並非同一概念。Delta 近似於到期時落在價內的風險中性機率,與相同事件的模型機率略有不同。本文的結果是比較到期日正常交易時段的收盤價與履約價,這可近似結算結果,但不等同於官方結算值。每個期權面板只納入該契約在該日期具有收斂隱含波動率且成交量不為零的資料,因此成交清淡的契約會排除在樣本之外。每份契約只會在距到期日約 30 天最近的快照中進入校準面板一次。

事件合約定價常見問答

事件合約價格是否等同於機率?

事件合約價格是經過兩項調整的機率。報價包含交易場所以及 market makers 收取的買賣價差,也反映在結算時收到一美元,而不是今天收到一美元的時間價值。扣除這兩項因素後,剩下的就是市場對該事件機率的清算估計。

對雙邊市場進行 de-vig 有何作用?

這會重新調整兩個中間價,使其合計為 100%。先將 Yes 中間價與 No 中間價相加,再用各自的中間價除以該總和。若 Yes 為 64 cents、No 為 38 cents,合計為 102 cents,de-vig 後的兩者分別為 62.7% 與 37.3%。

為什麼 Yes 與 No 的價格加總會超過一美元?

兩者之中必定有一方支付 $1.00,因此在沒有摩擦成本的情況下,買進一組完整的雙邊合約,總成本應恰好為 $1.00。賣方報價一側多出的 cents,便是 overround,也就是雙邊市場內含的價差收益。若同時賣出兩側,最終收取的金額會低於一美元,差額正好反映同一個價差。

價格為 90 cents 的合約,是否有十分之一的機率失敗?

如果市場在大量相似合約上校準良好,大致可以這樣理解。在上方的 SPY 面板中,90-98% 區間的平均隱含機率為 94.3%,而實際收盤高於其履約價的比例為 97.8%。但單一合約的結算結果仍只有一美元或零美元兩種。

買賣價差較寬,會讓隱含機率改變多少?

大約相當於價差的寬度。若市場價差為 1 cent,機率會被限制在約 1 個百分點的範圍內。若市場價差為 4 cents,則會留下 4 個百分點的區間;該區間內的每個機率都可能符合這項報價。


以上每個數字都來自對掛牌合約資料執行的 stored query,各面板背後的 SQL 只需點選一次即可查看。請在 Strasmore terminal 上,對即時合約鏈執行相同的 de-vig 計算。

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