Solana Copy-Trading Bots: How to Mirror Winning Wallets
Learn how to build a Solana copy-trading bot that selects wallets by on-chain edge, replicates trades with sub-100ms latency, and protects capital with kill-switches.
Most copy-trading discussions spend half the article explaining what copy trading is. You already know. What you need are the two things that actually determine whether your bot prints or bleeds: which wallets you follow and how fast you can replicate their trades. Everything else is noise.
Wallet-Selection Heuristics That Actually Matter
The difference between copying a consistently profitable wallet and copying a lucky one comes down to sample quality and edge attribution.
Start with a minimum trade count floor — at least 200 closed positions on mainnet before you trust a wallet's numbers. Below that, Sharpe ratios are meaningless. Then filter on realized PnL only. Unrealized gains held across weeks can mask a portfolio full of bags the operator is unwilling to cut; closed trades are the ground truth.
Beyond raw PnL, look at these signals:
- Win-rate vs. average win/loss ratio — a 45% win-rate can be highly profitable if average winners are 3× average losers. Avoid wallets that have high win-rates but tiny winners and catastrophic losers; they're often running a martingale variant.
- Slippage-adjusted entry timing — wallets that consistently buy within the first 5% of a token's price run before volume spikes are exhibiting real alpha, not hindsight. Calculate average entry rank vs. peak volume candle.
- Concentration vs. diversification — hyper-concentrated wallets (>40% of portfolio in one token) can look exceptional over a bull leg and collapse in days. Prefer wallets with consistent edge across 15+ different mints.
- Wash-trade and self-dealing detection — check whether the target wallet frequently trades against its own counterpart addresses, or concentrates activity in low-liquidity pools where it could be the dominant LP. On-chain graph analysis using address clustering surfacing shared fee-payer or authority keys helps here.
Score each candidate wallet on a composite metric across 30-day, 90-day, and all-time windows. Weight recent performance more heavily, but not exclusively — alpha that only appeared in the last two weeks during an unusual market regime deserves a discount.
Replication Latency: The Real Engineering Problem
Once you have a target wallet, the race begins. On Solana, a meaningful trade can execute and confirm in under 400ms. If your detection-to-submission pipeline is 600ms, you're buying someone else's exit, not their entry.
The standard approach of polling RPC endpoints for confirmed transactions is too slow — you'll always be one or more blocks behind. Instead, subscribe to an account-change stream via a Geyser plugin (Yellowstone gRPC is the most common implementation). Geyser streams transaction data as it hits the validator's processing queue, giving you notification before the slot is confirmed. Pair this with a Jito bundle for your copy transaction: bundles let you co-locate your trade in the same block as the target transaction or the immediately following one, dramatically reducing the slot gap between their entry and yours.
Priority fees need to be dynamic, not static. Read the recent fee market from getRecentPrioritizationFees and set your compute unit price at the 90th percentile of recent comparable transactions for that program. For high-conviction targets, bidding into Jito's tip auction is worth it — the cost of a missed entry in a moving market typically exceeds the tip by an order of magnitude.
Simulation is non-negotiable before submission. Run every copy transaction through simulateTransaction with the replaceRecentBlockhash flag. If the simulation fails — token account not initialized, insufficient liquidity, anti-rug protection triggered — abort and log, never blindly retry.
Risk Controls You Cannot Skip
A copy-trading bot without a kill-switch is a liability. Implement hard limits at multiple levels: per-trade max position size as a percentage of bot capital, a daily drawdown ceiling that halts all new copies if breached, and a staleness guard that refuses to replicate any trade discovered more than N slots after it landed on-chain.
Also track inventory skew if you're copying wallets that trade perpetuals on venues like Hyperliquid — your replicated position has its own funding rate exposure, which may differ from when the alpha wallet entered. Monitor realized funding drag separately from trade PnL.
For a real-world implementation of these mechanics, see the Solana copy-trading bot we shipped for a client running a multi-wallet mirror strategy at scale.
If you want a full-stack implementation — Geyser ingestion, wallet scoring pipeline, Jito bundle submission, and risk controls — explore our trading-bot services or start a project to scope your specific requirements.
Ready to mirror winning Solana wallets with a bot built for sub-100ms replication and institutional-grade risk controls? Talk to the TierZero team about your copy-trading build.
Need a bot like this built?
We design, build and run trading bots on Solana, Hyperliquid and Polymarket.
Start a projectMore from the blog
Public vs Paid RPC: How to Run a Fair Benchmark
A fair comparison of public and paid RPC endpoints must account for quotas, workload, freshness and support guarantees.
Read articleRPC Benchmark Percentiles Explained: p50, p95 and p99
Why averages hide the latency spikes that break trading bots, wallets and production blockchain applications.
Read articleHyperliquid REST vs WebSocket Benchmark: What to Measure
A benchmark plan for Hyperliquid market data that separates request latency from streaming freshness and recovery.
Read article