Strasmore Research
Leren Matt ConnorDoor Matt Connor

Event contractprijzen als kansen begrijpen

Een event contract keert $1 of $0 uit, waardoor de prijs een kans weerspiegelt. Lees waarom Yes plus No meer dan $1 kost en hoe u de spread verwijdert.

De prijs van een event contract is een kansinschatting met daaromheen een spread. Het contract keert $1,00 uit als de genoemde uitkomst zich voordoet en $0,00 als dat niet gebeurt. Die vaste uitkering maakt de rekenkundige verhouding mogelijk: 30 cent voor een contract dat één dollar uitkeert, betekent dat de markt een kans van ongeveer 30% noteert. Om het getal correct te interpreteren, moet u rekening houden met de spread en met de mechanismen achter de settlement.

Wat de prijs van een event contract zegt over de waarschijnlijkheid

Alles volgt uit de uitbetaling. Koop een Yes contract tegen prijs p en u ontvangt $1.00 als de uitkomst als Yes wordt vastgesteld, en niets als de uitkomst als No wordt vastgesteld. Bij veel herhalingen is de gemiddelde uitbetaling gelijk aan de werkelijke waarschijnlijkheid van Yes. Als u precies die waarschijnlijkheid betaalt, komt u quitte uit. De betaalde prijs is de break-even-waarschijnlijkheid. Daarom vertegenwoordigt één getal beide.

Vier termen, elk één keer gedefinieerd:

  • Yes contract: betaalt $1.00 als de gebeurtenis plaatsvindt en $0.00 in alle andere gevallen.
  • No contract: betaalt $1.00 als de gebeurtenis niet plaatsvindt. Yes en No zijn twee kanten van dezelfde munt.
  • Settlement: het moment waarop het contract wordt afgewikkeld en één kant de dollar ontvangt.
  • Resolution source: het genoemde rapport of de genoemde feed waarop het contract wordt afgewikkeld. Het contract betaalt op basis van wat die bron vermeldt, niet op basis van wat er daadwerkelijk is gebeurd.

Quotes van event contracts maken geen deel uit van de dataset achter deze pagina. Elk paneel meet hieronder dezelfde rekenkundige relatie waar dat rechtstreeks kan, namelijk in genoteerde Amerikaanse aandelenopties. De delta van een calloptie loopt van 0 tot 1 en benadert de marktverwachting dat het contract in-the-money expireert. Dat is dezelfde binaire vraag die een event contract stelt: staat de koers op de settlementdatum boven de grens, of niet? Delta is een benadering van die waarschijnlijkheid en is risiconeutraal, niet gebaseerd op een forecast. Beide beperkingen zijn in de panelen zichtbaar. De handleiding over option delta behandelt deze maatstaf zelf.

Waarom tellen Yes en No op tot meer dan $1?

Een Yes en de bijbehorende No bestrijken de volledige uitkomstenruimte. Precies één van beide keert uit. In een optieketen vormen hetzelfde paar een call en een put met één uitoefenprijs en één expiratiedatum. De call eindigt in the money boven de uitoefenprijs. De put eindigt in the money eronder. Hun kansen moeten samen 100% zijn. Hieronder staat dat paar voor één SPY-keten op één handelsdag, gegroepeerd in banden van 2% rond de spot price.

QueryYes- en No-probabilities binnen één SPY-chain: callzijde, putzijde en totaal van het paar
De exacte SQL achter elk getal
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

Bij -8% vs spot staat de call op 91.6% en de put op 7.8%. Samen is dat 99.5%. Aan het uiteinde van de ladder, +6% vs spot, staan ze op 3.6% en 82.5%. Samen is dat 86.2%. Alle 8 banden komen na afronding uit op 100. Die vlakke lijn in de grafiek is de beperking waaraan elke binary market moet voldoen. De geaggregeerde positionering aan beide kanten is wat de put-callratio meet.

