Skip to content

Prediction Markets

A fully on-chain prediction market powered by the same orderbook engine that runs spot and lending — with multi-outcome events, autonomous resolution, and zero-sum settlement.

Core Insight

Each outcome in a prediction event is its own orderbook, trading outcome shares against USDC. Price = probability. A 3-outcome event creates 3 independent orderbooks linked by event ID. The matching engine, order types, and settlement infrastructure are reused without modification.

How Prediction Markets Work

Users trade outcome shares priced between $0 and $1. The price represents the market's implied probability of that outcome occurring.

"Who wins the next US presidential election?"

Candidate A shares trading at $0.62  →  62% implied probability
Candidate B shares trading at $0.31  →  31% implied probability
Candidate C shares trading at $0.09  →   9% implied probability

When the event resolves, winning shares pay $1 and losing shares pay $0. Traders profit by buying shares below their true probability and selling above.

Architecture

One Orderbook Per Outcome

Each prediction event creates N orderbooks — one per outcome — all trading against USDC:

Event: ELECTION2025
├── ELECTION2025_A_USDC   → orderbook for Candidate A shares
├── ELECTION2025_B_USDC   → orderbook for Candidate B shares
└── ELECTION2025_C_USDC   → orderbook for Candidate C shares

Each outcome book is a standard orderbook instance. During trading, the books operate independently — they don't need to know about each other. The event ID links them for resolution, when the system needs to know which outcome won.

Why independent books work: each trade's collateral is self-contained. The buyer locks what they pay, the seller locks their maximum loss. Total locked per trade always equals the max payout ($1/share). This means solvency is guaranteed per-outcome without coordinating across books.

Order Flow

All existing order types work: Limit, Market, GTC, GTD, IOC, FOK. Self-trade prevention applies.

Collateral Model

Both sides of a trade lock USDC to ensure the system is always solvent:

SideWhat They LockWhy
Buyerquantity × priceWhat they pay for shares
Sellerquantity × (max_price − price)Maximum loss if outcome wins

Example at $0.60 for 100 shares:

  • Buyer locks: 100 × $0.60 = $60
  • Seller locks: 100 × $0.40 = $40
  • Total locked: $100 = exactly the max payout if outcome wins

This ensures zero-sum settlement at resolution regardless of which outcome wins.

Resolution

Lifecycle

Dispute Window

Resolution is a two-step process with a 24-hour dispute window:

  1. Propose — Admin proposes the winning outcome. Trading halts on all outcome markets.
  2. Wait — 24-hour window for anyone to flag an incorrect resolution.
  3. Finalize — After the window expires, the canister auto-finalizes via timer and executes settlement.

If disputed during the window, trading reopens and the event returns to Active.

Settlement

When an event finalizes:

  • Winners (net long on winning outcome): receive $1 per share
  • Losers (net short on winning outcome, or long on losing outcomes): collateral seized
  • Voided events: all collateral returned, no settlement

The settlement is zero-sum — total payouts to winners exactly equals total collected from losers.

Autonomous Resolution

The canister handles resolution lifecycle via timers:

  • Auto-finalize: After the dispute window expires, a timer task detects pending proposals and finalizes them
  • Price-feed resolution: For price-based events ("Will BTC hit $100K?"), the canister queries external APIs via HTTPS outcalls and resolves when conditions are met
  • Combo resolution: Events composed from other events auto-resolve when their dependencies resolve

No external keepers or oracle bots needed.

Market Types

Binary Markets

The simplest form — two outcomes (YES / NO):

"Will ETH hit $10K before June 2026?"
├── ETH_10K_YES_USDC   → YES shares
└── ETH_10K_NO_USDC    → NO shares

YES + NO prices should sum to ~$1.00. When they don't, arbitrageurs correct the spread.

Multi-Outcome Markets

Events with 3+ possible outcomes:

"Which chain will have the highest TVL in Q4 2026?"
├── TVL_ETHEREUM_USDC
├── TVL_SOLANA_USDC
├── TVL_BITCOIN_USDC
└── TVL_OTHER_USDC

Sum of all outcome prices should approximate $1.00.

Range Markets

Numeric predictions divided into buckets:

"What will BTC price be on Dec 31?"
├── BTC_PRICE_50K_60K_USDC    → $50K–$60K range
├── BTC_PRICE_60K_70K_USDC    → $60K–$70K range
├── BTC_PRICE_70K_80K_USDC    → $70K–$80K range
└── BTC_PRICE_ABOVE_80K_USDC  → >$80K

Resolved automatically by querying a price feed at the resolution time.

Combo Bets

Events composed from other events using AND/OR logic:

"Trump wins AND BTC > $100K"
  → Resolves YES only if BOTH referenced events resolve YES

"ETH hits $5K OR SOL hits $500"
  → Resolves YES if EITHER referenced event resolves YES

Combo events reference other events by ID and auto-resolve when their dependencies settle.

Maker Rebates

To attract liquidity providers, prediction markets support negative maker fees — makers receive a rebate for providing liquidity instead of paying a fee:

RoleFeeEffect
TakerPays fee (e.g., 2%)Standard trading fee
MakerReceives rebate (e.g., 0.5%)Paid for providing liquidity

Net protocol revenue = taker fees − maker rebates. This incentivizes tight spreads and deep books.

Leaderboards

Track trader performance across prediction markets:

MetricDescription
VolumeTotal USDC traded across all prediction markets
PnLRealized profit/loss from resolved events
Win ratePercentage of winning positions
TradesTotal number of trades

Available globally and per-event, with pagination.

Polymarket Comparison

FeaturePolymarketVortum
CLOB trading engine✅ Already built
Binary & multi-outcome markets
Price = probability ($0–$1)
Market resolution✅ UMA oracle✅ Admin + HTTPS oracle
USDC settlement
Leaderboards
Non-custodial
Multi-chain deposits❌ Polygon only✅ BTC, SOL, ICP
Dispute window before settlement✅ 24-hour challenge period
Range markets (price buckets)✅ With auto-resolution
Combo bets (AND/OR composition)
Autonomous oracle resolution❌ Requires UMA voters✅ Canister HTTPS outcalls

Challenges

ChallengeApproach
Liquidity per outcomeThin books on unlikely outcomes; maker rebates help
Oracle reliabilityMulti-source with dispute window as safety net
Sum-of-probabilities driftArbitrageurs naturally correct; monitoring alerts
Regulatory exposureEvent selection guidelines; geographic restrictions
Market manipulationRate limits on large positions; position caps per user