Skip to content
Troubleshooting & FAQ

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.

Activity: orders and fills, agent runs, config changes, alerts and sign-ins on one timeline, filterable by kind and symbol.
Activity: orders and fills, agent runs, config changes, alerts and sign-ins on one timeline, filterable by kind and symbol.

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 wordsWhat usually trips itWhat to do
1Paper/live flag matches the running processNever on a normal day; a deploy mismatch. Halts.Tell your operator
2Market 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 dayNothing; premarket ideas wait for 08:45 on their own
3 (codes below), illiquid, under $3, wide spread, nameSee the codes; edit Risk › Tradable universe
4Long 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 positionNothing; the PM re-proposes
5, good for the dayNever from the PM; a code guardNothing
6Limit 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_quoteApprove re-quotes at the current price; otherwise the PM re-proposes
7Quote younger than 30 secondsStale market dataNothing; the next proposal trades when data is fresh
8At most $500 per buy order; a sell of shares you hold passes with a note (covered_sell_uncapped)An oversized ideaThe PM sizes down; raising the cap is a loosening
9Resulting position at most 10% of equityAdding to a name you already own (open buy orders count)Nothing, or trim the name first
10 at most 60% of equityThe book is nearly fully invested (open buy orders count)Nothing; sells always pass
11At most 6 orders a dayA busy day; every order decision today counts (a corrected resubmit or a re-priced exit counts once)Wait for tomorrow
12Pattern-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 fillsHold the position overnight
13No buys within 2 days of earningsA buy on or right before a report dateNothing; sells are unaffected
14Day's loss not past −$150A 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 noteSame; consider a lower
16No second buy of the same symbol within 60 minutes; sells of a held position are never duplicates (covered_sell_repeat)The PM repeating itselfNothing
17Never 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
20Settled 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 being no_new_buys, max_gross_pct (a tighter gross cap) or blocklist_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_stop and 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_by and 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_analyst note 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_exit and 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_fractionable and 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_confluence on 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

WordMeaningWhat next
RejectedA check, a constraint or the broker refused it; nothing was placedThe PM reads the reason next session
BlockedTrading 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 haltResume on Risk; the PM re-proposes
ExpiredIts 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 itNothing to undo
Decided today: what went through on its own, what you approved or rejected, and what expired unsent.
Decided today: what went through on its own, what you approved or rejected, and what expired unsent.

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.