The concept is straightforward: find the wallets that consistently profit on Polymarket, watch their trades in real time, and mirror their positions. Copy-trading is not new in crypto, but applying it to prediction markets -- where wallet activity is fully on-chain and outcomes are binary -- creates unusually clean signal. There is no ambiguity about whether a wallet is profitable. Every market resolves to Yes or No. Every trade has a clear entry price and a clear outcome. This transparency makes prediction markets one of the best environments for copy-trading strategies.

This post walks through building a copy-trading bot using Depthy's wallet intelligence and signal streaming APIs. We will cover identifying which wallets are worth following, subscribing to their trades via server-sent events, executing mirror positions, and managing risk. Everything uses real endpoints and real data.

Step 1: Find Wallets Worth Copying

STEP 1

Pull the Smart Money Leaderboard

The /v1/pm/wallets/top endpoint returns the highest-scoring wallets on Polymarket, ranked by a composite metric that weighs win rate, realized PnL, trade frequency, position sizing discipline, and market diversification. One API call gives you the full leaderboard.

curl -H "Authorization: Bearer YOUR_KEY" \
  "https://depthy.io/v1/pm/wallets/top?limit=10"

The response includes every metric you need to decide whether a wallet is worth copying. Here is what the top of the leaderboard looks like right now:

Wallet PnL Win Rate Trades Score
0xa3ad70... $5.3M 91.9% 2,344 98.7
0x24c8cf... $15.2M 78.4% 105 96.2
0x7bc4a1... $1.8M 85.2% 412 91.5

Raw PnL alone is misleading. Wallet 0x24c8cf has the highest profit at $15.2M but only 105 trades -- a small sample that could reflect a few lucky concentrated bets rather than repeatable skill. The composite score penalizes low trade counts and rewards consistency, which is why 0xa3ad70 with 2,344 trades and a 91.9% win rate ranks first.

For a copy-trading bot, you want to filter for wallets that meet all three criteria: score above 85, win rate above 75%, and minimum 50 trades. The trade count floor is critical -- it filters out wallets that got lucky once and never traded again. Applying these filters to the current leaderboard yields roughly 15-20 wallets in the "copy-worthy" tier. That is your target set.

Step 2: Subscribe to Their Trades

STEP 2

SSE Streaming with Wallet Filter

Instead of polling, open a persistent SSE connection to /v1/pm/signals/stream and filter for SMART_MONEY signals from your target wallets. The stream fires an event every time a high-score wallet trades.

import requests
import json

API_KEY = "dpth_free_your_key_here"
TARGET_WALLETS = {"0xa3ad70...", "0x24c8cf...", "0x7bc4a1..."}

with requests.get(
    "https://depthy.io/v1/pm/signals/stream",
    headers={"Authorization": f"Bearer {API_KEY}"},
    stream=True
) as resp:
    for line in resp.iter_lines():
        if line and line.startswith(b"data: "):
            signal = json.loads(line[6:])
            if (signal["signal_type"] == "SMART_MONEY" and
                signal.get("wallet") in TARGET_WALLETS):
                print(f"COPY SIGNAL: {signal['wallet'][:10]}... "
                      f"{signal['title']}")
                # Execute trade logic here

SMART_MONEY signals fire every time a wallet with a high composite score executes a trade. The signal payload includes the wallet address, market ID, trade direction, size, and the signal title (e.g., "BUY Yes on 'Will ETH hit $5K by March?'"). Your bot filters this stream against the target wallet set you built in Step 1 and ignores everything else.

One important detail: the free tier delivers signals with a 5-minute delay. For casual experimentation, this is fine. For a production copy-trading bot where execution speed matters, the Agent tier provides real-time streaming with zero delay. On fast-moving markets, five minutes can mean the difference between getting in at 62 cents and getting in at 71 cents -- which directly erodes your edge.

Step 3: Execute the Mirror Trade

STEP 3

Position Sizing by Wallet Score

When a copy signal fires, extract the market and direction from the signal, then size your position based on the source wallet's score. Higher-score wallets get larger allocations because they have a longer, more consistent track record.

