> ## Documentation Index
> Fetch the complete documentation index at: https://docs.omnibook.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Order direction

> side × outcome × tick — four actions, one price field, no shorting.

Omnibook orders use **side × outcome × tick-in-own-outcome-space**. That is
deliberate: one price field, four user actions, and no shorting concept.

| Field     | Values          | Meaning                            |
| --------- | --------------- | ---------------------------------- |
| `side`    | `buy` \| `sell` | Are you acquiring or disposing?    |
| `outcome` | `yes` \| `no`   | Which contract?                    |
| `tick`    | 1–99            | Price in **cents of that outcome** |

The matcher normalizes to YES-space internally. You always quote in the
outcome you named.

## The four actions

| `side` | `outcome` | What happens               |
| ------ | --------- | -------------------------- |
| `buy`  | `yes`     | Pay `tick`¢ to go long YES |
| `buy`  | `no`      | Pay `tick`¢ to go long NO  |
| `sell` | `yes`     | Sell YES you already hold  |
| `sell` | `no`      | Sell NO you already hold   |

There is no "short YES" as a separate verb — selling requires inventory.
`reduce_only` refuses any order that would increase exposure.

## Tick does not flip with outcome

A buy-YES at tick `47` and a buy-NO at tick `47` are both "47¢ for that
outcome." They are **not** the same book level. A NO bid at `47` rests opposite
a YES ask implied at `53` (`100 − 47`). See
[Orderbook responses](/concepts/orderbook).

## How fills report direction

On your fills and the public tape, direction is the **taker's** (or your own
order's) origin:

| Field                          | Where         | Meaning                                       |
| ------------------------------ | ------------- | --------------------------------------------- |
| `side` / `outcome`             | Own fills     | Your order's side and outcome                 |
| `taker_side` / `taker_outcome` | Public trades | The aggressor's side and outcome              |
| `tick_yes`                     | Public trades | Always YES-space; NO price = `100 − tick_yes` |

## Why not Kalshi's bid/ask vocabulary?

Kalshi is migrating toward `outcome_side` + `book_side` (`bid`≡yes, `ask`≡no)
to escape a legacy two-price shape. Omnibook never had that shape — `side` and
`outcome` map 1:1 onto the core `NEW_ORDER` message. New integrations should
use the table above; there is no deprecated `action`/`is_yes` layer to migrate
off.
