Placing Orders#
This guide covers how to place orders on the Seesaw order book.
Order Types#
Seesaw supports three order types:
| Type | Behavior | Best For |
|---|---|---|
| Limit | Match what's possible, rest goes on book | Most trading |
| Post-Only | Reject if would match immediately | Market making |
| Immediate-or-Cancel (IOC) | Match what's possible, cancel rest | Taking liquidity |
Order Sides#
You can express four different trading intentions:
How Orders Work#
1. Canonical Conversion#
All orders are converted to a single canonical form for matching:
Conversion Rules:
Buy YES @ pbecomesBID @ pSell YES @ pbecomesASK @ pBuy NO @ qbecomesASK @ (10000 - q)Sell NO @ qbecomesBID @ (10000 - q)
2. Tick Rounding#
Prices are rounded to the nearest tick (default 100 bps = 1%):
| Side | Rounding | Reason |
|---|---|---|
| Bids | Round DOWN | Conservative for buyer |
| Asks | Round UP | Conservative for seller |
Example (tick size = 100 bps):
| Order | Before | After |
|---|---|---|
| Buy YES @ 6050 | 6050 | 6000 (round down) |
| Sell YES @ 5950 | 5950 | 6000 (round up) |
3. Matching#
Orders match using price-time priority:
Placing a Buy Order#
Requirements#
| Requirement | Description |
|---|---|
| Market State | Must be in TRADING state |
| Price | 1 to 9999 basis points |
| Quantity | Greater than 0 |
| Collateral | Sufficient USDC in wallet |
Collateral Calculation#
For a buy order:
code
Required Collateral = (price_bps × quantity) / 10000
Example: Buy 100 YES @ 6000 bps
code
Collateral = (6000 × 100) / 10000 = 60 USDC
Order Flow#
Placing a Sell Order#
Requirements#
| Requirement | Description |
|---|---|
| Market State | Must be in TRADING state |
| Share Ownership | Must own the shares you're selling |
| Price | 1 to 9999 basis points |
| Quantity | Less than or equal to available shares |
No Naked Shorts#
You can only sell shares you own:
Order Flow#
Self-Trade Prevention#
Orders from the same user cannot match against each other. If your new order would match your existing order, it skips and matches the next best price.
Order Parameters#
| Parameter | Type | Description |
|---|---|---|
side | OrderSide | BuyYes, SellYes, BuyNo, SellNo |
price_bps | u16 | Price in basis points [1, 9999] |
quantity | u64 | Number of shares |
order_type | OrderType | Limit, PostOnly, IOC |
Fee Structure#
| Fee | Rate | Recipient |
|---|---|---|
| Taker Fee | 200 bps (2.0%) | Split below |
| → Protocol | 150 bps (1.5%) | Treasury |
| → Creator | 50 bps (0.5%) | Market creator |
| Maker Fee | 0 bps (0%) | — |
Taker: Order that matches immediately Maker: Order that rests on the book
Order Book Visualization#
code
Market: BTC/USD (15-min duration)
BIDS ASKS
Price Qty Total | Price Qty Total
-------------------------------------
5500 1,000 1,000 | 5600 500 500 <- Spread: 100 bps
5400 2,500 3,500 | 5700 1,200 1,700
5300 800 4,300 | 5800 3,000 4,700
5200 1,500 5,800 | 5900 750 5,450
Best Bid: 5500 bps (55%)
Best Ask: 5600 bps (56%)
Mid: 5550 bps
Trade Execution Example#
Incoming Order: Buy YES @ 5700 bps, qty = 1,000
| Step | Match Price | Quantity | Cost |
|---|---|---|---|
| 1 | 5600 bps | 500 | 28.00 USDC |
| 2 | 5700 bps | 500 | 28.50 USDC |
| Total | 5650 avg | 1,000 | 56.50 USDC |
Common Errors#
| Error | Cause | Solution |
|---|---|---|
E_TRADING_NOT_STARTED | Market not in TRADING state | Wait for start snapshot |
E_TRADING_ENDED | Market past end time | Cannot trade after t_end |
E_INSUFFICIENT_COLLATERAL | Not enough USDC | Deposit more USDC |
E_INSUFFICIENT_SHARES | Selling more than owned | Reduce quantity |
E_WOULD_CROSS | PostOnly order would match | Use Limit type |
E_ORDERBOOK_FULL | 64 orders per side limit | Wait for orders to fill |
Best Practices#
- Check the Spread: Wide spreads mean higher costs
- Use Limit Orders: More control than market orders
- Monitor Time: Orders are cancelled at market end
- Calculate P&L: Know your breakeven price
- Size Appropriately: Don't over-concentrate
Next Steps#
- Learn Managing Positions
- Understand Claiming Winnings