> ## Documentation Index
> Fetch the complete documentation index at: https://docs.counsel.markets/llms.txt
> Use this file to discover all available pages before exploring further.

# Copy Trading on counsel: Mirror Bets Non-Custodially

> Mirror any leader's open bets on counsel without giving up your keys. Every mirror is a fresh bet-intent signed by your own wallet, sized to your stake.

Copy trading on counsel lets you follow any XRPL address and replicate their open bets in a single click. It is fully non-custodial: counsel never receives your private key. Each mirror is an independent bet-intent fetched for your address, signed by your wallet, and submitted directly to the XRP Ledger. You choose your own stake, you are never forced to match the leader's position size. Before you sign, the UI shows `projected_implied_odds_after` so you see exactly how your stake will move the parimutuel pool.

<Card title="Open copy trading" icon="copy" href="https://app.counsel.markets/copy" horizontal>
  Pick a leader and mirror their open bets in the app. You sign every mirror in your own wallet.
</Card>

## How it works

<Steps>
  <Step title="Choose a leader">
    Open the leaderboard and select any address ranked by SourceTag-attributed volume, or paste any valid XRPL classic address directly into the input field. Leaders are discoverable because every bet on counsel is a public, tagged Payment, there is no private order book.
  </Step>

  <Step title="Load their feed">
    Selecting a leader calls `GET /api/v1/accounts/:address/feed`. The response contains that account's recent bets across all public markets. Each item includes:

    | Field                       | Description                                              |
    | --------------------------- | -------------------------------------------------------- |
    | `market_id`                 | Unique market identifier                                 |
    | `question`                  | The market's question text                               |
    | `outcome` / `outcome_label` | The outcome index and its human-readable label           |
    | `amount_xrp`                | How much the leader staked                               |
    | `phase`                     | Current market phase (`open`, `trading`, `closed`, etc.) |
    | `mirrorable`                | `true` only when `phase === "open"`                      |
    | `hash`                      | The leader's original transaction hash                   |

    Bets with `mirrorable: false` are shown in the feed for context but cannot be copied, the market is no longer accepting bets.
  </Step>

  <Step title="Review mirrorable bets">
    The UI filters to items where `mirrorable: true` and, for each one, shows a live projected payout. The projection is computed client-side from the current pool state: it accounts for your entered stake amount, the existing pool balance for that outcome, and the protocol fee rate.
  </Step>

  <Step title="Set your stake and mirror">
    Enter your stake amount in XRP. The default pre-fills to the leader's amount, but you can change it freely. Click **Mirror** to trigger the intent fetch:

    ```
    GET /api/v1/markets/:marketId/bet-intent
      ?account=YOUR_ADDRESS
      &outcome=OUTCOME_INDEX
      &amount=YOUR_AMOUNT_XRP
    ```

    The response contains an unsigned XRPL `Payment` transaction (`intent.tx`) plus `projected_implied_odds_after`, which reflects the pool state including your stake.
  </Step>

  <Step title="Sign and submit">
    Your connected wallet (Xaman or any supported connector) receives the unsigned transaction for signing. counsel never receives your seed or private key at any point. Once you approve, the signed transaction is submitted to the XRP Ledger. The resulting transaction hash is displayed with a link to the XRPL explorer.
  </Step>
</Steps>

## Non-custodial guarantee

Every mirror follows the same flow as a manual bet: an unsigned `Payment` is constructed by the API, sent to your client, signed locally by your wallet, and submitted. The `SourceTag` in the transaction attributes the volume to counsel, but the signing key never leaves your device. If you disconnect your wallet before signing, nothing is broadcast.

## Sizing your mirror

You are not bound to the leader's stake. The amount field is editable per-bet. Because counsel markets are parimutuel, your stake directly affects the pool: a larger mirror moves the line more than a smaller one. Use the projected payout figures shown before signing to understand the trade-off.

## Projected odds

Before you sign, the UI displays the indicative payout per unit and the implied probability for the outcome, computed as if your stake were already in the pool:

* **`projected_implied_odds_after.implied_prob`**, the outcome's share of the pool after your bet
* **`projected_implied_odds_after.payout_per_unit`**, gross XRP returned per 1 XRP staked if the outcome wins (before fee)

These are still indicative: in a parimutuel market, final payouts are determined at close when no further bets can change the pool.

## Feed endpoint reference

```
GET /api/v1/accounts/:address/feed
```

Returns `{ account: string, feed: FeedItem[] }` sorted by timestamp descending.

`mirrorable` is derived entirely from `phase`:

```typescript theme={null}
mirrorable: m.phase === "open"
```

Bets on markets in any other phase (`trading`, `closed`, `resolved`) are included in the feed but have `mirrorable: false`.

<Note>
  Copy trading replicates a leader's historical bet selections. It does not guarantee the leader will continue to perform, and the odds you receive will differ from the odds at which the original bet was placed, pools change continuously as new bets arrive.
</Note>
