> ## Documentation Index
> Fetch the complete documentation index at: https://docs.jup.ag/llms.txt
> Use this file to discover all available pages before exploring further.

# How Predict Works

> Detailed mechanics of Jupiter Prediction Markets: events, contracts, orders, fees, settlement, and the Degen mode.

This page covers the detailed mechanics of Jupiter Predict. For a high-level introduction, see the [Overview](/user-docs/trade/predict).

## Events and Markets

An **event** is a real-world occurrence with a determinable outcome. For example: "Republican Presidential Nominee 2028" or "UEFA Champions League Winner."

Each event contains one or more **markets**. Each market represents a specific outcome within the event and is binary: YES or NO.

For example, the event "Republican Presidential Nominee 2028" contains separate markets for J.D. Vance, Marco Rubio, Tucker Carlson, and others. Each of these is an independent binary market. You can buy YES on J.D. Vance without taking a position on any other candidate.

### Multi-Outcome Events

Events with many possible outcomes (5+ candidates in an election, 10+ teams in a championship) are displayed with the top outcomes visible by default. Click **Show More** to drill down and see all available sub-markets.

The probabilities across all sub-markets within a multi-outcome event do not always sum to exactly 100%. Each sub-market trades independently and has its own spread.

### Market States

A market goes through four states from creation to settlement:

<CardGroup cols={2}>
  <Card title="Upcoming" icon="hourglass-start">
    The market is visible but trading has not started yet. The UI shows a countdown (e.g., "Live in 27d 09h").
  </Card>

  <Card title="Open (Live)" icon="circle-play">
    The market is actively trading. Buy and sell orders are accepted.
  </Card>

  <Card title="Closed" icon="circle-pause">
    Trading has stopped. The market is awaiting settlement.
  </Card>

  <Card title="Settled" icon="circle-check">
    The result has been recorded on-chain. Winning positions are claimable.
  </Card>
</CardGroup>

## Contracts

A **contract** is a financial claim. Each contract is tied to one side of one market (YES or NO).

* A winning contract pays **\$1 USDC** when the market settles in its favour.
* A losing contract pays **\$0** and expires worthless.

Contract prices range from **\$0.01 to \$0.99**. The price reflects the market's implied probability for that outcome. A YES contract at \$0.65 implies the market estimates a 65% probability. The corresponding NO contract trades around \$0.35.

### Spread

Each market has a **bid price** (what buyers are willing to pay) and an **ask price** (what sellers want). The difference is the spread. When you buy, you pay the ask. When you sell, you receive the bid. Entering and exiting a position always has a cost, even if the underlying probability hasn't moved.

## Order Types

<Tabs>
  <Tab title="Market Orders">
    A market order executes immediately at the best available price.

    * Built-in slippage tolerance: **±\$0.02** from the displayed price.
    * If the market moves beyond this range before execution, the order does not fill.
    * Your USDC is reserved when you place the order.
    * If a market order is not filled within **2 minutes**, the full amount is returned to your wallet.
  </Tab>

  <Tab title="Limit Orders">
    A limit order lets you set a target price. Your order is placed on the book and waits to be matched at your specified price.

    <Warning>
      **Limit orders are temporarily paused.** The Limit tab is visible in the UI but the feature is currently disabled. It will return once a fix is deployed.
    </Warning>

    When the feature is live:

    * Only **limit buys** are supported. Limit sells are not available.
    * You can **cancel** a limit order at any time before it is matched.
    * Fees are similar to market orders.
    * A limit order remains on the book until it is matched, cancelled, or the market closes.
  </Tab>
</Tabs>

### Order Execution On-Chain

Each order involves three on-chain transactions:

<Steps>
  <Step title="Create Order">
    You sign a transaction that creates an order account on Solana. Your USDC is reserved.
  </Step>

  <Step title="Fill Order">
    Jupiter's keeper system picks up the order and executes it against the upstream provider's orderbook.
  </Step>

  <Step title="Close Order">
    Once the order is filled (or expires unfilled), the order account is closed. Any unused USDC is returned to your wallet, along with the recovered account rent.
  </Step>
</Steps>

This process is handled automatically. You only need to sign the initial transaction.

## Position Management

A **position** represents your holdings in a specific market side (YES or NO).

### Position Data

Your Profile shows the following for each position:

