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.
Why Multi-Outcome Markets Need Extra Care
Section titled “Why Multi-Outcome Markets Need Extra Care”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 market | Example position |
|---|---|
| Candidate A wins | Long YES |
| Candidate B wins | No position |
| Candidate C wins | Short YES / long NO equivalent |
| Other wins | No position |
Only one outcome can resolve as true. Your strategy should calculate exposure at both the market level and the event level.
Identifying Multi-Outcome Events
Section titled “Identifying Multi-Outcome Events”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.
Trading Rules
Section titled “Trading Rules”Recommended controls:
| Control | Reason |
|---|---|
| Event-level exposure cap | Prevents over-allocation across correlated outcomes |
| Per-outcome quote limit | Keeps one stale market from dominating inventory |
| Cross-market cancel logic | Lets the bot reduce exposure across sibling markets |
| Resolution-aware quoting | Stops 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.
Inventory Management
Section titled “Inventory Management”Treat the Openfish API as the source of truth for balances, live orders, and positions.
Operational loop:
- Fetch the event and all child markets.
- Fetch current positions and live orders for each outcome market.
- Calculate event-level net exposure.
- Place or replace quotes only if the proposed order stays within limits.
- Cancel stale orders when a sibling outcome materially changes.
There is no user-facing contract conversion step in the current deployment.
Resolution
Section titled “Resolution”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.
Next Steps
Section titled “Next Steps”- Inventory — Manage balances and outcome exposure.
- Trading — Quote placement and cancellation patterns.
- Order Lifecycle — How orders reserve balances and settle fills.