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

# A market page

> The chart, the order book, and the four tabs under them.

Open any market and you get the same layout: a chart on the left, the trade panel and
order book stacked on the right, and four tabs of activity underneath.

## Picking a market

An event can hold several markets — one per candidate, per team, per threshold. When
it does, a row of buttons under the title lets you switch between them, each showing
its own Yes price. Everything else on the page follows your choice.

The star beside the title adds the event to your [Watchlist](/terminal/watchlist).

## The price chart

Above the chart, a **Yes / No** toggle shows both current prices; picking one selects
which side the chart, the order book and the trade panel are about. Next to it is the
24-hour change for the side you are on.

Five intervals on the right: **1H**, **6H**, **1D**, **1W** and **MAX**. Shorter
intervals are drawn at a finer resolution — 1H is minute-by-minute, MAX is hourly.
The chart opens on MAX.

Both outcomes are drawn when there is enough history for them, so you can read Yes
against No on the same axes. Live trades extend the line as they arrive rather than
waiting for the next refresh.

Crypto "Up or Down" markets get a different panel instead: the price to beat, the
current Chainlink price and the gap between them, a countdown, the live price chart
for that window with the target marked, and a link to the next window when this one
ends.

## The order book

Asks above, bids below, ten levels each, with the spread across the middle. Every row
is price, size and running total, and the shaded bar behind it is that row's share of
the deepest total on screen.

The strip at the top says whether you are looking at a live stream or a snapshot,
and — when the stream is running — the price of the last trade. The book prefers the
live feed and falls back to a periodic snapshot until it warms up.

The book is for the outcome selected above it, which is why the header says
`Order book · YES` or `· NO`.

## The four tabs

<AccordionGroup>
  <Accordion title="Activity">
    Recent trades in this market: who traded, which outcome, at what price, for how
    many shares, and how long ago. Buys are green, sells red. Traders show under
    their Polymarket name or pseudonym, falling back to a short address.
  </Accordion>

  <Accordion title="Holders">
    The largest holders of each outcome, side by side, up to eight per side, with
    the value of each position.
  </Accordion>

  <Accordion title="My orders">
    Your open orders in this market only — outcome, side, price, how much has
    filled, status and age. Each row has an X that cancels it. Signed out, it asks
    you to sign in.
  </Accordion>

  <Accordion title="My fills">
    Your executed trades in this market — outcome, side, price, shares and when.
  </Accordion>
</AccordionGroup>

Your open orders across every market are on the
[Portfolio](/terminal/portfolio) page. Fills are per-market only — there is no combined
fill history in the terminal.

## Market details

Below the tabs: volume, 24-hour volume, liquidity, end date, condition ID and slug. The
market's own description and Polymarket's tags sit at the bottom.

Above those, a row of badges — **Active**, **Closed**, **Accepting orders**, **Order
book**. Each appears only when it is true, and there is no badge for the negative case:
a market that has stopped taking orders does not say so, it simply has no *Accepting
orders* badge. Absence is the only signal you get.

When you are signed in, a strip of extra market statistics may appear above the
chart. It is drawn from an external data source and is hidden entirely when that
source has nothing for this market.

## What to read next

<CardGroup cols={2}>
  <Card title="Placing an order" icon="arrow-right-arrow-left" href="/terminal/placing-orders">
    The trade panel on the right of this page.
  </Card>

  <Card title="Portfolio" icon="wallet" href="/terminal/portfolio">
    Everything you hold, in one place.
  </Card>
</CardGroup>