def mirror_trade(signal):
    market_id = signal["market_id"]
    direction = "YES" if "BUY Yes" in signal["title"] else "NO"
    wallet_score = get_wallet_score(signal["wallet"])

    # Position size based on wallet score
    if wallet_score > 95:
        size = 100  # $100 for top-tier wallets
    elif wallet_score > 90:
        size = 50
    else:
        size = 25

    # Place order via Polymarket CLOB API
    place_order(market_id, direction, size)

This is the decision logic only -- the actual order execution goes through Polymarket's CLOB API, which handles order matching and settlement. The key insight is that not all copy signals deserve equal capital. A trade from a 98.7-score wallet like 0xa3ad70 is fundamentally more informative than one from an 86-score wallet, and your sizing should reflect that.

The get_wallet_score function can either pull the score from the original leaderboard response (cached locally) or make a live call to /v1/pm/wallets/{address}/history to get the latest data. Caching is recommended since scores do not change dramatically minute to minute, and it avoids burning API calls on every signal.

Risk Management

Copy-trading without risk controls is just gambling with extra steps. Binary markets have a structural property that works both for and against you: maximum loss per position is 100% of what you put in. You can lose everything on a single trade. Proper risk management turns this from a liability into a bounded risk.

  • Diversify across wallets. Do not put all capital on one wallet, no matter how high their score. Spread across 5-10 wallets so that a single wallet's bad streak does not wipe out your portfolio.
  • Cap position size at 2-3% of total capital per trade. If your copy-trading portfolio is $5,000, no single trade should exceed $100-$150. This ensures you can absorb a string of losses and keep operating.
  • Monitor win rate in real time. Use the /v1/pm/wallets/{address}/history endpoint to track each copied wallet's recent performance. If a wallet's rolling 30-day win rate drops below 60%, pause copying that wallet until performance recovers.
  • Set a portfolio drawdown limit. If total portfolio value drops 15% from its peak, halt all trading. This is a circuit breaker that protects you from cascading losses during periods when your entire wallet set is underperforming.
  • Avoid illiquid markets. If a market has thin order books, your mirror trade may move the price enough to eliminate the edge. Stick to markets where daily volume exceeds $50K.
# Track copied wallet performance over time
curl -H "Authorization: Bearer YOUR_KEY" \
  "https://depthy.io/v1/pm/wallets/0xa3ad70.../history"

The wallet history endpoint returns the full trade log for any profiled wallet, including entry prices, outcomes, and timestamps. Use this to build a local performance tracker that flags when a wallet's edge is deteriorating before your portfolio takes the hit.

When It Works, When It Doesn't

Copy-trading on prediction markets works best when the wallets you follow have diversified market exposure and consistent position sizing. These wallets tend to grind out steady returns across many markets rather than swinging for the fences on one big bet. Their edge is systematic, which means it is more likely to persist and more suitable for copying.

It does not work well in two scenarios. First, wallets with concentrated bets -- if a wallet's PnL is dominated by one massive win, their score may be high but the signal is not repeatable. One trade is not a strategy. Second, illiquid markets where your order impacts the price. If the copied wallet bought Yes at 55 cents and your follow-on trade pushes the price to 62 cents before your order fills, you have already given back most of the expected edge.

The 5-minute delay on the free tier is the third factor. On slow-moving markets with stable prices, the delay is irrelevant -- prices barely move in five minutes. On fast-moving markets around news events or resolution deadlines, the edge may be fully priced in before your delayed signal arrives. For serious copy-trading, the Agent tier's real-time streaming is not optional -- it is the difference between capturing the edge and arriving after it is gone.


Copy-trading on prediction markets is one of the cleanest applications of wallet intelligence. The data is on-chain, the outcomes are binary, and the scoring is unambiguous. Depthy's leaderboard gives you the wallets. The SSE stream gives you the trades in real time. The only remaining variable is your risk management and execution discipline. The infrastructure is here. What you build on it is up to you.