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

> Invite people with a permanent code and earn a share of the fees they pay.

Referrals live in the Telegram bot, under the **💰 Referrals** button on the main
menu. They are not in the web terminal and not in the extension.

You earn from two levels: a share of the fees paid by people who join through
your link, and a smaller share from the people *they* invite.

<Info>
  Your rates are shown on the Referrals screen and are read live from your
  account when you open it. They depend on your tier, so this page does not
  quote numbers — the screen is the source of truth.
</Info>

## Claiming your code

Before you can invite anyone you need a code. Tap **+ Claim Referral Code** and
reply with the one you want.

* **4 to 20 characters**, letters and numbers only.
* It has to be unused — if someone already has it, you are told and can pick
  another.

<Warning>
  Your code is **permanent**. Once claimed it cannot be changed or released, so
  choose one you are happy to hand out for good.
</Warning>

## Your link

With a code claimed, the Referrals screen shows your invite link:

```
https://t.me/<bot>?start=ref_YOURCODE
```

Opening it starts the bot with your code attached. When that person registers,
they are attributed to you.

Attribution happens **only at registration**. Someone who already has a Ballista
account cannot be credited to you by clicking your link later, and nobody can be
moved from one referrer to another. This cuts both ways: send your link to
people before they sign up, not after.

## What the screen shows

|                      |                                                                |
| -------------------- | -------------------------------------------------------------- |
| **Level 1 rate**     | Your share of fees paid by people who joined through your link |
| **Level 2 rate**     | Your share of fees paid by the people *they* invited           |
| **Direct referrals** | How many accounts registered through your link                 |
| **Pending rewards**  | Earned and not yet paid out, in USDC                           |
| **Tier**             | Your current tier, which is what sets the two rates            |

Tiers move with your own lifetime trading volume, so the rates you see can go up
as you trade. Partner accounts are marked as such on the same line.

## What to read next

<CardGroup cols={2}>
  <Card title="Telegram bot" icon="telegram" href="/telegram/overview">
    The rest of what the bot does.
  </Card>

  <Card title="What Ballista does not do" icon="ban" href="/guides/what-ballista-does-not-do">
    Including where referrals are not available.
  </Card>
</CardGroup>
