Track Robinhood Chain Smart Money Wallets and Top Traders
Find wallets that are consistently profitable across Robinhood Chain tokens: top traders by PnL, wallet tags, and a script that filters out bots and infrastructure.
Crius 7 min read
“Smart money” on Robinhood Chain is best defined as wallets that rank among the most profitable traders of several different tokens and stay profitable over their own recent history, not just wallets that got lucky once. Crius gives you both halves: the top traders of any token ranked by PnL with wallet tags, and a 30-day profile for any wallet, which this guide combines into a working smart-money scanner.
Start with one token: the top traders endpoint
GET /v1/robinhood/token/{address}/traders ranks every trader of a token by PnL, realized PnL, volume, number of buys or ROI over 1h, 24h, 7d or all:
curl "https://api.crius.sh/v1/robinhood/token/0xc9675fe679c7d4e1b94416f66d61c96127eb964a/traders?sort=pnl&window=all&limit=3" \ -H "x-api-key: $CRIUS_API_KEY"{ "data": [ { "rank": 1, "address": "0xc56e…8b41", "tags": [], "buys": 1, "sells": 34, "bought_usd": 1514.14, "sold_usd": 31646.9, "avg_buy_usd": 0.000137682, "avg_sell_usd": 0.00287766, "realized_pnl_usd": 30132.7, "unrealized_pnl_usd": 0, "pnl_usd": 30132.7, "roi_pct": 1990.09, "cost_basis": "complete", "gas_spent_usd": 0.19, "holding_time_s": 976494 }, { "rank": 3, "address": "0x045f…b11f", "buys": 1, "sells": 17, "bought_usd": 4769.47, "sold_usd": 23440.7, "pnl_usd": 18671.2, "roi_pct": 391.47, "holding_time_s": 54 } ], "meta": { "window": "all", "pnl_method": "average cost; USD at trade time; unrealized at current price" }}Two very different profiles sit near the top of the same token at time of writing (Oct 2026). One wallet bought once at about $101k market cap and sold over 11 days; another bought and fully exited within 54 seconds. Both are profitable, but only one is the kind of behaviour most people mean by “smart money”. This is why a single token’s leaderboard is a starting point, not an answer.
PnL here uses the average-cost method in USD at trade time; the wallet PnL guide explains it in detail and shows how to recompute it.
Wallet tags: what they mean and how they’re derived
Trader rows, holder snapshots and bundle reports carry tags. Knowing exactly how each is derived tells you how far to trust it:
| Tag | Meaning |
|---|---|
sniper |
Bought within the first 10 blocks after the token’s trading opened (about one second on Robinhood Chain) |
dev |
The token’s creator: the launchpad creator, or the verified deployer |
whale |
Holds at least 1% of supply right now (pools and burn addresses excluded) |
pool, lp_locker, launchpad, router, protocol_fee, burn |
Infrastructure: liquidity pools, lockers, launchpad contracts, routers, fee sinks, burn addresses |
bot, mev, cex, bridge, market_maker, … |
Curated labels from primary sources (published solver and bridge lists, exchange wallets) |
fresh |
On the wallet profile: first seen less than a day ago |
You can filter by tag directly: traders?tag=sniper lists only snipers, and holder snapshots accept the same filter.
Tags are rule-based, and some rules are deliberately narrow. Not every high-frequency trading wallet carries a bot label, and buy-and-burn mechanics show up as trades attributed to the burn address (tagged burn). So a robust scanner applies its own filters as well, which the script below does.
A smart-money scanner across tokens
The approach:
- Take the most actively traded tokens of the last 24 hours.
- For each, get the top 25 traders by PnL over 7 days, counting only wins of at least $1,000 and skipping infrastructure and labelled bots.
- Keep wallets that appear in at least two tokens’ lists.
- Read each candidate’s own 30-day profile and drop contracts, extreme trade counts and wallets that lose money overall.
"""smart_money.py: wallets that rank among the most profitable traders of several tokens."""import os, collections, requestsfrom concurrent.futures import ThreadPoolExecutor
API = "https://api.crius.sh/v1/robinhood"s = requests.Session()s.headers["x-api-key"] = os.environ["CRIUS_API_KEY"]
def get(path, **params): r = s.get(f"{API}{path}", params=params, timeout=60) r.raise_for_status() return r.json()
tokens = get("/tokens", list="top_volume", window="24h", limit=30)["data"]# Skip the quote and stock tokens: their "traders" are mostly routers and market makers.tokens = [t for t in tokens if t["symbol"] not in ("WETH", "USDG") and "Robinhood Token" not in (t["name"] or "")]
def top_traders(t): rows = get(f"/token/{t['address']}/traders", sort="pnl", window="7d", limit=25)["data"] # Wins worth counting; no bots and no infrastructure (pools, routers, the burn address). skip = {"bot", "burn", "pool", "router", "lp_locker", "launchpad", "protocol_fee"} return t["symbol"], [r for r in rows if (r["pnl_usd"] or 0) >= 1000 and not skip & set(r["tags"])]
seen = collections.defaultdict(list)with ThreadPoolExecutor(max_workers=3) as pool: # heavy endpoint: keep concurrency modest for sym, rows in pool.map(top_traders, tokens): for r in rows: seen[r["address"]].append((sym, r["pnl_usd"]))
repeat = sorted(((a, v) for a, v in seen.items() if len(v) >= 2), key=lambda x: -sum(p for _, p in x[1]))print(f"{len(tokens)} tokens scanned, {len(seen)} wallets with $1k+ wins, {len(repeat)} in two or more top-25 lists")shown = 0for addr, hits in repeat: prof = get(f"/wallet/{addr}", window="30d")["data"] w = prof["pnl"] # Contracts and wallets trading thousands of times a month are bots / arbitrage, not "smart money". if prof["is_contract"] or w["trades"] > 5000 or w["total_usd"] <= 0: continue tokens_won = ", ".join(f"{sym} ${pnl:,.0f}" for sym, pnl in hits) print(f"{addr[:10]}… 30d PnL ${w['total_usd']:,.0f}, win rate {w['win_rate_pct']:.0f}%, {w['trades']} trades [{tokens_won}]") shown += 1 if shown == 5: breakThe whole run takes about 10–20 seconds. The output at time of writing:
22 tokens scanned, 381 wallets with $1k+ wins, 5 in two or more top-25 lists0xddfad83b… 30d PnL $25,750, win rate 67%, 23 trades [NUZL $17,620, HMCAST $8,245]0xf3acab5b… 30d PnL $23,483, win rate 100%, 21 trades [NUZL $11,116, HMCAST $12,366]0x6d8198cf… 30d PnL $245,720, win rate 63%, 3385 trades [RVI $8,002, CONDUCTOR $2,411]0xab7a9b73… 30d PnL $88,399, win rate 43%, 2666 trades [KILTR $2,288, RVI $2,858]That funnel is the interesting result. Across 22 of the day’s highest-volume tokens, 381 wallets made at least $1,000 on one of them in a week, but only 5 did so on two or more, and 4 remain once you require a profitable month overall. They also split into two very different groups:
- Selective traders. The first two made about 20 trades each in a month and won on the same two tokens: few, large, well-timed positions.
- Active traders. The other two traded thousands of times a month. They’re profitable, but at that frequency they’re closer to systematic strategies than to “follow this wallet” signals. Tighten the trade-count cut-off if you only want the first kind.
Without the filters the list looks very different. The single biggest “trader” by count is the burn address: buy-and-burn mechanisms attribute over 189,000 trades a month to it, with a large paper loss. Next come arbitrage contracts and one-off lucky trades. Repeat, low-frequency winners are rare, which is exactly what makes them worth tracking.
Tuning the scanner
- Window.
7dfavours recent form;allfinds long-term winners but over-weights early adopters of a few big tokens. - Universe.
list=top_volume&window=24hfinds wallets in the busiest markets. For early-stage launches, scan fresh tokens from/tokens?list=new(orlist=graduated) instead. - Thresholds. Raise the minimum win to cut noise; require three or more tokens for higher confidence.
- Recency of the edge. Re-run daily and keep a history. A wallet that appears week after week is worth far more than one that appears once.
Watching smart money live
Once you have a list, stream its activity instead of polling. The WebSocket stream has a wallet:<address> channel that pushes every trade and transfer of a wallet as soon as its block is decoded:
const ws = new WebSocket(`wss://api.crius.sh/v1/robinhood/stream?api_key=${process.env.CRIUS_API_KEY}`);const watch = ["0xddfad83b…"]; // full addresses from your scannerws.onopen = () => ws.send(JSON.stringify({ op: "subscribe", channels: watch.map((a) => `wallet:${a}`) }));ws.onmessage = ({ data }) => { const m = JSON.parse(data); if (m.ch.startsWith("wallet:")) console.log(m.data.type, m.data.symbol, m.data.value_usd);};The Free plan allows 10 subscriptions per connection and higher plans more; see plans and limits. The WebSocket trading bot guide covers reconnects and resuming missed messages.
Caveats worth stating plainly
- Past PnL is not a signal by itself. It tells you who has been right, not who will be. Treat a smart-money list as a research input.
- Wallets are not people. One person can run many wallets, and one wallet can be shared or automated. The bundle and cluster tools help connect wallets that are funded from the same place.
- Cost basis can be unknown. Wallets that received tokens by transfer have
cost_basis: unknownandpnl_usd: nullfor those tokens. They aren’t ranked by PnL, by design.
Frequently asked questions
How do I find the most profitable traders of a Robinhood Chain token?
Call /v1/robinhood/token/{address}/traders?sort=pnl&window=7d. Sort by realized_pnl for closed trades only, or by roi for return on capital. It’s available on the Free plan at 5 credits per call.
What does the sniper tag mean?
The wallet bought within the first 10 blocks after the token’s trading opened. On Robinhood Chain, with blocks about 100 ms apart, that’s roughly the first second.
How do I exclude bots from top traders?
Skip wallets tagged bot (and infrastructure tags), then check the wallet profile: contracts (is_contract: true) and wallets with thousands of trades a month are almost always automated.
Can I track a wallet’s trades in real time?
Yes. Subscribe to wallet:<address> on the WebSocket stream; every trade and transfer arrives as soon as its block is decoded.
Is win rate per trade or per token?
Per token. win_rate_pct is the share of tokens with positive total PnL in the window, among tokens with a known cost basis.
Related
- Product overview: wallet analytics API, DEX trades API, WebSocket API
- Reference: top traders, wallet profile, stream channels
- Guides: wallet PnL, bundles, snipers and connected holders
Build with Crius
Robinhood Chain data in one API
Free plan with 1M credits a month. Your key in under a minute.
More from the blog
- PnLWallet analytics
How to Track Wallet PnL on Robinhood Chain
Realized and unrealized PnL, win rate and per-token results for any Robinhood Chain wallet: the average-cost method, the API calls and code to recompute it.
- PortfolioWallet analytics
Build a Crypto Portfolio Dashboard Using the Crius API
Build a portfolio dashboard for Robinhood Chain wallets: holdings, live valuation in one batch call, realized and unrealized PnL, gas and confidence.
- TutorialHistorical data
How to Get All Robinhood Chain Transactions Without Running a Node
Export every trade, transfer and liquidity event for a Robinhood Chain token or wallet with an indexed API. Tested Python and Node.js, no archive node.