Anatomy of an order
Every order is three things:
Leg actions
Each leg names one of four actions. Buying pays out (a debit); selling takes in (a credit). To close a position, submit the opposite actions to the ones that opened it.
Order types
Three order types decide when and at what price a set of legs fills. A market order fills on the spot, and so does a limit whose price reaches past the market. What waits is an order the market has to come to: its condition has to hold for three consecutive seconds first, and so does a stop's trigger.
Market
Fills immediately at the natural price — the ask when buying, the bid when selling. The only type with no waiting period. Must be single-leg.
Limit
Rests until the market reaches your price — a credit at or above it, a debit at or below — and holds there for three seconds. It then fills at your price. A price that reaches past the market fills at once instead: at the market you crossed if it was already past when you sent it, at your own price if the market comes through you later. The only type that may be multi-leg.
Stop
A single-leg order that rests on the book and triggers once the mid has been across your stop level for three seconds, then fills at the market. One that would trigger instantly is rejected.
Multi-leg
Spreads, iron condors, butterflies, and any other multi-leg structure are submitted as one limit order (only limit orders may be multi-leg). Each leg produces its own trade entry, but the order is atomic — all legs fill together or none do, and the fill is priced on the combo's net price.
How fills are priced
Two separate questions: when an order fills, and at what price.
And the price:
- Market
- The natural price — ask for a buy, bid for a sell.
- Limit the market came to (any number of legs)
- Your own limit price — the price you asked for, never the better price the market flickered to for an instant. That holds both ways such an order fills: after three consecutive seconds at your level, and the instant the market moves through a resting order, which fills it right there and still at your price. An order priced at the market is resting too: it asked for the mid, it did not reach past it.
- Limit you priced past the market
- The market price at the moment that price was set. An order priced past the market — better than what was quoted, not merely equal to it — crossed the spread on purpose, and a limit is the only way to do that with a spread, since market orders are single-leg. So it fills on the spot, at the price the market was showing then, which is strictly better than the limit you asked for. Pricing at the mid is not crossing: that order is resting, and fills at your price.
- Stop (on trigger)
- At the market, priced like a single-leg limit's reference price below.
Usually the moment a price was set is the moment you sent the order — but giving an order a new price starts it over. Cancel-and-replacing a live order, and every step a Smart liquidation takes as it walks a closing order toward the market, set a new price: it is measured against the market at the second it takes effect, and the three-second count restarts from there. So an order whose new price steps past the market crosses the spread at that step: it fills there and then, and prints better than the price shown on it — a re-priced order can fill below its own limit even though you never sent it that way.
One more order fills at the market, and it is not one you place by hand: an automatic stop-loss close — the closing order a strategy or the Strategy Builder generates to cap a loss. If the market runs through that order's price and stays through it for three consecutive seconds, it fills at the market instead of resting at a price the market has left behind. Without that escape a stop-loss would sit unfilled exactly on the days it matters.
What the market has to reach for a limit or stop is a reference price built from the bid/ask using CBOE-style tick rules (the tick sizes are in SPX option price ticks): the mid, unless the bid/ask is exactly one tick wide (then the natural price), or the spread is an odd number of ticks (then the mid rounded one tick toward the market maker — up for a debit, down for a credit). A multi-leg order uses the net price of the combo under the same even/odd-tick rule.
A $2.40 bid by $2.55 ask is 3 ticks wide (an odd number of ticks — the mid rounds one tick toward the market maker). The midpoint is $2.475. Against this quote a buy limit is fillable at $2.50 or higher, and a sell limit at $2.45 or lower — a limit at exactly that level fills only once it has held for three consecutive seconds, and then at its own price. A limit priced past the level crosses the spread and fills at once instead, at the market it crossed: $2.50 buying, $2.45 selling — slippage can never push that print past the ask or below the bid.
The market at the fill
An order that fills in live trading or in a bot session keeps the market it filled in: each leg's bid and ask at that moment, and the order's net bid and ask. The activity view prints the net pair (marked mkt) under the fill price, so you can see what the market was showing when your order went through without going back to the chart. (Practice days don't carry it — they replay past sessions rather than trade a live one.)
Each leg also carries the time of the quote used for it, and those times sit within a second either side of the fill — every leg is priced from the quote closest to it, which can be the second before or the second after. A market order fills on the spot against the latest quotes while its fill is stamped when you sent it, so there the times can run a few seconds behind. The full set — the per-leg quotes included — comes back from the API as fill_quotes — see Orders (API).
Slippage
Slippage is a single per-account setting (in Settings → Simulator costs) — a multiple of $0.05 from $0.00 to $1.00 that worsens your fill in the market maker's favor. New accounts start with $0.05 of slippage; you can change or clear it any time. It applies the same way across all three modes: backtests, live trading, and practice. There is no per-order slippage — the value configured on your account is resolved automatically when an order is placed.
It affects limit and stop orders only, and for a resting limit it makes them harder to fill rather than worse-priced: the market has to move slippage further past your price before the order can go through, and when it does, the limit still fills at your limit. Wherever an order fills at the market — a triggered stop, an automatic stop-loss close getting out, or a limit you priced past the market — slippage worsens that printed price by the same amount, but never past the natural price: a buy never pays more than the ask, a sell never receives less than the bid. On a market that is one tick wide the reference price already is the natural, so there slippage costs nothing. It models real-world execution drag. Market orders are unaffected: they already fill at the natural price. Backtest results are computed at zero slippage, so your setting is applied to them as a flat per-contract cost when the results are shown — the
same drag, charged rather than simulated.
$0.05 slippage configured, a buy limit at $2.50 will not fill while the mid is $2.50. The mid has to drop to $2.45, so that $2.45 + $0.05 = $2.50 meets the limit, and stay there for three seconds — this limit sits at the level, so it waits out the full three — then the order fills at your $2.50. The order's stored execution price is that number the mid must reach: your limit minus slippage for a debit, plus slippage for a credit. Slippage only shows up in the printed price where an order fills at the market, and there it stops at the natural: against a one-tick-wide $2.50 / $2.55 market a crossing buy prints $2.55 — the ask — not $2.60.SPX option price ticks
SPX option orders must be priced on the right increment. The tier is set by the price itself — $3.00 and above uses the dime tick, so $3.00 and $3.10 are valid single-leg prices but $3.05 is not.
Multi-leg (2+ legs): the net price is always on the $0.05 tick, whatever the price. Limit and stop prices off the correct tick are rejected before anything else is checked; slippage, when supplied, must also be a multiple of $0.05.
Defined-risk only — no naked shorts
Every short option must be covered by a long option of the same type. An order whose resulting position would hold an uncovered short — a lone short put, a lone short call, or selling more of one type than you buy — is rejected with naked short positions are not allowed, regardless of how much capital the account has. Add the matching long leg (a cheap, far out-of-the-money one will do) to turn it into a spread.
Loss runs away as SPX falls.
A cheap lower strike caps the downside.
Loss is capped — defined risk.
A short put is covered by a long put and a short call by a long call; a long call does not cover a short put. The gate reads your resulting book, so it also blocks stripping the protective long leg out of a spread you already hold. This is the same rule the strategy builder enforces at authoring time.
The maximum-profit cap
A limit order's price can't exceed the structural maximum profit of its legs — for example a $5-wide vertical caps at $5.00, because no more than that can ever be captured. This check is skipped when the maximum profit is unbounded, such as a naked long call or a ratio backspread. (A naked long call is defined-risk — its loss is capped at the premium — so it's accepted; only uncovered short options are rejected.)
Previewing an order
Before committing, you can preview any order: the ticket (and the API's dry-run endpoint) runs every validation and returns the projected fill price, fees, and buying-power impact without placing anything. A successful preview is a strong signal the real order will go through.
Canceling
Any order that hasn't finished yet can be canceled before it fills. In practice, canceling removes the order and its associated trades and recomputes your history. In live trading a cancel is a request rather than an instant undo — the order shows as canceling… until it resolves, and an order that fills first ends up filled. There you can also atomically cancel-and-replace a resting limit order's price in a single step.
Liquidate: closing orders built for you
You don't have to write the closing orders yourself. The Liquidate button on the positions view closes your whole book in one step: it groups what you hold into closing orders and works them until the book is flat. Two methods — Smart places favorable limit orders (up to four positions per order) and re-prices each one every 5 seconds until it fills, while Aggressive sends a market order per position, buying your shorts back before it sells the longs covering them. Grouping is built so that no partial set of fills can ever leave you with an uncovered short, which is why liquidation orders never run into the defined-risk rule above.
Tips
The dry-run runs every validation the real order would — ticks, max profit, naked-short, buying power — so a clean preview turns a mystery rejection into a non-event.
A market order pays the full spread by construction; a limit at the mid (or a tick inside it) is what the fill engine is built around — it costs you a few seconds of waiting and gets you the price you asked for. When you do need it filled now, a limit priced past the market fills just as fast and never prints worse than the natural.
On an odd-tick spread the rounding always favors the market maker — you pay the higher half buying and receive the lower half selling. Over hundreds of backtested fills that half-tick is a real cost; it's in your results on purpose.
A credit stop fires as the price falls to the trigger, a debit stop as it rises — set the trigger on the far side of the current mid or the order is rejected as already-triggered. A debit stop above the mid doubles as a breakout entry.
Legging into a spread one order at a time exposes you to the market moving between fills — and can transiently reject as a naked short if you sell first. Submitting the structure as one atomic limit order prices and fills it as a unit.