Two identifiers, two moments
Every order carries an Anthid identifier and, once the broker has acknowledged it, the broker’s own. Anthid’s identifier exists as soon as there is an order record at all. The broker’s exists only after the broker acknowledges the order, and an order the broker rejected outright may never get one. That is the point of having two. If Anthid used only the broker’s identifier, an order sent but not yet acknowledged would be unaddressable, which is exactly the order you most want to be able to point at. Use Anthid’s identifier to refer to an order within the platform, and the broker’s when reconciling against a statement or a broker portal. Both are queryable.Finished is not the same as filled
Each order carries two descriptions of where it stands, and they are not alternatives. The status is the precise lifecycle position, in the venue’s own vocabulary. The state is a coarse rollup of that status, meant for filtering a list or driving a dashboard. The state is computed from the status rather than reported separately, so the two can never disagree.
The two fields do not share a casing, and it is worth noting before writing a comparison. The state reads
Open, Closed, Rejected. The status beside it reads NEW, FILLED, PARTIALLY_FILLED. Testing a state against "OPEN" never matches.
Two consequences are worth reading carefully, because both bite in reporting.
A partially filled order is Open, not Closed. It has traded, but it is still working, and treating the first fill as completion strands the remainder.
Closed is not a synonym for filled. A cancelled order and a fully filled order are both Closed, because both are finished. Which of the two it was comes from the status, or from comparing filled quantity against ordered quantity.
What an order record holds
Beyond identifiers and lifecycle, an order carries the terms it was working under and what has happened against it:- The symbol, side, and order type
- Ordered quantity and the amount executed so far
- Limit and stop prices, where the order type uses them
- Average execution price across fills
- Time in force, and where it was routed
- The broker and trading account it belongs to
- Your own reference, carried through from the intent
- When Anthid observed this version of the order
Current state and history
Anthid keeps current state and history separately, and the distinction matters for correctness rather than only for speed. Current reads return the most recent known state of each order. This is what an account view or a dashboard should show. History reads return records across a time range. This is what reporting, reconciliation, and audit run on. Live updates are a view over the same activity, not a replacement for the record. A system that loses its connection and reconnects does not receive what it missed while it was away, so the ledger is what closes the gap.Related
- Intents for the instruction that opens an order
- Positions for what accumulated holdings look like
- Compliance for what is recorded and how long it is kept
- Ledger API reference for endpoints, filters, field names, and pagination