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

# Commands

> The six slash commands the bot understands.

Every screen in the bot is reachable from the main menu, but each one also has a
command. Type `/` in the chat and Telegram lists them.

| Command      | What it does                                                             |
| ------------ | ------------------------------------------------------------------------ |
| `/start`     | Open the main menu. On your very first use it also sets up your account. |
| `/buy`       | Buy from a Polymarket link.                                              |
| `/positions` | Show open positions.                                                     |
| `/wallet`    | Deposit addresses and key export.                                        |
| `/copytrade` | Copy trade settings.                                                     |
| `/referrals` | View your referral link and stats.                                       |

## /start

The command to start with. Any command registers you — send `/positions` first and
a Ballista user and signing wallet are created for you all the same — but only
`/start` finishes the job by provisioning the Polymarket account behind it: the
deposit wallet and your deposit addresses. Until that has run once, the other
screens have nothing to read and will tell you your account is not set up.

Provisioning takes a few seconds, so `/start` posts a `⏳ Loading…` placeholder and
replaces it with the menu when it is ready. The placeholder appears every time you
send the command, not just the first. See
[Create your account](/guides/create-account).

Afterwards `/start` is simply "go home": it reopens
[the main menu](/telegram/main-menu) with your current balance.

<Note>
  `/start` is also the target of referral links: opening a `t.me` referral link
  sends it for you and credits the referrer — but only if you are a brand new
  user. Clicking someone's link later has no effect. See
  [Referrals](/telegram/referrals).
</Note>

## /buy

Asks you to reply with a Polymarket link, then loads that market and shows the buy
buttons. The link has to be on `polymarket.com` or one of its subdomains;
everything else is turned away. Full walkthrough in [Buying](/telegram/buying).

## /positions

Lists everything you currently hold. See [Positions](/telegram/positions).

## /wallet

Your deposit addresses for every supported chain, links to your Polymarket profile,
and the **Export Keys** button. See [Wallet and deposits](/telegram/wallet).

## /copytrade

Opens the list of your copy trades, where you can create a new one or open an
existing one to edit. See [Copy trades](/telegram/copy-trades).

## /referrals

Your referral code, link and stats. See [Referrals](/telegram/referrals).

<Tip>
  If you send the bot a plain message when it is not waiting for anything, it
  replies with a nudge to send `/start` or `/buy`. Text only matters when the bot
  has just asked you a question — a limit price, a copy-trade value, a referral
  code.
</Tip>
