Order rejected
How to read the check number on a rejected card, every risk check in plain words, the tradability codes, steering rejections, and what the PM does with a rejection.
- Who it is for
- Everyone on the book
- Reading time
- 9 min read
- Updated
Every order the PM (shown as on ) proposes runs through the 's , in the same order every time, before anything reaches the broker. A rejected card is the checks doing their job: nothing was sent.
Reading the check numbers
In the Inbox, under Decided today, a rejected reads and its line carries the reason as the Executor wrote it, for example "notional_exceeds_max: 640.00 > 500.00": a reason code, then the numbers that tripped it. The Executor runs every risk check and records every result, but the first failure in table order decides: the reason shown is always the lowest-numbered check that failed, even when later ones failed too.

To see the whole row with the check numbers, open Agent › proposal checks: the first proposal of the latest session opens with its checks as number · name · detail, and Show 18 checks does the same for any other. Green is pass, red is fail, and the header counts "n/18 passed · first failure wins". Activity › Orders keeps the trail for past days.
The risk checks
Numbers are the Moderate defaults (Moderate is exactly the code defaults); yours are on Risk › Limits and Risk › Halts.
| # | Check, in plain words | What usually trips it | What to do |
|---|---|---|---|
| 1 | Paper/live flag matches the running process | Never on a normal day; a deploy mismatch. Halts. | Tell your operator |
| 2 | Market open, outside the first and last 15 minutes (1 minute for the Executor's own stop and target exits) | A proposal evaluated after 14:45 CT or on a closed day | Nothing; premarket ideas wait for 08:45 on their own |
| 3 | (codes below) | , illiquid, under $3, wide spread, name | See the codes; edit Risk › Tradable universe |
| 4 | Long only: a sell must fit the shares you hold that are not already promised to another sell; no buy at all while the book is halted (reduce_only_book) | A sell bigger than the free position | Nothing; the PM re-proposes |
| 5 | , good for the day | Never from the PM; a code guard | Nothing |
| 6 | Limit within 1% of the last trade (a protective exit resting above the last trade at its slippage floor passes with a note) | Price moved since the idea was priced; a missing or invalid quote also fails here first, as no_quote | Approve re-quotes at the current price; otherwise the PM re-proposes |
| 7 | Quote younger than 30 seconds | Stale market data | Nothing; the next proposal trades when data is fresh |
| 8 | At most $500 per buy order; a sell of shares you hold passes with a note (covered_sell_uncapped) | An oversized idea | The PM sizes down; raising the cap is a loosening |
| 9 | Resulting position at most 10% of equity | Adding to a name you already own (open buy orders count) | Nothing, or trim the name first |
| 10 | at most 60% of equity | The book is nearly fully invested (open buy orders count) | Nothing; sells always pass |
| 11 | At most 6 orders a day | A busy day; every order decision today counts (a corrected resubmit or a re-priced exit counts once) | Wait for tomorrow |
| 12 | Pattern-day-trader guard under $25,000 (margin accounts; pdt_guard) | A round trip that would be day trade number 4 in 5 sessions, counted from the Executor's own fills | Hold the position overnight |
| 13 | No buys within 2 days of earnings | A buy on or right before a report date | Nothing; sells are unaffected |
| 14 | Day's loss not past −$150 | A bad day. Halts; a sell still passes with a note (reduce_only_exit) | Read the day, then Resume when ready |
| 15 | from the high-water mark under 8% | A bad stretch. Halts; a sell still passes with a note | Same; consider a lower |
| 16 | No second buy of the same symbol within 60 minutes; sells of a held position are never duplicates (covered_sell_repeat) | The PM repeating itself | Nothing |
| 17 | Never fails; over the line means the card waits for you. The Executor's own stop and target exits never wait (auto_ok: preauthorized protective exit) | Decide the card; the dial is on Strategy › Profile › Autonomy | |
| 20 | Settled funds: never borrow; a cash account spends settled cash only (insufficient_cash, unsettled_funds) | A buy bigger than free cash, or funded by today's sale proceeds on a cash account (they settle the next session) | Nothing; the same buy passes next session once the proceeds settle |
A missing, zero or crossed quote is one proposal's problem, never a halt: that proposal is rejected with no_quote and a note saying what was wrong with the quote, and the next one trades when the feed is back.
Check 3: the tradability codes
Check 3 reports every failing rule at once, in a fixed order, so one rejection tells the PM everything wrong with a name; the first code decides: profile_unavailable (no data; fails closed), denylisted, not_tradable_asset (not a US exchange-listed stock, ADR or ETF, or not tradable at the broker), halted, leveraged_etf_blocked, price_below_floor (under $3), insufficient_history (under 60 daily bars), illiquid_adv (under $5M traded a day), spread_too_wide (over 50 bps), order_exceeds_adv_pct (over 0.5% of daily dollar volume). Values exactly at a floor or cap pass. Sells are never trapped: an exit only has to pass profile_unavailable, halted and the broker's own tradable flag, so a holding that was delisted can still be sold.
Rejections that are not one of the numbered checks
- A symbol on hold. When a name you hold opens more than 35% away from yesterday's close with no split or other corporate action on record, the Executor holds it: the reason reads
symbol_hold:<SYM>:suspect_corporate_action, every order on that name is rejected on either side and its armed stop is frozen, because trading on a price it cannot explain is worse than waiting. Check the name, then clear the hold on Risk under Symbols on hold with your ; the Executor resumes on its next tick. - . A hard-constraint is enforced by the Executor before the risk checks. The reason reads
steering:<note_id>:<kind>, the kind beingno_new_buys,max_gross_pct(a tighter gross cap) orblocklist_symbols. Only buys are affected; to lift it, retire the note on Strategy › Guidance. When you add or change a constraint the Executor also sweeps what is already out: a waiting or queued buy card the constraint forbids is rejected with the same reason (marked as swept), and a buy order already resting at the broker is cancelled with that note. - On top of your stop. After the price is resolved (the peg, or the re-quote when you approve), a bracket buy whose working limit sits within 25 basis points of its own stop (the minimum stop room, a deployment setting) is not placed: a fill would go straight through the stop. The note begins
arrival_breached_stopand gives the working limit, the stop and the floor; the owner gets a "Not placed … the price is on top of your stop" mail; and the PM is woken to re-think the (a fresh stop or no entry) rather than re-propose the same price. If it was your approval's re-quote that landed there, the row reads Rejected · you. - Halt cancelled it. While the book is halted, buy orders resting at the broker are cancelled; the proposal closes as cancelled (Expired in the Inbox) with a note beginning
halt_cancel:and the halt reason. Sells are never cancelled by a halt. - Superseded by a newer proposal. One idea per name at a time: when a session proposes a fresh open on a symbol that already has an older one still queued, with the , or waiting for you, the older one is retired as Rejected, with a note beginning
superseded_byand the newer proposal's id, and the new card takes its place. An older one you had already approved is never retired; the newcomer is dropped instead. - Withdrawn by the PM. A cancel from the PM (shown as Analyst on screen) that names an order not yet at the broker (parked for tomorrow by the 14:48 pass, queued for the window, or waiting for you) closes it as Rejected with a
withdrawn_by_analystnote and the reason; nothing was sent. - Superseded by a stop. When a stop or target fires, any other sell already resting on that symbol (an earlier trim, say) is cancelled first so its shares are free for the exit; its note begins
superseded_by_exitand it shows as Expired. - Less than one share. Ideas are sized in dollars; the Executor turns the amount into shares at the working price: a fraction of a share where the broker allows fractions of that name, whole shares rounded down where it does not. When a whole-shares-only name costs more than the amount (say $150 of a $450 stock), nothing is sent: the note begins
below_one_share_not_fractionableand names the price of one share. Size up to a whole share or pick a name that trades in fractions; most large US stocks and ETFs do. - A screen blocked the name. On servers that declare screens, a buy in a name that fails a screen on Algorithms is refused and the reason names the screen ("Blocked by Low-vol quality: …"); the same words appear wherever the name is shown. (The older per-algorithm buy block was retired on 11 September 2026; a reason starting
algo_confluenceon an old row is that.) - The broker said no. After every check passes, the broker can still refuse (a symbol restriction, say). A fixable refusal (tick size, whole shares) gets exactly one corrected resubmit under the same verdict; anything else is final. The card reads Rejected with the broker's reason and Overview shows "The broker rejected an order".
Blocked, rejected, expired
| Word | Meaning | What next |
|---|---|---|
| Rejected | A check, a constraint or the broker refused it; nothing was placed | The PM reads the reason next session |
| Blocked | Trading was halted when the Executor reached a buy or an order-management request; on screen it reads Rejected · policy with the halt as its note. Sells are not blocked by a halt | Resume on Risk; the PM re-proposes |
| Expired | Its closed with no decision (nothing was sent), or its day order was cancelled unfilled: at the window's end, by a halt (buys only), by a new hard constraint, or because a stop exit superseded it | Nothing to undo |

The PM hears about it
Every rejection reason, and any note you type when you reject, lands in the decisions ledger of the the PM reads at the start of its next session, so it decides again with the reason in front of it. You never need to explain a rejection to it yourself.