Skip to main content

Trading

RuneMarket offers two different ways to trade a market price: instant swaps and resting limit orders. Both settle onchain, but they have different execution behavior.

Instant trades

An instant trade is an exact-input swap through the market's Uniswap v4 pool.

For a buy:

USDC payment token -> YES or NO

For a sell:

YES or NO -> USDC payment token

Before submission, RuneMarket obtains a current quote, checks that the selected pool is initialized and liquid, and calculates a minimum amount the transaction may receive. This minimum protects the user from execution beyond the selected slippage tolerance. The quote can still expire or become stale before the transaction is confirmed.

Instant trades use the configured Universal Router. A trade requires the input token—not both outcome tokens—to be approved through Permit2 for that router.

Limit orders

A limit order is a resting order created through RuneMarket's Order Manager. It supplies an exact input amount at a price threshold and waits for the pool price to cross the order's configured tick range.

RuneMarket supports four limit-order directions:

  • buy YES with the USDC payment token;
  • sell YES for the USDC payment token;
  • buy NO with the USDC payment token; and
  • sell NO for the USDC payment token.

The current limit-order product submits orders with partial fills disabled. Orders must meet the configured minimum for their input token, use a valid non-marketable price, and target an initialized, approved pool.

Creating a limit order does not guarantee that it will fill. It may remain open until its price condition is met or the owner cancels it. Execution is processed in bounded batches; when unusually large crossed ranges cannot be completed in one callback, authorized protocol operators can continue the deferred work.

Instant trade or limit order?

Instant tradeLimit order
Execution goalFill immediatelyWait for a specified price
Contract routeUniversal RouterOrder Manager
Price protectionMinimum receivedTick-based price threshold
Can remain openNoYes
Input approval targetPermit2, then Universal RouterPermit2, then Order Manager

Trading availability

RuneMarket's trading interface accepts new instant trades and limit orders only while the market is in its trading phase and the end-of-trading timestamp has not passed.

Trading can also be unavailable when:

  • a pool has not been initialized;
  • the pool has no active liquidity;
  • the market, manager, or individual pool is paused;
  • the pool is not approved for limit orders;
  • the wallet is connected to the wrong network;
  • a balance or allowance is insufficient; or
  • a quote, current pool state, or transaction simulation fails.

An unavailable pool is an operational condition, not a change to the market's resolution rules.

Prices, impact, and fees

A quote may show average execution price, price impact, and minimum received. These values apply to the quoted transaction and can change as the pool changes.

Protocol trading fees are configurable. Do not assume a fixed fee from a market's displayed outcome price. Wallets also need ETH on Robinhood Chain to pay network gas.