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 trade | Limit order | |
|---|---|---|
| Execution goal | Fill immediately | Wait for a specified price |
| Contract route | Universal Router | Order Manager |
| Price protection | Minimum received | Tick-based price threshold |
| Can remain open | No | Yes |
| Input approval target | Permit2, then Universal Router | Permit2, 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.