To find a Solana wallet worth copy trading, filter the leaderboard's lotto wins and bots using behavioral labels: trader type, badges, and bot share.
Every day someone posts a PnL screenshot, gains a few thousand followers, and a few hundred of them start copying the wallet. Most of those copiers lose money, and not because the screenshot was fake. It was probably real. The problem is that a PnL number tells you almost nothing about how it was earned, and how it was earned is the only thing that predicts whether it happens again. Wallet labels exist to answer that question before you commit.
The usual way to find a wallet worth copying is the leaderboard: sort by realized PnL, copy the top row. That filter has three failure modes baked in. Survivorship: for every wallet up $400K there are hundreds running the same strategy that blew up quietly, and the leaderboard only shows the one that didn't. Lotto wins: a wallet whose entire PnL is one 80x hit on a token it aped early looks identical, in headline numbers, to a wallet that grinds out consistent 30% wins. And bots: a latency-arb bot's track record is repeatable, just not by a human clicking buttons two seconds behind it.
Behavioral classification is the fix. Conyr parses 20M+ Solana swaps per day on its own node, computes realized PnL with FIFO cost-basis accounting on every closed position, and derives labels from those outcomes. 950K+ wallets carry a label set in the live window. Labels are statistically derived from what the wallet did, never self-reported. This post is the filtering method: the label taxonomy, and how to read it before you copy.
Every classified wallet gets a position on four core axes, returned in the labels payload alongside the quantitative metrics that back them.
| Axis | Values | What it tells you |
|---|---|---|
| Trader type | SCALPER, DAY_TRADER, SWING_TRADER, POSITION_TRADER | The wallet's hold-time regime. A SCALPER's edge lives in seconds and dies when you copy it with any delay; a SWING_TRADER or POSITION_TRADER is far more forgiving to follow. |
| Performance | PROFITABLE, BREAK_EVEN, UNPROFITABLE, UNRATED, BANNED | Outcome tier over closed positions. UNRATED means not enough history to judge, so treat it as unknown, not neutral. BANNED means excluded from ratings entirely. |
| Size class | SHRIMP, FISH, SHARK, WHALE | Typical position sizing. A WHALE's entries move thin pools; copying one into a low-liquidity token means buying their slippage. |
| Exit style | FULL_EXITER, DCA_OUT, PARTIAL_TAKER, MIXED | How the wallet realizes gains. A DCA_OUT wallet's "exit" is a process, not an event, so copying its first sell tells you little. |
The axes matter together, not alone. PROFITABLE + SCALPER is a wallet you can learn from but probably cannot follow. PROFITABLE + SWING_TRADER + SHARK is the profile most copy-trading setups implicitly assume they found.
On top of the axes sit trade badges: behavior-derived flags computed from closed-position outcomes. This is where the lotto-winner and the grinder, identical on a leaderboard, separate cleanly.
| Badge | What it signals | How to weight it |
|---|---|---|
CONSISTENT_WINNER | Wins recur across many positions, not one spike | Strong positive: the closest thing to a repeatability signal |
ELITE_TRADER | Top tier across the backing performance metrics | Strong positive, especially combined with a long history |
VETERAN_WINNER | Profitable over an extended activity span | Positive: survived more than one market regime |
RUNNER_KEEPER | Lets winners run instead of clipping every gain | Positive if you want upside capture; expect drawdown tolerance |
STOP_LOSS_USER | Exits losers at consistent levels | Positive: risk discipline shows up in the fills |
LOSS_CUTTER | Cuts losing positions quickly | Positive: small losses are a feature, not a flaw |
CONFIDENCE_SIZER | Sizes up when conviction is high | Context-dependent: their PnL concentrates in trades you may size differently |
DIAMOND_HANDS | Holds through deep drawdowns | Neutral: only copy this if you have the same stomach |
PAPER_HANDS | Exits fast on small moves | Caution: you will always be later than they are |
BAG_HOLDER | Rides losers down without exiting | Negative: the downside behavior you'd be importing |
LOTTO_PLAYER | PnL dominated by a few outsized hits | Heavy discount on the headline number: the next lotto ticket is not scheduled |
A second family, identity badges, describes infrastructure rather than behavior: HFT_BOT, FLASH_BOT, and ARB_BOT flag automation patterns whose edge is latency you do not have. WASH_TRADER means the volume itself is suspect, which disqualifies it for copy purposes. TOOL_* and DEX_SPECIALIST_* identify the frontend that placed the trades and venue concentration. TOKEN_CONCENTRATED warns that results cluster in a few tokens. And the funding flags (FRESH_FUNDED_6H, FUNDED_BY_FARM, ROOT_CEX, ROOT_DEX_AUTH) come from provenance tracing, covered below.
A self-reported track record is a claim. A label is a measurement, and the difference shows up in three properties.
First, labels are computed from actual fills. Every closed position feeds FIFO cost-basis PnL, with entry and exit signatures included, so any number is verifiable on-chain. Labels update continuously as new trades close. No nightly batch, no manual refresh. When a wallet's behavior shifts, the label shifts with it, and the change streams over the wallet:{addr}:labels WebSocket channel, deduplicated so subscribers only see real state changes.
Second, the accounting is defended against the standard tricks. Flash swaps (same wallet, same token, within two slots or one second) are filtered out before they can fabricate PnL, and trades held two seconds or less get flagged as bot-like. A wallet cannot wash its way into CONSISTENT_WINNER.
Third, automation is its own axis rather than a hidden confounder. Every labeled wallet carries an automation_label and a bot_share, the fraction of its activity that looks automated. A wallet with bot_share: 0.05 and a wallet with bot_share: 0.9 can post the same returns, but only one of them is doing something a human can replicate. Screenshots never disclose this. Labels do.
Copy trading risk is mostly evaluation risk. The trade you copy is rarely the problem; the wallet you chose to copy is. A practical pass, in order:
total_trades and the activity span. A 90% win rate over 11 trades is noise. UNRATED means come back later.SCALPER, stop here unless your execution is automated and fast. SWING_TRADER and POSITION_TRADER styles survive copy delay.CONSISTENT_WINNER with STOP_LOSS_USER beats a bigger number carrying LOTTO_PLAYER or BAG_HOLDER. You are importing the behavior, not the screenshot.bot_share or an HFT_BOT / ARB_BOT identity badge means the edge is infrastructure. Admire it, do not follow it.ROOT_CEX with a few hops is the normal shape. FRESH_FUNDED_6H means the track record cannot be older than the funding; FUNDED_BY_FARM means the wallet belongs to a distribution pattern, not a trader. The provenance write-up covers how the trace works.None of these checks require trusting anyone's word. Every one is a field in an API response.
The full label set, 45+ fields, is one call on Layer 2 ($75/mo, tier details here):
curl -H "Authorization: Bearer $CONYR_API_KEY" \
"https://api.conyr.ai/v1/wallet/7xKXtg.../labels"
{
"wallet": "7xKXtg...",
"trader_type": "DAY_TRADER",
"performance_level": "PROFITABLE",
"size_class": "SHARK",
"exit_style": "DCA_OUT",
"automation_label": "ORGANIC",
"bot_share": 0.05,
"primary_terminal": "photon",
"primary_dex": "raydium",
"funded_by_farm": false,
"root_source": "Binance",
"provenance_hops": 3,
"trade_badges": ["CONSISTENT_WINNER", "RUNNER_KEEPER", "STOP_LOSS_USER"],
"identity_badges": ["ROOT_CEX", "TOOL_PHOTON"],
"total_trades": 342,
"win_rate_pct": 63.0,
"total_pnl": 12450.32,
"sharpe_ratio": 1.8,
"profit_factor": 2.1
}
Reading this one top to bottom: a day trader, profitable over 342 closed positions, shark-sized, scales out of winners. Organic, 5% bot share. Trades through Photon, mostly on Raydium. Funded from Binance, three hops back, no farm flag. Behavior badges say the wins recur, winners get room to run, losers get cut. Win rate 63%, profit factor 2.1, Sharpe 1.8 backing it all up. That is a wallet worth a deeper look, and the entire read took one request. Responses are cached for 60 seconds, and the same payload streams live over wallet:{addr}:labels for wallets you track.
For a taste before paying, the free tier exposes wallet quality in aggregate: GET /v1/token/{mint}/buyer-quality classifies a token's recent buyers into tiers, from elite_smart_money down to bot_operated, farm_funded, and unrated_new, with a smart_money_signal summarizing how much of the volume comes from profitable organic wallets. It is the label system pointed at a token instead of a wallet, and it costs nothing. Keys are self-serve now; the launch post covers setup.
Agents get the same data without glue code: the hosted MCP server exposes around 40 tools (labels, PnL, provenance, similarity, buyer quality) over the same API keys and tiers, so a wallet-vetting loop in Claude or Cursor is a config block away.
Run these reads against the live chain.
Conyr API keys are now self-serve — create a key, pick a tier from free to $149/mo, and start querying live Solana wallet intelligence.
Coordinated buying hides token supply across dozens of Solana wallets. Here is why holder pages miss bundles, and how Conyr detects them in real time.
Trace any Solana wallet's funding lineage up to 20 hops back to 230+ curated CEX hot-wallet roots, and see what fresh-wallet patterns fall out.