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

# Deploying a backtest

> Turning a finished run into a copy trade — what carries over, and what deliberately does not.

At the bottom of every finished [backtest result](/terminal/backtest-results) there is
a **Deploy as copy trade** button. It takes you to the
[copy-trading page](/terminal/copy-trading) with the form already filled in from the
run.

It does not create anything on its own. You still press **Create copy trade**.

## It arrives paused

The copy trade this produces is created **switched off**, and the banner on the form
says so.

That is deliberate. A simulation assumes every admitted order filled — no queue, no
partial fills, no latency — so a one-click hop from a promising number to a live
strategy mirroring a stranger with real money is exactly the wrong default. Nothing is
copied until you turn the **Active** switch on under
[Active copy trades](/terminal/copy-trading).

The pause holds however you edit the form. Dismissing the banner discards the carried
filters and nothing else — the copy trade is still created switched off, and the banner
stays on screen saying so.

## What carries over

Everything from the run that a live copy trade actually has a setting for:

* the target wallet
* the sizing — percentage or fixed USDC, in whichever mode you ran
* reverse sides, copy buys, copy sells
* the entry price band, and the ignore-under / ignore-over bounds
* minimum and maximum per trade, and buy-at-the-minimum
* the spend caps: total, per market, per YES, per NO
* the market gates: seconds from resolution, seconds from open, maximum holders,
  market tags

All of it is sent with the copy trade. The banner lists the subset worth announcing:
carried settings the seven-field form has no input for **and** which differ from what a
copy trade would have done anyway. A flag left at its default — copy buys on, reverse
sides off — is still carried but is not listed, so that the price band or spend cap you
actually chose is not buried under four rows of defaults. Anything you type in the form
wins over a carried value.

The X on the banner discards those carried filters, leaving the form's own values. It
appears only when there is something in the list to discard.

## What does not carry over

### Slippage

This is the one that surprises people, and it is on purpose.

<Warning>
  **Slippage is not carried from a backtest into a copy trade.** The two are different
  quantities that happen to share a name.
</Warning>

In the simulator, slippage is an **execution cost**: the fill is booked at a worse
price, and it always happens. On a live copy trade, slippage is a **fill-or-kill
tolerance**: it is the worst price the order may cross to, and an order outside it does
not fill at all.

Carry a 1% simulated cost across as a 1% live tolerance and you would silently convert
a configuration you validated on a full tape into one that rejects most of the fills it
was validated on. So the fields are left blank and the live default applies. Set your
own in the form if you want something else.

[Backtest fidelity](/guides/backtest-fidelity) covers the rest of the gap between a
simulation and a live copy trade.

### Sim-only controls

Starting capital, the category allowlist, and the required and excluded keyword lists
exist only in the simulator. There is nothing to deploy them into. If your run used
any of them, the result page names them under the deploy button so you know which part
of the configuration is not coming with you.

### Order types

The simulator has no concept of an order type — it books every admitted order as
filled — so it has no opinion to carry. The copy-trade form's own default stands.

## After you deploy

The form is prefilled, not submitted. Check it, adjust anything you want, and press
**Create copy trade**. It lands in **Active copy trades**, switched off, and the form
clears. Start it with the Active switch when you are ready.

Pressing Back afterwards does not bring the prefill with it — a successful deploy
releases it, so you cannot create the same copy trade twice by navigating.

Settings you cannot reach from this form are documented in
[Copy-trade settings](/guides/copy-trade-settings).

## What to read next

<CardGroup cols={2}>
  <Card title="Copy trading" icon="copy" href="/terminal/copy-trading">
    The form, the active list, and the switch that starts it.
  </Card>

  <Card title="Backtest fidelity" icon="scale-balanced" href="/guides/backtest-fidelity">
    Where a simulation and a live copy trade part company.
  </Card>
</CardGroup>
