Markets
Markets
Markets are the questions traders bet on. OddMaki supports binary, grouped (NegRisk), and Pyth-powered price markets — all sharing the same orderbook, outcome tokens, and fee stack.
A market is a question with two or more outcomes that resolves to a payout vector. Holders of winning outcome tokens redeem them for collateral after resolution.
Every market belongs to exactly one venue and uses that venue's fee schedule, access rules, and oracle defaults.
Three market types
| Type | Outcomes | Resolves Via | When to use |
|---|---|---|---|
| Binary | 2 (YES / NO) | UMA Optimistic Oracle | One-shot discretionary question with two answers |
| Market Group | N (2–50) mutually exclusive | UMA + NegRisk cascade | "Which of these?" — elections, tournaments |
| Price Market | 2 (YES / NO) | Pyth Network | Up/Down or ≥ Strike on a price feed — auto-resolved |
The choice is made per-market at creation. See Market Types for the full decision tree.
Market lifecycle
| Stage | Description |
|---|---|
| Active | Trading is open. Orders rest on the book, fills happen via the matching engine |
| Resolved | Outcome is final. Trading closes; winners can redeem outcome tokens for collateral |
| Invalid | Edge case (UMA disputes that resolve "Invalid", or Pyth markets that never resolve after their 7-day grace) — every outcome token redeems for an equal share of collateral |
The onchain status lives in MarketRegistryData.status (Active | Resolved | Invalid). The subgraph mirrors it for queries.
In this section
- Overview — this page
- Market Types — binary vs. groups vs. price markets, with examples
- Creating Markets — full parameter reference, UI walkthrough, SDK snippets
- Price Markets — Pyth-powered auto-resolving markets in depth (scheduling, deferred capture, invalidation backstop)
- Resolution — UMA assertion/dispute/settle/report and Pyth
resolvePythpaths