Event markets

circle-info

Event markets let you trade outcome probabilities by buying and selling YES and NO tokens for each outcome of a categorical event.

An event market is a categorical market with a fixed set of mutually exclusive outcomes, where exactly one outcome is realized at resolution.

Butter’s event markets are separate from, but paired with, event conditionals:

  • Event markets express a view on which outcome happens.

  • Event conditionals express a view on where an asset settles if an outcome happens.

What is being traded

Event markets trade YES and NO positions for each outcome.

For outcome outcomeIndex\text{outcomeIndex}:

  • A YES token for outcomeIndex\text{outcomeIndex} pays 1 USDC if that outcome is realized, and 0 USDC otherwise.

  • A NO token for outcomeIndex\text{outcomeIndex} pays 0 USDC if that outcome is realized, and 1 USDC otherwise.

In a categorical market, “NO for outcome outcomeIndex\text{outcomeIndex}” means “any outcome except outcomeIndex\text{outcomeIndex}”.

Pricing units

Each outcome outcomeIndex\text{outcomeIndex} has its own YES/USDC market.

Butter prices YES and NO as shares per $1:

  • YES price is quoted as YES shares per 1 USDC.

  • NO price is quoted as NO shares per 1 USDC.

This is the inverse of the more common “USDC per share” quote. If the market shows yesSharesPerUsd\text{yesSharesPerUsd} YES shares per 1 USDC, then the implied USDC price per YES share is:

usdPerYesShare=1yesSharesPerUsd\text{usdPerYesShare} = \frac{1}{\text{yesSharesPerUsd}}

Since a YES token pays 1 USDC if it wins, its USDC price per share is also the market-implied probability, up to fees and market microstructure.

YES and NO token semantics

YES tokens are the direct per-outcome winning claims.

NO tokens are represented as “not outcome outcomeIndex\text{outcomeIndex}” claims that can be unwrapped into the complement YES tokens:

  • 1 NO-outcomeIndex\text{outcomeIndex} share unwraps into 1 share of each YES token for every outcome except outcomeIndex\text{outcomeIndex}.

  • The mark price of NO-outcomeIndex\text{outcomeIndex} equals the sum of the mark prices of the complement YES tokens.

This representation prevents interference between outcomes. Without wrapping, a NO position would be a live bundle of complement YES tokens, so trading YES for one outcome would mechanically change the measured value of NO for another outcome.

Representing NO as its own token requires a wrapper contract that mints and burns NO-outcomeIndex\text{outcomeIndex} by wrapping and unwrapping the complement YES tokens. This document describes the requirement and the resulting trading semantics, and it does not assume the wrapper is deployed.

Trade intents and execution legs

Butter exposes four trade intents:

  • BUY_YES

  • SELL_YES

  • BUY_NO

  • SELL_NO

Execution uses only YES/USDC pools. NO trades are implemented by buying or selling complement YES legs and wrapping or unwrapping.

BUY_YES

To buy YES for outcome outcomeIndex\text{outcomeIndex}, Butter swaps USDC for YES-outcomeIndex\text{outcomeIndex} in the YES-outcomeIndex\text{outcomeIndex}/USDC pool.

If you already hold NO-outcomeIndex\text{outcomeIndex}, Butter nets the trade against that position first by selling NO-outcomeIndex\text{outcomeIndex} instead of buying new YES-outcomeIndex\text{outcomeIndex}.

SELL_YES

To sell YES for outcome outcomeIndex\text{outcomeIndex}, Butter swaps YES-outcomeIndex\text{outcomeIndex} for USDC in the YES-outcomeIndex\text{outcomeIndex}/USDC pool.

BUY_NO

To buy NO for outcome outcomeIndex\text{outcomeIndex}, Butter buys an equal number of YES shares in every complement outcome, then wraps that complement bundle into NO-outcomeIndex\text{outcomeIndex}.

If you already hold YES-outcomeIndex\text{outcomeIndex}, Butter nets the trade against that position first by selling YES-outcomeIndex\text{outcomeIndex} instead of buying complement YES legs.

SELL_NO

To sell NO for outcome outcomeIndex\text{outcomeIndex}, Butter unwraps NO-outcomeIndex\text{outcomeIndex} into the complement YES tokens, then sells each complement YES token for USDC in its own YES/USDC pool.

Positions, netting, and merge mechanics

Butter tracks positions as per-outcome YES and NO balances.

For each outcome outcomeIndex\text{outcomeIndex}, Butter also tracks a size-weighted average entry price for YES-outcomeIndex\text{outcomeIndex} and NO-outcomeIndex\text{outcomeIndex} positions, in USDC per share.

Butter applies mandatory netting only between YES-outcomeIndex\text{outcomeIndex} and NO-outcomeIndex\text{outcomeIndex} for the same outcome:

  • It does not net positions across outcomes.

  • It does not net between wrapped NO constituents and other YES positions.

Event-market mechanics also admit “merge” rules. Holding one YES share for every outcome is a full set and is economically equivalent to 1 USDC. Butter does not auto-merge full sets across outcomes today.

Relationship to event conditionals

Event markets and event conditionals are paired but separate:

  • Event markets let you trade which outcome is realized.

  • Event conditionals let you trade an asset price conditional on which outcome is realized.

Event conditionals are documented in:

Last updated