Modelwaarden gedragen zich zoals verwacht. Quotes niet. Stel dat een contract een bid van 62 en een ask van 66 heeft, en de No-kant een bid van 36 en een ask van 40. Als u Yes koopt op 66 en No op 40, betaalt u $1,06 voor een positie die gegarandeerd $1,00 oplevert. Verkoopt u beide tegen hun bid, dan ontvangt u 98 cent tegenover een verplichting van $1,00. Het verschil van 6 cent tussen de twee asks is de overround, de opslag die een sports bettor de vig noemt. Dit is de vergoeding voor het venue en de market maker om liquiditeit te verschaffen. Op de pagina over de bid-ask spread wordt uitgelegd waarom dat verschil überhaupt bestaat.

De-vig-rekenwerk, stap voor stap

Er gaan twee genoteerde prijzen in. Er komen twee faire probabilities uit die samen één vormen.

  1. Neem de mid van elke zijde. De mid voor Yes is 64 cent, die voor No 38 cent.
  2. Tel ze op. Het orderboek komt uit op 102 cent.
  3. Deel elke mid door dat totaal. 64 / 102 is 62,7%. 38 / 102 is 37,3%.
  4. Controleer de som. Het paar komt nu uit op 100%.

Dat herschalen is de volledige betekenis van de-vigging. Het is dezelfde normalisatie die een bettor toepast op decimal odds.

Pas dit nu toe op een markt met een smallere spread. Noteer voor hetzelfde contract een bid van 63 en een ask van 64, met voor No een bid van 36 en een ask van 37. De mids zijn 63,5 en 36,5. Het orderboek komt exact uit op 100 cent en de de-vigged probability is 63,5%. De twee uitkomsten, 62,7% op basis van de brede markt en 63,5% op basis van de smallere markt, liggen minder dan één punt uit elkaar. De eerlijke bandbreedte eromheen is niet zo smal. Elke probability tussen de bid van 62 cent en de ask van 66 cent is verenigbaar met de brede quote. Een markt van 4 cent legt de odds dus vast op ongeveer 4 punten nauwkeurig, en niet nauwkeuriger. Wie vanuit een markt van 4 cent "62,7%" schrijft, geeft drie cijfers achter de komma aan precisie die niet in de markt zit. De breedte van de spread bepaalt de precisie.

Betekent een prijs van 30% dat het 30% van de tijd gebeurt?

Kalibratie is de test: verzamel alles wat de markt rond 30% inprijsde en tel hoe vaak het gebeurde. Het gaat om elk SPY-callcontract in de dataset vanaf januari 2022, vastgelegd ongeveer 30 dagen vóór expiratie. De contracten zijn ingedeeld in buckets voor de impliciete probability en afgezet tegen de vraag of SPY op de expiratiedatum boven de strike price sloot.

QueryImplied probability versus gerealiseerde uitkomst: SPY-calls 30 dagen voor expiratie, 2022 tot en met juni 2026
De exacte SQL achter elk getal
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

De kolom met de impliciete probability loopt per constructie op naarmate de ladder hoger wordt. De gerealiseerde kolom is het deel dat vooraf niemand kende. Onderaan kwam de 2-10%-bucket uit op gemiddeld 4.7% impliciet over 4276 contracten. SPY eindigde in 4.9% van de gevallen boven de strike price. Bovenaan kwam 90-98% uit op gemiddeld 94.3% en eindigde de koers in 97.8% van de gevallen boven de strike price. Het gerealiseerde aandeel onderaan de ladder ligt veel lager dan bovenaan. Dat is het beeld van kalibratie wanneer die in grote lijnen standhoudt.

Bij elke tabel als deze horen twee kanttekeningen. De gekozen periode is van belang. Een steekproef die voornamelijk stijgende koersen omvat, verhoogt de gerealiseerde kolom in elke call-bucket. Een andere periode leidt tot een andere uitkomst. En delta geeft aan welke probability de pricing intern consistent maakt, niet wat een forecaster gelooft. Dezelfde option chain prijst een volledige verdeling in plaats van één drempel (de verwachte beweging).

