Skip to content

Multi-Outcome Markets

Some prediction events have three or more mutually exclusive outcomes. Openfish represents each tradable outcome as a separate CLOB market while grouping related outcomes under the same event.

The current meme/off-chain deployment handles these markets through API metadata, order validation, and ledger accounting.


In a binary market, a trader generally manages exposure between YES and NO on one question. In a multi-outcome event, exposure spans several related markets.

Example event:

Outcome marketExample position
Candidate A winsLong YES
Candidate B winsNo position
Candidate C winsShort YES / long NO equivalent
Other winsNo position

Only one outcome can resolve as true. Your strategy should calculate exposure at both the market level and the event level.


The Gamma API groups related markets under an event. Use the event response to determine which markets belong to the same outcome set.

{
"id": "456",
"title": "Who will win the 2028 Presidential Election?",
"markets": [
{ "id": "a", "question": "Will Candidate A win?" },
{ "id": "b", "question": "Will Candidate B win?" },
{ "id": "c", "question": "Will Candidate C win?" }
]
}

When quoting one market in the set, account for positions and live orders across the rest of the event.


Recommended controls:

ControlReason
Event-level exposure capPrevents over-allocation across correlated outcomes
Per-outcome quote limitKeeps one stale market from dominating inventory
Cross-market cancel logicLets the bot reduce exposure across sibling markets
Resolution-aware quotingStops quoting once the event is near final resolution

For augmented events, trade only outcomes that are clearly named and active. Ignore placeholder outcomes until the API metadata assigns them a concrete meaning.


Treat the Openfish API as the source of truth for balances, live orders, and positions.

Operational loop:

  1. Fetch the event and all child markets.
  2. Fetch current positions and live orders for each outcome market.
  3. Calculate event-level net exposure.
  4. Place or replace quotes only if the proposed order stays within limits.
  5. Cancel stale orders when a sibling outcome materially changes.

There is no user-facing contract conversion step in the current deployment.


When a multi-outcome event resolves, the system marks the winning outcome and applies the corresponding ledger payouts. Market makers should stop quoting the whole event once resolution risk is detected, not just the individual market that changed status first.


  • Inventory — Manage balances and outcome exposure.
  • Trading — Quote placement and cancellation patterns.
  • Order Lifecycle — How orders reserve balances and settle fills.