| Field                | Description                                                          |
| -------------------- | -------------------------------------------------------------------- |
| Event                | The event and market name                                            |
| Total Size           | Number of contracts held                                             |
| Value                | Current market value of the position (contracts × current price)     |
| Avg. Price           | Average price you paid per contract                                  |
| Mark Price           | Current market price per contract                                    |
| PNL                  | Unrealised profit or loss. Toggle to include or exclude fees         |
| Payout if right      | Total payout if the market resolves in your favour (\$1 × contracts) |
| Est. Settlement Time | Estimated time when the market will settle                           |

### Closing a Position

You can close your position before settlement by clicking **Close** on the position row, or **Close All** to exit every position at once.

* Closes execute as market orders at the current bid price, with the same ±\$0.02 slippage tolerance.
* The UI does not currently support partial closes. Closing a position sells all your contracts in that market side.
* A spread cost always applies when you close.

### When You Can Close a Position

Whether you can close a position depends on the market's current state:

| Market state                 | Can you close? | Notes                                                       |
| ---------------------------- | -------------- | ----------------------------------------------------------- |
| Open (Live)                  | Yes            | Your contracts are sold at the current market bid price     |
| Closed (awaiting settlement) | No             | Trading has stopped. You must wait for the market to settle |
| Settled (you won)            | Not applicable | You claim the payout instead of closing                     |
| Settled (you lost)           | Not applicable | The position is marked as lost. No action needed            |

<Warning>
  In rare cases, a position may appear difficult to close even while the market is still listed as open. The most common cause is **low liquidity**: the market doesn't have enough resting orders to fill your close at the displayed price. Other causes are possible (e.g., a temporary issue with the provider or the matching engine). If you can't close a position you expect to be able to close, raise a ticket via [Discord](https://discord.gg/jup) and the team will look into it.
</Warning>

### Profile Tabs

Your Profile page has three tabs:

* **Positions**: active positions with live PnL data.
* **Open Orders**: orders that have been placed but not yet filled (relevant once limit orders return).
* **History**: completed trades, settlements, and claims.

## Upstream Providers

Jupiter Predict does not create or manage markets directly. Markets are sourced from **upstream providers**, currently Kalshi and Polymarket.

<Tabs>
  <Tab title="Kalshi">
    Kalshi is a CFTC-regulated prediction market exchange in the US. Markets sourced from Kalshi follow Kalshi's resolution rules and fee schedule.
  </Tab>

  <Tab title="Polymarket">
    Polymarket is a crypto-native prediction market platform. Markets sourced from Polymarket follow Polymarket's resolution rules and fee schedule.
  </Tab>
</Tabs>

### What This Means for Users

* **Market availability**: Jupiter lists a selection of markets from each provider. Not every market available on Kalshi or Polymarket is necessarily available on Jupiter.
* **Resolution rules**: each market's outcome is determined by the provider, following the rules described in the "Rules summary" section on the market page. Jupiter follows the provider's settlement.
* **Dispute resolution**: if an outcome is disputed, the dispute is handled by the upstream provider. Jupiter does not independently resolve disputes.
* **Source identification**: the underlying provider is not prominently displayed in the UI but can be identified from the market's metadata.

## Degen Mode

Degen is a section within Jupiter Predict focused on **short-duration micro-bets on crypto prices**.

### How It Works

Each Degen market asks: will the price of a token go **Up** or **Down** from a reference price within a defined time window?

* Time windows: **5 minutes** or **15 minutes**
* Available tokens: SOL, BTC, ETH, XRP, BNB, DOGE, Hyperliquid
* The "Price to beat" is the token's price at the start of the window
* The "Current price" updates in real time
* If the token's price at the end of the window is **above** the reference, **Up** wins
* If the token's price at the end of the window is **below** the reference, **Down** wins

The contract logic is the same as Browse markets: each winning contract pays \$1 USDC.

## Fee Structure

Fees are charged only on **executed trades** (buying or selling contracts). There are no fees on claims.

### Two Fee Components

When you trade on Jupiter Predict, your total fee is the sum of two components:

1. **Venue fee**: charged by the upstream provider (Kalshi or Polymarket) for executing the trade on their orderbook.
2. **Jupiter fee**: charged by Jupiter on top of the venue fee. It is equal to the venue fee.

The total fee you pay is therefore **twice the venue fee**.

<Accordion title="Worked example" icon="calculator">
  Suppose you place a trade where the venue fee is \$1.00.

  * Venue fee: \$1.00
  * Jupiter fee: \$1.00
  * **Total fee paid**: \$2.00

  Both fees are deducted from your USDC balance at the time of execution.
</Accordion>

### How the Venue Fee Is Calculated

The venue fee depends on three factors:

1. **Contract price**: trades closer to \$0.50 (maximum uncertainty) carry higher fees. Trades closer to \$0.01 or \$0.99 (near-certain outcomes) carry lower fees.
2. **Number of contracts**: larger trades incur higher absolute fees.
3. **Provider**: Kalshi and Polymarket have their own fee schedules.

All fees are paid in USDC and rounded up to the nearest cent.

### When Fees Are Not Charged

* Placing an order that doesn't execute incurs no fee.
* Claiming payouts after settlement incurs no fee.

## Settlement Process

Settlement involves three distinct stages: the upstream provider resolves the market, Jupiter records the result on-chain, and the payout is sent to your wallet. Each stage happens at a different moment.

<Steps>
  <Step title="Market Closes">
    Trading stops at the market's predetermined close time. From this point, no buys or sells are possible.
  </Step>

  <Step title="Upstream Provider Resolves">
    The provider (Kalshi or Polymarket) determines the outcome based on the market's published rules and publishes the result on their side.
  </Step>

  <Step title="Jupiter Records the Result On-Chain">
    Jupiter picks up the resolved result and records it on Solana, typically **within a few minutes** of the upstream resolution.
  </Step>

  <Step title="Winning Positions Become Claimable">
    Once the result is on-chain, winning positions appear as claimable in your Profile.
  </Step>

  <Step title="Payout Is Sent to Your Wallet">
    You can claim manually at any time by opening your Profile and clicking claim. If you haven't claimed within **24 hours** of the position becoming claimable, Jupiter automatically claims on your behalf. Each winning contract pays \$1 USDC. No fees are charged on claims.
  </Step>
</Steps>

Losing positions receive no payout. The contracts expire worthless and the position is marked as lost.

### Resolved vs. Claimed

These are two distinct states:

* **Resolved** means the market's outcome has been determined and recorded on-chain by Jupiter. Your position is now marked as either claimable (you won) or lost (you didn't).
* **Claimed** means the payout has been credited to your wallet, either because you claimed manually or because Jupiter auto-claimed for you after 24 hours.