Als we ons beperken tot contracten waarvan de markt de kans als een coin flip inschatte, rond 50 cent per dollar, bij zes bekende namen:

QueryContracten geprijsd rond een coin flip: implied versus gerealiseerde uitkomst per naam, 2023 tot en met juni 2026
De exacte SQL achter elk getal
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

De impliciete probability ligt per constructie in elke rij rond 50%. De gerealiseerde kolom loopt uiteen: SPY eindigde in 68.4% van de gevallen boven de strike price, gemeten over 4785 contracten, tegenover 49.9% bij XOM. 6 namen, één gedeelde impliciete probability en een brede bandbreedte van wat er daadwerkelijk gebeurde. Een prijs rond 50 cent beschrijft de odds van de markt. Elk afzonderlijk contract wordt uiteindelijk afgewikkeld op $1,00 of $0,00.

Wat is het break-evenpunt bij een contract van $0,70?

Een contract dat voor 70 cent wordt gekocht, keert $1,00 uit bij Yes en niets bij No. De winst bedraagt 30 cent en het verlies 70 cent. De break-evenkans is exact gelijk aan de prijs. Bij een werkelijke kans van 70% is de positie per saldo neutraal, maar met extra stappen. Boven 70% werkt de rekensom in het voordeel van de koper, daaronder in zijn nadeel, nog vóór kosten.

Kosten verschuiven die grens niet gelijkmatig. Tel één cent round-tripkosten op bij een contract van 70 cent, dan verschuift het break-evenpunt van 70% naar ongeveer 71%. Dat is op de positie slechts een afrondingsverschil. Tel diezelfde cent op bij een contract van 5 cent, dan stijgt het break-evenpunt van 5% naar 6%. Daarmee verdwijnt een vijfde van de theoretische edge. Vaste fees richten de meeste schade aan bij de goedkoopste long shots, waar de fee het grootste deel van de betaalde prijs vormt. Het ordertype werkt op dezelfde manier: wie de spread oversteekt, betaalt de volledige ask. Een resting limit order blijft liggen tegen een door u opgegeven prijs en wordt mogelijk nooit uitgevoerd (market order versus limit order).

Waarom wordt een vrijwel zekere uitkomst verhandeld tegen $0,97?

Een uitkomst waar niemand aan twijfelt, wordt nog steeds zelden tegen $1,00 verhandeld. In die laatste 3 cent spelen vier factoren een rol:

  • Tijdswaarde van geld. De dollar wordt bij settlement ontvangen. Vandaag 97 cent betalen voor $1,00 over drie maanden levert rendement op kapitaal op. Dat geld kan intussen ook elders worden ingezet (ongebruikt cash parkeren).
  • Risico rond de bron van de settlement. Het contract wordt afgewikkeld op basis van wat de genoemde bron rapporteert, volgens het schema dat die bron hanteert. Herzieningen, vertragingen en onduidelijke formuleringen blijven ook bij een algemeen aanvaarde uitkomst relevant.
  • De spread zelf. Een markt met 96 bid en 98 ask heeft een mid van 97 cent, maar er vinden geen trades plaats tegen 97. In procentuele termen is het orderboek vaak juist aan de randen het breedst.
  • De staart. Het woord ‘zeker’ wordt vaak losjes gebruikt. Contracten worden afgewikkeld volgens de definitie in het rulebook.

De convergentie is meetbaar. Neem SPY-calls met een prijs rond een fifty-fifty-kans één maand vóór expiratie, splits ze op basis van wat uiteindelijk gebeurde en bekijk de gemiddelde implied probability op zes meetmomenten.

