> ## 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.

# Portfolio

> Your balance, your open positions and their P&L, and your open orders.

Portfolio is the account view: what you hold, what it is worth now, and what is still
resting on the book.

## Balance

Top right, in its own card: your available USDC. It is the same balance the Telegram
bot and the Chrome extension spend from, and the same one the trade panel checks a
market buy against.

To add to it, use **Deposit** in the top bar — see [Deposits](/guides/deposits).

## Positions

One row per position:

| Column      | What it is                                                                 |
| ----------- | -------------------------------------------------------------------------- |
| **Market**  | The market's title. Clickable when we can resolve the event it belongs to. |
| **Outcome** | Which side you hold.                                                       |
| **Size**    | Shares held.                                                               |
| **Avg**     | Your average entry price, in cents.                                        |
| **Cur**     | The current price, in cents.                                               |
| **Value**   | What the position is worth at that current price.                          |
| **P\&L**    | The move from your average entry to the current price, as a percentage.    |

The P\&L column is a **percentage change in price**, green above zero and red below —
not a dollar figure, and not a realized number. A position you have never sold out of
shows the paper move on what you still hold. If the average entry price is missing,
the cell shows a dash rather than inventing a percentage.

With nothing open, the table says "No open positions."

## Open orders

Everything of yours still resting on the book, across every market: side, price,
size, how much has filled, and status.

This table is account-wide and has no cancel button. To cancel an order, open the
market it belongs to and use the **My orders** tab on the
[market page](/terminal/market-page), which has an X on every row.

## What is not here

No trade history, no realized P\&L total, no charts and no export. Your fills for one
market are under **My fills** on that market's page; there is no combined history view
in the terminal.

## What to read next

<CardGroup cols={2}>
  <Card title="Deposits" icon="wallet" href="/guides/deposits">
    Topping up the balance every surface spends from.
  </Card>

  <Card title="Placing an order" icon="arrow-right-arrow-left" href="/terminal/placing-orders">
    Where positions and open orders come from.
  </Card>
</CardGroup>
