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

> ## Agent Instructions
> Ballista is a trading client for Polymarket, not an exchange. Every order Ballista places goes to Polymarket's CLOB.
> There are three end-user surfaces — the Telegram bot, the web terminal and the Chrome extension — and they share ONE account and ONE balance. Never attribute a feature to a surface without checking that surface's source.
> Every user registers in the Telegram bot first. The terminal and the extension sign in with the Telegram login widget. There is no other sign-up path.
> Deposits arrive through EVM, Solana and Bitcoin bridge addresses and a Polymarket proxy wallet, with a $10 minimum. There is NO withdrawal UI — Export Keys is how a user takes custody of their funds.
> Feature parity is uneven and must never be assumed. The full ~30-field copy-trade form exists only in Telegram; the terminal's copy form has 7 fields; the backtester, leaderboard and trader profiles are terminal-only; alerts and notifications are extension-only; referrals are Telegram-only.
> Slippage means two different things. On a live copy trade it is a fill tolerance (default 30). In a backtest it is the simulated fill price (default 1). Deploying a backtest does not carry its slippage over to the live copy trade.
> Take-profit and stop-loss run on live copy trades but are NOT simulated in backtests — the backtest API rejects those fields.
> A backtest never places an order and never moves funds. Its fidelity caveats are published with every result and must be quoted, not paraphrased.
> Leaderboard PnL is own-tape: harvested by Ballista from its own trade tape. The leaderboard sorts by one transparent metric at a time and there is NO composite score or grade. The sparkline exists only for harvested wallets — a blank sparkline means unmeasured, never zero.
> Copy friction (slip) and a toxic flag DO exist and are own-engine: the wallet's own 30-day fills replayed as a taker (1% slippage per fill plus the real Polymarket taker fee schedule) against its actual 30-day PnL over the same fills, so the delta is pure friction. slip_pct is already a percentage, not a 0-1 fraction. The toxic flag is server-computed under evidence guards and is never re-derived client-side. Slip is not a sortable column. Blank means unmeasured — never zero and never clean.
> Copyability is a taker share, reported in aggressive (≥60%), passive (≤30%) and mixed bands. It is never a score.
> Do not document Feeds, the Twitter Tracker, the Telegram Settings button, percentage buy buttons, GTD orders, the Discord bot, or withdrawals.

# Placing orders

> Market orders, limit orders, and the bounds every order has to satisfy.

Ballista places two kinds of order, and both go to Polymarket's order book. You
can **buy** from any of the three surfaces.

<Warning>
  **You cannot sell from the Telegram bot.** Every order the bot places is a buy
  — there is no sell action in a market and none on the positions screen. To
  close a position, use the web terminal or the Chrome extension.
</Warning>

## How orders are sized

One rule covers every order on every surface:

* **Buys are in dollars.** You say what you want to spend — \$20 of a market.
* **Sells are in shares.** You say how much of your position to close — the
  34.5 shares you actually hold.

Market or limit, bot or terminal or extension, it is the same rule, and the
input is labelled for the side you are on.

## Market orders

A market order takes whatever the book is offering right now. It is submitted as
**fill-and-kill**: whatever can be filled immediately is filled, and any
remainder is cancelled rather than left resting. You may get a partial fill.

<Info>
  A market order is not a guarantee of a price. Thin books move, and on a
  prediction market a large order can walk several cents up the book. If the
  price matters more than the fill, use a limit order.
</Info>

## Limit orders

A limit order rests on the book at a price you choose and fills when someone
takes it. Ballista submits limit orders as **good-till-cancelled**: it stays
there until it fills or you cancel it.

Two things constrain the price:

* It must be strictly between **0 and 1** — Polymarket prices are probabilities,
  so 0.62 means 62¢ for a share that pays \$1 if the outcome happens. Exactly 0
  and exactly 1 are not valid prices.
* It is placed **in whole cents**. A price is snapped to the nearest cent before
  the order is signed, so 0.555 becomes 0.56.

Sizing follows the same rule as everywhere else: you type dollars on a buy and
shares on a sell. Polymarket's order book counts a limit order in shares on both
sides, so on a buy your dollar amount is divided by the limit price and the
share count is what gets signed.

The price is snapped to the cent **before** that division, so the shares are
worked out against the price the order will actually carry. The division then
always rounds **down**, to the hundredth of a share the exchange accepts. You may
spend fractionally less than you typed; you will never spend more. Every surface
does both of these the same way.

<Note>
  The terminal and the extension show you the converted count live — **≈ 36.36
  shares** under a $20 buy at 55¢ — and refuse an amount too small to buy 0.01
    	shares at that price. The bot has no live preview; it tells you in the prompt
    	instead when your price moved, as in "$0.005 becomes \$0.01", and asks for the
  amount at the snapped price.
</Note>

## Minimums

The Telegram bot floors both a market buy and a limit buy at **\$1**. That floor
is the bot's own: below roughly a dollar, rounding at the exchange collapses the
order to zero size and the book rejects it, so the bot stops you before the round
trip rather than after it.

The terminal and the extension do not enforce the same floor. They refuse an
order worth less than a cent, and a buy too small to reach 0.01 shares at your
limit price, and leave anything above that to Polymarket. Either way the fix is
the same: increase the size.

## Managing what you placed

The **extension** lists your open orders and your full fill history, and lets you
cancel a resting order.

The **web terminal** lists your open orders on the Portfolio page and next to
each market, and can cancel them. Its fill history is per market: each market
page shows your fills for that market, and there is no combined history view.

Either way the data is read back from Polymarket rather than from Ballista's own
records — what you see is what the exchange has. Cancelling is immediate and
frees the balance the order was reserving.

The Telegram bot has no open-order list and no trade history at all. Use the
terminal or the extension to see or cancel something you placed from the bot.

<Note>
  Everything on this page describes an order you place yourself. Copy trading
  places orders on your behalf with its own sizing and its own tolerance for
  price movement — see [Copy-trade settings](/guides/copy-trade-settings).
</Note>

## What to read next

<CardGroup cols={2}>
  <Card title="Presets" icon="bookmark" href="/guides/presets">
    Save a size and a price so you can fire the same order in one click.
  </Card>

  <Card title="Limits" icon="ruler" href="/guides/limits">
    Every minimum and cap in one table.
  </Card>
</CardGroup>
