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

# Positions

> Everything you currently hold, with size, average price and value.

Send `/positions` or tap **Positions** on the main menu to see your open positions.
When you have none, the screen says so.

## What each line shows

Every position is two lines under the market title:

* The **outcome** you hold, the **size** in shares, and your **average price** —
  what you paid per share across every fill.
* The **current price** and the position's **current value** in dollars.

Comparing your average price to the current price tells you where you stand;
current value is what the position is worth at the moment the screen was drawn.

Tap **🔄 Refresh** to pull fresh prices. There is no auto-updating — the numbers
are a snapshot from when the message was last drawn.

## Redeemable and mergeable

Some positions carry an italic tag next to the title:

| Tag            | Meaning                                                            |
| -------------- | ------------------------------------------------------------------ |
| **redeemable** | The market has resolved and this position can be turned into USDC. |
| **mergeable**  | You hold both sides of the same market, which can be recombined.   |

These are labels, not buttons. The bot flags the state so you know it exists; the
actions themselves are not in the bot.

<Note>
  Positions are read from your Polymarket account, so they include anything you
  bought through the [web terminal](/terminal/overview), the Chrome extension, or
  a [copy trade](/telegram/copy-trades) — not just orders you placed in chat.
</Note>
