How matching works at a high level
Orders on Intention are matched inside IntentionKernel against a central limit order book using strict price-time priority. Sequencing is deterministic: every replica of the chain reproduces the same ordering of messages and therefore the same sequence of fills. The full description lives on the Order-transaction dispatcher page, and the state-machine view is on the IntentionKernel page. For the purposes of a fill-related ticket, the important property is that there is no private orderflow advantage and no off-chain matching engine; your order and the order that filled it are both recorded in the canonical block stream.Why the fill price can differ from the screen price
The number on the screen when you clicked “buy” is not the number you get filled at, and this is normal.- Slippage. A market-or-marketable limit order walks the book until it either fills the full size or hits the limit price cap. If the top of book was thin, the effective average can be noticeably worse than the best quote you saw a moment before.
- Intervening fills. Other participants’ orders may land in the same block or in the block between your last UI refresh and the block that includes your order. Those fills consume liquidity and shift the effective price for yours.
- Latency between snapshot and submission. The screen price is a snapshot; by the time your order is sequenced and matched, the book may have moved. This is not a bug in the matcher; it is a consequence of the finite travel time between you and the chain.
Unrealized vs realized PnL
- Unrealized PnL reflects the mark-to-market value of your open position at the current mark price. It moves continuously as the mark moves, and it is a running estimate, not a settled figure.
- Realized PnL is the cumulative result of positions that you have already closed. It does not move with the mark. It only changes when you reduce or close a position.
Mark price vs last trade price
The mark price is not the last trade price. It is a smoothed reference used for margin accounting, unrealized PnL, funding, and liquidations, constructed to resist manipulation of a single print. The Mark price page describes how it is built. The last trade price is whatever the most recent fill happened to execute at. They can diverge, especially in fast markets, and that divergence is by design — using the last print for margin would make liquidations trivially manipulable. Funding payments are computed against the mark as well; see Funding if your realized PnL line contains funding flows you did not expect.Reading per-fill attribution
Every fill is emitted with an identifier, a price, a quantity, a fee, and a sequencing position. You can pull these from the API or from the Verifiable Execution Stream. The per-fill records are the canonical answer for “what happened to my order”; the UI summary is a convenience rendering of those records.What to send us if it still looks wrong
Emailsupport@intention.xyz with:
- Your order id and, if you have it, the fill id.
- The expected price and size and what you based that expectation on.
- The observed price and size from the app or API.
- The block height or UTC timestamp at which the fill settled.
- A one-line description of the discrepancy.