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:
Required Collateral = (price_bps × quantity) / 10000
Example: Buy 100 YES @ 6000 bps
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 | 30 bps (0.3%) | Protocol |
| Maker Rebate | 10 bps (0.1%) | Order placer |
Taker: Order that matches immediately Maker: Order that rests on the book
Order Book Visualization
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