### Pending vs. Resolved

<Info>
  A market that has already resolved on Kalshi or Polymarket may temporarily show as pending on Jupiter. This is expected behaviour during the relay window between upstream resolution and on-chain recording. Your position becomes claimable once Jupiter records the result.
</Info>

### When a Market Doesn't Resolve as Expected

Most markets resolve within a few minutes of their upstream resolution. Occasionally, a market may take longer.

**Possible reasons:**

* The real-world event hasn't produced a clear outcome yet (e.g., a delayed game, a contested election count).
* The upstream provider is waiting for an authoritative source before publishing the result.
* An issue on Jupiter's side or the provider's side is blocking the on-chain recording.

**What this means for you:**

* The position remains visible in your Profile while waiting for resolution.
* You cannot close a position once the market is in the "Closed" state. Trading is no longer possible at this stage.
* There is no fixed maximum delay. A bugged market may stay unresolved until the underlying issue is fixed.

If a market remains unresolved for an unusually long time, raise a ticket via [Discord](https://discord.gg/jup). The team can investigate and take action.

### Cancelled or Voided Markets

If an upstream provider cancels or voids a market (for example, because the event was annulled or the resolution criteria can't be met), affected positions are refunded.

Refunds are currently processed **manually**: if you hold a position in a cancelled market, reach out via [Discord](https://discord.gg/jup) and the team will refund your USDC. An automatic refund feature is in development.

## Leaderboard

The Leaderboard is a public ranking of traders on Jupiter Predict.

* **Metrics**: PnL (USD), Volume (USD), Win Rate
* **Time filters**: All Time, Weekly, Monthly
* **Global stats**: total platform volume and total number of predictions are displayed at the top

Traders are identified by their truncated wallet address. The Leaderboard is purely informational and does not affect trading.

## On-Chain Costs

Jupiter Predict runs on Solana. Using it requires a small SOL balance for:

* **Transaction fees**: approximately 0.000005 SOL per transaction. Each order involves 3 transactions, so roughly 0.000015 SOL per trade.
* **Account rent**: creating order and position accounts on Solana requires a rent deposit. The rent is recovered automatically when:
  * An order account is closed (after the order fills or expires)
  * A position is claimed (winning) or marked as lost (losing)

These are standard Solana network costs and are not specific to Jupiter Predict.
