Order types
In one paragraph: Every Trion order is, on chain, a limit order with a price you sign. What varies is how long it may wait (time-in-force), whether it may take liquidity (post-only), whether it may grow your position (reduce-only), and how you take it back (cancel versus hard revocation). The desk builds the familiar order types on top of that: limit, market, stop-market, stop-limit, take-profit, TWAP and Swarm, plus take-profit / stop-loss on a position. A "market" order is an IOC order whose limit is set from the book plus a slippage cap, and it still respects the price band. This page covers the CMPT-USD perpetual (open beta); the options order book has its own rules on the Options page.
Order types on the desk
| Type | What it does | Notes |
|---|---|---|
| Limit | Rests at your price, or fills immediately if it crosses | Time-in-force GTC / IOC / FOK; post-only and reduce-only flags |
| Market | Fills now against the book | Sent as an IOC order with a limit computed from the book and your slippage cap (default 0.5%); must be within the ±3% band of the index or it does not execute |
| Stop-market | When the mark reaches your trigger, sends a market-style child order | Signed strategy policy; the child's limit is the trigger plus (buy) or minus (sell) the slippage cap |
| Stop-limit | When the mark reaches your trigger, sends a limit child at your limit price | Signed strategy policy |
| Take-profit | When the mark reaches your target, sends a limit child | Signed strategy policy; a reduce-only take-profit is the position's TP line on the chart |
| TWAP | Splits the size into slices posted at a set interval over a duration | Runs from your browser as a series of market-style slices with a slippage cap; the desk also offers a signed TWAP strategy policy (interval at least 30 s) |
| Swarm | Places a ladder of limit orders across a price range | Flat, ascending, descending or pyramid size distribution; every order is band-checked before it is sent |
TP/SL on a position. From the position row you can arm a take-profit and a stop-loss at once. Both are reduce-only strategy policies linked as an OCO pair: when one triggers, the other is cancelled. They are drawn on the chart as the position's TP and SL lines.
From the chart. Right-click the chart to place a buy or sell limit at that price (or to set a price alert there). Drag an order line to move the order; the desk cancels the current order and places a new one for the unfilled size at the new price. Orders, position, TP/SL and alerts are drawn on the chart.
1-click trading. "Enable trading" signs once to create a trading session; after that, orders and cancels sign without wallet prompts. No-confirmation order entry (the "1-Click Trading" box on the ticket) is on by default; untick it to bring back the review step before every order.
Orders from Trion AI chat. You can type an order in plain English in the AI Chat panel (for example "buy 10 contracts with limit orders from 260 to 250"; prices said in cents are read as dollars, and a range becomes a ladder of limit orders). Every order, cancel or close the assistant proposes appears as a confirmation card and is sent only after you click Confirm. The assistant can misread a request, so check the card. See How to trade.
Time-in-force
| TIF | Behaviour | Typical use |
|---|---|---|
| GTC (Good-Till-Cancelled) | Fills what it can, rests the remainder on the book until filled, cancelled, expired or revoked | Providing liquidity, patient entries |
| IOC (Immediate-Or-Cancel) | Fills what it can right now against resting orders; the rest is terminated on chain, including a zero-fill attempt | Taking liquidity, closing quickly; what the desk's market orders use |
| FOK (Fill-Or-Kill) | Fills the entire signed quantity inside one settlement transaction or fills nothing and pays no fee | All-or-nothing sizing |
An FOK that would need more than 100 fills is rejected, not split. Every signed order also has an expiry; the web app defaults to 24 hours, which is a frontend choice, not a contract limit.
Flags
Post-only. The order may only rest. If it would cross the spread and take, it is rejected. The contract proves this by requiring the order to have rested (restedSeq > 0) before any taker that hits it was accepted. Use it when you want to be sure you provide, not take, liquidity. (In the general design post-only earns the maker rebate; in the CMPT-USD beta both fees are 0%.)
Reduce-only. The order may only shrink your position. If your position is smaller than the order at settlement time, the excess is clipped and terminated; it can never flip you from long to short. Reduce-only orders need no additional margin. Use it for exits and stop-losses so a stale order cannot open a new position.
Only these two flag bits exist; any other bit is rejected.
Self-trade protection
If your own order would match against your own resting order, the resting one is expired instead, with no fee and no trade printed.
Price bands
An order that would trade immediately must be within ±3% of the index I. Resting orders may sit further away (bids down to 0.1× the index, asks up to 10× the index) but will not execute until I moves into range. This applies to advanced-order children and to every order in a Swarm ladder.
On the perp desk: TP/SL at entry and price warnings
TP/SL at entry. On Market and Limit orders you can tick TP/SL and set a take-profit and/or a stop-loss price, typed or picked as a percentage of the entry price (TP 1/2/5/10%, SL 1/2/5%). The ticket shows the estimated profit or loss at each trigger for your order size, before fees. Both prices trigger on the mark price. They are armed only after your order fills, as reduce-only orders sized to the amount that filled; when both are set they cancel each other (one-cancels-the-other). If the order rests without filling, or it reduces, closes or flips an existing position, nothing is armed and the desk says so: set TP/SL from the Positions panel once you hold the position. Arming needs one wallet signature per leg, even with one-click trading.
Price warnings. While you type, the ticket shows the ±3% band message if the limit is outside the band, notes when a resting limit is more than 10% from the mark, and, for orders estimated to execute 1% or more away from the mark, asks you to press the button a second time (within six seconds) to confirm.
Cancelling versus revoking
| Action | What it does | Where |
|---|---|---|
| Cancel (soft) | Asks the matcher to drop the order; you sign a short cancel message and the matcher removes the order from its book only. Shows CANCEL_PENDING until acknowledged. It does not revoke your signature on chain. The on-chain alternative is OrdersV2.cancel, which authenticates you as the order's trader and works even before the matcher has seen the order. | Matcher (local) or chain |
| Advance strategy epoch | Invalidates every signed order under one strategy ID at once | On chain |
| Advance account epoch (hard revocation) | Invalidates every order and strategy you have ever signed with the old epoch. Cannot be undone; you sign new orders with the new epoch. | On chain |
Hard revocation is your protection if the matcher is down, censoring you, or holding orders you no longer want. It does not need the matcher's cooperation and works during a halt. The web app shows PENDING REVOCATION until the transaction is mined, then REVOKED.
Worked example (hypothetical)
You are long 10 CT CMPT-USD at $2.60. You place a reduce-only GTC sell for 10 CT at $2.70. Later you also sell 4 CT with a market order (IOC). When the resting sell finally matches, only 6 CT remain to close; the other 4 CT are clipped and terminated rather than opening a 4 CT short.
Risk caveat
A resting order is a standing authorization. If you close your browser, the order stays live until its expiry, cancellation or revocation. A desk TWAP runs in your browser tab; on reload the saved session is reconciled so that already-sent slices are not repeated. With 1-click trading on, a click on Buy or Sell, a chart right-click or a dragged order line sends the order at once. Matching in the engine is not final; only the confirmed batch is. See Perpetuals.
Source trail: docs/spec/V2_ARCHITECTURE.md §3.2 (enums: tif, flags, terminal reasons), §3.5 steps 4–6; overdrive/perps/src/v2/OrdersV2.sol (cancel, advanceStrategyEpoch, advanceAccountEpoch, post-only check); overdrive/perps/src/v2/BatchDecoderV2.sol (MAX_FILLS); overdrive/exchange/web/src/pages/perp-logic.ts (OrderType, getOrderTypeVisibility, strategyRole); perp.ts (computeMarketOrderLimitPrice, worstPriceWad, signAndSubmitStrategy, requestSubmit, oneClickTrading); perp-swarm-logic.ts (planSwarmOrders, validateSwarmOrders); perp-twap-logic.ts (planTwapSlices, reconcileTwapOnReload); overdrive/exchange/web/src/api.ts (submitStrategy).
Repository-owned documentation · October 2026 · Educational material, not investment advice and not an audit.
Documentation
Options live · Perps in open beta