Appearance
Order Types & Time-in-Force
Every market on Proof is a central limit order book with price-time priority — the same model as a standard exchange. This doc is the practical catalogue of how you place and manage orders against those books: the two order styles, the three time-in-force rules, the qualifiers that constrain how an order behaves, the tools for tracking and changing a resting order, and the atomic basket that lets you build a whole structure in one shot.
It is a conceptual reference — behavior in plain terms, not wire formats, fields, or codes. The same tools apply uniformly across every market kind: perpetuals, conditional perpetuals, and prediction binaries all live on ordinary limit order books, so everything here works the same whether you are trading an underlying perp or a conditional leg. Every worked number below is illustrative.
A quick orientation on instruments, since they recur. A conditional market lets you trade an underlying asset conditioned on whether a real-world event happens. Each one is a family of five linked order books built from one underlying perpetual and one binary event: the underlying perp, a conditional perpetual (YES) and conditional perpetual (NO), and a prediction binary (YES) and prediction binary (NO). You trade each book on its own with the order types below. For what the family is and how it settles, see Market Structure & Instruments and Settlement, Resolution & Void.
Limit vs. market orders
There are two ways to send an order. They differ in one thing: whether you name a price.
- A limit order names the worst price you will accept. If part or all of it can fill immediately at that price or better, it does. Whatever can't fill right now rests on the book as a standing bid or offer at your price, waiting for someone to trade against it (subject to its time-in-force, below). While it rests you are a maker providing liquidity; whoever fills you is the taker. Trades always match at the resting (maker) price — the maker sets the price and the taker accepts it.
- A market order names no price. It takes whatever liquidity is available now, walking the book from the best price outward until it is filled or the book runs dry. You are always the taker, and you fill at the prices already resting against you. Because a market order has no price of its own, it has nothing to rest — it executes against current depth and stops.
The practical difference is certainty of price vs. certainty of execution. A limit order controls your price and may not fully fill; a market order controls execution and accepts whatever price the book gives you. On a thin book — which conditional legs often are — a market order can walk several levels and fill well away from the touch, so naming a limit price is the safer default when depth is uncertain.
A worked feel. Suppose the best offers on a book are 5 units at $100.00 and 5 at $100.20. A market buy for 8 units fills 5 at $100.00 and 3 at $100.20 (average ≈ $100.075). A limit buy for 8 units priced at $100.00 fills only the 5 available at that price and rests the remaining 3 at $100.00. Same intent, different outcome on the unfilled part — and different worst price. (Figures illustrative.)
Two book-level gates apply to both styles. Each market has a minimum price increment (a tick) and a minimum size increment (a lot); orders that aren't clean multiples are not accepted. A market order has no price, so the tick gate doesn't bind it, but it still must be a whole number of lots.
Time-in-force: GTC, IOC, FOK
Time-in-force answers a single question about a limit order: what happens to the part that can't fill right now? There are three rules, and they are the whole spectrum from "wait indefinitely" to "all-at-once-or-nothing."
- GTC — Good-Til-Cancelled. The order fills what it can immediately, and the remainder rests on the book until it fills or you cancel it. This is the standard resting order, and the one that makes you a maker. Only GTC orders rest — they are the sole way to leave a standing quote on the book. If you want liquidity to sit and wait, GTC is the rule you use.
- IOC — Immediate-Or-Cancel. The order fills whatever it can immediately, against the liquidity resting right now, and cancels the remainder instead of resting it. A partial fill is fine; whatever doesn't fill on contact is dropped. Use IOC when you want to take available liquidity without leaving a footprint on the book — sweep what's there, walk away with the rest unfilled.
- FOK — Fill-Or-Kill. The order must fill completely and immediately or it is rejected outright — it never partially fills and never rests. It is checked against current liquidity up front: if the full size can't be had at your price right now, nothing trades. Use FOK when a partial fill is worse than no fill — when you need the entire size or none of it, with no leftover exposure to manage.
The way to hold the three in mind: GTC is patient (rest the remainder), IOC is opportunistic (take now, drop the rest), FOK is all-or-nothing (full size now or nothing at all). A market order behaves like an aggressive taker by nature; the time-in-force rules let a limit order span the same range, from resting quietly to demanding a complete immediate fill.
A worked contrast on a book showing 6 units offered at your price. An order for 10 units: GTC fills 6 and rests 4; IOC fills 6 and cancels the 4; FOK fills 0 — it's rejected, because 10 weren't available to fill in full. (Sizes illustrative.)
Qualifiers: post-only and reduce-only
These two flags don't change the order style — they constrain what an order is allowed to do. You can combine them with the styles above.
Post-only
A post-only order will never take liquidity. It is meant to rest as a maker quote, and if it would cross the book and fill immediately as a taker, it is rejected rather than crossing. The guarantee it buys you is that you will only ever be a maker on that order — you can't accidentally pay the taker side or move the price by lifting a resting order on the other side.
This matters for two reasons. First, cost: a maker fill is charged a lower fee than a taker fill (see Fees, below), so a market maker who must remain passive uses post-only to guarantee the maker side. Second, intent: when you're posting a quote at or near the touch and the book has moved, a plain limit order might suddenly cross and execute as a taker against your intent; post-only refuses that and tells you to re-price instead. The trade-off is that a post-only order can be rejected in a fast market — which is exactly the behavior you want when the alternative is an unintended taker fill.
Reduce-only
A reduce-only order can only reduce or close an existing position — never increase it, and never flip it to the other side. If filling it would add to your position or open a new one in the opposite direction, the part that would do so does not execute. It is the safety rail for getting out.
Use reduce-only whenever your intent is purely to exit: closing a winner, cutting a loser, or de-risking down to a target. It prevents two classic mistakes — accidentally doubling your size when you meant to flatten, and overshooting a close so far that you open a fresh position the other way. On a long of 5 units, a reduce-only sell for 8 closes the 5 and stops; it will not leave you short 3. (Sizes illustrative.) Because reduce-only orders can't add risk, they're also the natural tool for an automated "close everything" routine where you never want a stray order to re-open exposure.
The two qualifiers answer different questions: post-only is about how you interact with the book (always make, never take), reduce-only is about what the fill does to your position (only shrink it, never grow it).
Client order IDs
When you place an order you can attach your own client order ID — a label you choose, carried along with the order. The exchange tracks the order under that identifier, so you can reference it later to amend or cancel it without having to discover what the exchange called it. It's your handle on the order.
For anyone running more than a handful of orders — and certainly for a market maker quoting many books at once — client order IDs are what make order management tractable. You tag each quote as you place it, and then cancel-by-tag or amend-by-tag precisely, with no ambiguity about which resting order you mean. They're a bookkeeping convenience, not a market mechanic, but they're the difference between managing a quote ladder cleanly and guessing.
Changing a resting order: amend vs. cancel-replace
Once a GTC order is resting, you have two ways to change it, and the difference between them is queue priority — your place in line at a given price level, which is set by time: earlier orders at the same price fill first.
- Amend modifies a resting order in place. Crucially, when the change isn't more aggressive — for example, reducing the size, or moving the price away from the touch — the order keeps its queue priority. You stay where you were in line. Amend is the tool for adjusting a quote you want to keep working without surrendering the position you've earned in the queue.
- Cancel-replace removes the old order and submits a new one. The new order is, for all purposes, new — so it goes to the back of the queue at its price level, resetting queue priority. Cancel-replace is the right tool when you genuinely want a fresh order (a different price toward the touch, a larger size) and the loss of priority is acceptable or unavoidable.
The rule of thumb: if you can express the change as an amend, prefer it — you keep your spot in line, which on a busy level is real edge, because it determines whether you get filled before the trader behind you. Reach for cancel-replace when the change is one an amend can't preserve priority through anyway, such as becoming more aggressive in price.
There's a second reason to favor amend, specific to how the engine sequences a block. Within a single block, maker quote refreshes — cancels and amends — are processed ahead of new resting orders, which are processed ahead of market orders. A maker who refreshes quotes by amending (or cancelling) gets a small structural protection: the chance to pull or re-price a stale quote before incoming taker flow in the same block can hit it. So managing quotes with amend/cancel rather than place-then-cancel both preserves priority and sits in the favored slot of the block. Quote management is part of a maker's edge, not an afterthought — see Trading & Strategy in Theory.
One account-wide point that ties in here: a resting order reserves margin continuously, holding aside the initial margin for the position it would create if filled. Amending the size down releases part of that reservation; cancelling releases it entirely. That's worth knowing both for capital efficiency and because, near the edge of your margin, cancelling resting orders can free enough reserved margin to matter — see How Trading Works and Liquidation & Backstops.
Cancelling: cancel and cancel-all
Two cancel operations:
- Cancel removes a single resting order — the one you name (by client order ID or the exchange's own reference). The order leaves the book and its reserved margin is released.
- Cancel-all removes every resting order you have — across all your books at once, or scoped to a single market. It's the fast way to go flat on quotes: pull your entire footprint in one action.
Cancel-all is the standard panic-and-reset tool. A market maker who detects a stale view, a feed problem, or an unexpected move pulls all quotes immediately rather than picking them off one at a time — speed matters when the book is moving against you, and leaving even a few stale quotes resting is how you get picked off. Pairing cancel-all with reduce-only exit orders is a clean two-step "stand down": cancel-all to stop providing liquidity, then reduce-only orders to flatten any position you're left holding.
Atomic basket orders
A basket order lets you submit several legs that all fill together or not at all — one atomic group. Either every leg in the basket executes, or none of them does; there is no state where you end up with some legs on and others missing.
This is the tool for building a structure across the conditional family, where the whole point of a position is that the legs offset each other. The headline use is building a box: a fully matched set across a family — for example, combining conditional and binary legs so the payoff is locked in every resolution outcome — only does its job if you get all the legs. If you legged into it one order at a time and a later leg failed to fill, you'd be left holding a naked, unhedged piece — exactly the exposure the box was meant to remove. The atomic basket eliminates that legging risk: the structure arrives complete or not at all.
A worked feel. To assemble a matched box you might want to be long one leg, short another, and hold offsetting binary positions, sized so the combination nets to no exposure in every branch (YES, NO, and Void). Submitting those as an atomic basket means you either get the entire, fully-hedged structure or none of it — you are never left with the long leg on and the short leg missing. (The specific legs and sizes depend on the structure; see Arbitrage & Cross-Book Coherence for what a coherent box looks like, and Settlement, Resolution & Void for why being matched across all branches — including Void — is the property that matters.)
The same all-or-nothing logic helps any multi-leg trade where a partial fill is a liability rather than a convenience: a spread between two books, a hedge placed alongside the position it hedges, or any structure whose risk profile only holds if it's complete.
What your risk is priced against
Your orders execute against the order book at book prices — but your risk is measured against a different price, the mark. The two do different jobs, and it's worth keeping them straight.
That distinction matters because Proof deliberately separates the risk mark from the order book. A perpetual's risk mark — the price that drives your margin, equity, unrealized P&L, and liquidation — is derived from an external oracle, not from the last trade or the book mid. This is the anti-manipulation choice: a single spoofed print or a momentary book wick is far harder to push into a price the engine sources from an oracle than into a book-based number. So while your orders execute against the book at book prices, the marks that govern your risk — and anything keyed to them — come from the oracle. A separate book-tracking reference exists for funding alone, and the two can diverge by design. For the full picture of where each price comes from, see Oracles & Mark Prices and Funding.
For the conditional legs specifically, there is no oracle of their own: a conditional perpetual is margined and settled against the underlying perpetual's oracle, and a prediction binary has a known $1/$0 payoff by construction, so neither needs a feed of its own to be valued for risk. Your orders on those legs still execute against each leg's own book; it's only the risk valuation that reaches back to the underlying's oracle. See Settlement, Resolution & Void for how that oracle decides resolution, and Conditional-Market Margin for how the legs are margined.
Fees on a fill
Order management is only half the cost picture; the other half is what each fill costs.
Every fill is charged a flat per-fill fee: 5 basis points on the taker side and 2 basis points on the maker side. This is identical across every market kind — perpetuals, conditional perpetuals, and prediction binaries are all charged the same schedule. A basis point is one hundredth of a percent, so 5 bps is 0.05% and 2 bps is 0.02%.
Three things to internalize:
- The maker side is a charge, not a rebate. Resting a quote and getting filled still costs you 2 bps — less than the taker's 5 bps, but it is a cost, not a payment to you. Your maker edge comes from the spread you capture, not from the fee.
- The fee is on the fill's notional, in your collateral currency, per fill. It is charged on each fill as it happens (a single order that fills in several pieces is charged on each piece), against the notional of that fill, and it reduces your realized P&L and equity directly.
- The taker/maker gap is why post-only and quote discipline pay. A 3-bps difference per fill is small on any one trade but compounds for anyone trading in size or quoting actively, which is the practical reason a maker uses post-only to guarantee the cheaper side.
A worked feel. A taker fill of 1 unit at a notional of $50,000 is charged 5 bps = $25. The maker on the other side of that same fill is charged 2 bps = $12.50. Both come out of realized P&L in the collateral currency. (Figures illustrative — for the current schedule in force, check the product surface.) A volume-tiered schedule exists in the design; current markets use the flat schedule above.
Two things that are not fees, kept separate so the accounting stays clean: funding is a periodic payment that flows directly between traders — longs and shorts — and the exchange takes no cut, so it is not a fee (see Funding); and the early cash-out of a conditional position is a position transformation, not a charge — see the next section.
A note on closing conditional positions
One behavior specific to the conditional legs interacts with how you think about "closing," so it's worth stating here even though Settlement, Resolution & Void covers it in full.
Closing a conditional perpetual before its event resolves does not pay you cash. A conditional perp's gain is a branch-contingent claim — it's only real in the branch where the event fires — so it can't be handed over as unconditional cash before resolution. Instead, closing crystallizes your realized P&L as a prediction-binary position entered at $0, in the firing branch: a long of that binary if you closed at a gain, a short of the same binary if you closed at a loss. That binary then either resolves with the event ($1 if its branch wins, $0 otherwise) or can be sold on the binary book now at the implied probability to realize cash today. If you already hold the opposing binary, the close nets against it and realizes cash directly. Very small amounts — sub-cent per token, under about a dollar of P&L — round to zero.
The practical order-management takeaway: when your intent is to fully exit a conditional position for cash today, "close the conditional perp" is the first step, and selling (or netting) the resulting binary is the second. A reduce-only order is still the right tool for the close itself; just don't expect the cash to land from that single action the way it would when closing a plain perpetual. Settlement, Resolution & Void walks through the full close-then-sell path and the rounding.
Quick reference
- Two styles. Limit — name your worst price; the unfilled part may rest. Market — no price; take current depth until filled, always as taker. Both respect tick and lot; a market order skips the tick gate (it has no price).
- Three time-in-force rules. GTC — rest the remainder (the only style that rests on the book). IOC — fill what you can now, cancel the rest. FOK — full size immediately or rejected; never partial, never rests.
- Two qualifiers. Post-only — never take liquidity; rejected if it would cross (guarantees the maker side). Reduce-only — only shrink or close a position, never increase or flip it.
- Client order IDs — your own label on an order, for clean tracking, amending, and cancelling.
- Amend vs. cancel-replace — amend keeps queue priority when the change isn't more aggressive (size down, price away from touch); cancel-replace is a new order and resets priority. Prefer amend; maker refreshes are also processed ahead of taker flow in a block.
- Cancel / cancel-all — pull one order, or pull every resting order at once (all books or one market). The reset-and-stand-down tool, especially paired with reduce-only exits.
- Atomic basket — several legs that fill together or not at all. The way to build a box across a conditional family without legging risk.
- Marks vs. the book. Your orders execute against the book, but your margin and liquidation are priced against the mark — the oracle for a perpetual, reaching back to the underlying's oracle for the conditional legs — not the last print.
- Fees — flat 5 bps taker / 2 bps maker, per fill, on fill notional, in collateral currency, identical across all market kinds. Maker is a charge, not a rebate. Funding is a trader-to-trader payment, not a fee.
- Closing a conditional perp early mints a $0-entry binary (long on a gain, short on a loss); sell it on the binary book or hold to resolution to realize value. See Settlement, Resolution & Void.