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

# Referrals

> Claim your code, share your link, and track what your referrals earn you.

Referrals live in the bot and nowhere else. Send `/referrals` or tap **💰
Referrals** on the main menu.

You earn on two levels: a share of the fees paid by the people you invite directly
(Level 1), and a smaller share from the people *they* invite (Level 2). The screen
shows your current rates — they depend on your tier, so read them off the screen
rather than assuming. Background in [Referrals](/guides/referrals).

## Claim your code

New accounts have no code. The screen says so and offers a single button:
**+ Claim Referral Code**.

Tap it and reply with the code you want: 4 to 20 characters, letters and numbers
only.

<Warning>
  Your referral code is **permanent**. It cannot be changed or released once
  claimed, so read it twice before you send it.
</Warning>

If the code is the wrong shape — too short, or with a symbol in it — the bot says
so and waits for another try. If the code is well-formed but **already taken**, the
bot has stopped waiting by then: it reports the failure, and your next message goes
nowhere. Tap **+ Claim Referral Code** again to have another go.

Once a code is yours, the screen redraws with your link.

## Your link

With a code claimed, the screen shows a tap-to-copy `t.me` link ending in your own
code:

```
https://t.me/YourBallistaBot?start=ref_YOURCODE
```

Anyone who opens that link lands on the bot with `/start` — the same command that
sets up their account — and is credited to you.

<Note>
  Attribution only happens on sign-up. If someone already has a Ballista account,
  opening your link does nothing; it will not move them under you. Share the link
  with people who have not registered yet.
</Note>

## Your stats

The screen carries four numbers:

| Line                        | What it means                                     |
| --------------------------- | ------------------------------------------------- |
| **Direct referrals**        | How many people signed up through your link.      |
| **Pending rewards**         | What you have earned and not yet been paid.       |
| **Tier**                    | Your current rewards tier, which sets your rates. |
| **Level 1 / Level 2 rates** | The share you earn from each level.               |

Accounts with partner status are marked as such next to the tier.

Tap **🔄 Refresh** to pull the latest figures.