QueryHoe een bijna coin flip afloopt: gemiddelde implied probability per meetpunt, uitgesplitst naar uitkomst
De exacte SQL achter elk getal
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

Op 30 days out hadden de contracten die uiteindelijk boven hun strike eindigden een gemiddelde implied probability van 52.6%. Bij de contracten die dat niet deden was dit 47.8%. Op 1 day out stonden dezelfde twee groepen op 79.8% en 14.4%. De splitsing is achteraf gemaakt. Niemand die de optie chain op het eerste meetmoment bekeek, kon de twee groepen van elkaar onderscheiden. Dat is ook de toestand waarin een live event contract zich altijd bevindt. Zekerheid ontstaat op de settlementdatum en de prijs beweegt daar geleidelijk naartoe. De settlementregels bepalen het exacte moment. Opties met AM- versus PM-settlement laat zien hoeveel dit timingdetail kan uitmaken. implied volatility geeft binnen dezelfde chain antwoord op de omvangsvraag en niet op de richtingsvraag.

Datatoelichting en beperkingen

Delta is een benadering van een Yes-prijs, maar niet hetzelfde. Delta benadert de risk-neutrale kans dat een optie in the money expireert en wijkt enigszins af van de modelmatige kans op dezelfde gebeurtenis. De uitkomsten hier vergelijken de slotkoers van de reguliere handelssessie op de expiratiedatum met de strike. Dit benadert de settlement, maar reproduceert geen officiële settlementwaarde. Elk optiescherm filtert op geconvergeerde implied volatility en non-zero volume voor het betreffende contract op die datum. Contracten met weinig activiteit vallen daardoor buiten de steekproef. Elk contract wordt eenmaal opgenomen in de calibratieschermen, op de snapshot die het dichtst bij 30 dagen vóór expiratie ligt.

FAQ over prijsbepaling van event contracts

Is de prijs van een event contract hetzelfde als een probability?

Het is een probability waarop twee correcties zijn toegepast. De quote bevat de spread die het handelsplatform en de market makers rekenen. Ook wordt een dollar geprijsd die bij settlement wordt ontvangen, niet vandaag. Als u beide effecten wegneemt, resteert de clearing estimate van de markt voor de odds.

Wat doet het de-viggen van een two-sided market?

Het herschaalt de twee mid-prices zodat ze samen 100% bedragen. Tel de Yes-mid en de No-mid bij elkaar op en deel beide vervolgens door dat totaal. Een Yes van 64 cent naast een No van 38 cent komt uit op 102 cent. Het gede-vigde paar luidt dan 62,7% en 37,3%.

Waarom tellen de Yes- en No-prices op tot meer dan een dollar?

Een van beide contracten betaalt zeker $1,00 uit. Een frictionless paar zou daarom samen precies $1,00 kosten. De extra centen aan de ask-kant vormen de overround: de spread revenue die in een two-sided market is verwerkt. Als u beide kanten verkoopt, komt u daarentegen uit op minder dan een dollar. Dat is het spiegelbeeld van dezelfde afwijking.

Faalt een contract met een prijs van 90 cent één keer op de tien?

Grofweg wel, als de markt over veel vergelijkbare contracten goed is gekalibreerd. In het SPY-panel hierboven had de 90-98%-bucket een gemiddelde implied probability van 94.3% en eindigde de koers 97.8% van de tijd boven de strike. Een individueel contract wordt nog steeds afgewikkeld op één dollar of nul.

Hoe sterk beïnvloedt een brede spread de implied probability?

Ongeveer met de breedte van de spread. Een market van 1 cent begrenst de odds tot op één punt. Een market van 4 cent laat een bandbreedte van 4 punten over. Elke probability binnen die band is verenigbaar met de quote.


Elk getal hierboven komt uit een stored query op data van genoteerde contracten. De SQL achter elk panel is met één klik beschikbaar. Voer dezelfde de-vig-berekening uit op een live chain in de Strasmore-terminal.

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