Smart wallets
judged on your own numbers.
OUTRIDER builds every memecoin trader's record from on-chain trades it saw itself, removes the wallets you cannot copy, and keeps a list of smart wallets. Wallets from outside lists are only candidates until they beat the crowd on your data.
01The wallet book
FOMO, Axiom, GMGN, Photon, BullX and others all trade through the same pump.fun program, so the stream the desk already reads contains every trader. For each wallet the book computes realised PnL per round with fees both ways, win rate, profit factor, the t-statistic of its round returns and hold time.
A wallet is smart when it has at least 8 rounds, profit factor ≥ 1.5, t ≥ 1.0, at least 0.3 SOL realised profit after fees, a mean hold of at least 60 seconds (faster traders cannot be followed), and no flag. Up to 10,000 smart wallets are kept.
| Flag | Meaning |
|---|---|
| bot | Mean hold under 20 seconds, or more than 120 trades per hour. |
| sniper | Most of its buys land in the first 2 seconds of a launch. |
| dust | Average buy below 0.1 SOL (spam and volume bots with a meaningless win rate). |
| creator | It deploys coins. |
| listed-insider | An outside list you marked as insiders labels it (wallets.flagSources). |
Flagged wallets are never listed as smart. The running desk refreshes the book every 5 minutes and saves it to data/wallets.json.

02Build and read the list
These commands work on the trades you have recorded (data/pump-events/, plus GeckoTerminal and FOMO trades if you collected them). Record for hours, not minutes.
node src/cli.mjs wallets 50 # top 50 smart wallets, a fresh leaderboard, and the out-of-sample test
node src/cli.mjs holdings # what the smart wallets hold, and coins several of them bought in the last hour
wallets chooses the list on the older 70 % of the time and judges it on the newer 30 % against everyone else. It ends with one of three verdicts: the smart list beat the crowd on data it was not chosen on; too few rounds to judge (record longer); or it did not beat the crowd, "do not follow it". It writes data/wallets.json and data/leaderboard.json.
03Candidate wallets from outside
Leaderboards, datasets and lists you find can go in as candidates. They are watched, not trusted.
node src/cli.mjs wallets import list.csv --source myboard # a file: CSV, JSON, HTML or plain text
node src/cli.mjs wallets import https://<page> --source site # a URL
pbpaste | node src/cli.mjs wallets import - --source pasted # from stdin
node src/cli.mjs wallets pull # re-fetch the live feeds now
node src/cli.mjs wallets sources # score every source on your own trades
- Solana addresses are extracted from anything; pump.fun mints (addresses ending in
pump) and known program ids are dropped. Source names use letters, digits,.,_and-. wallets sourcesscores each source only on copyable wallets (bots, snipers and dust skipped), each wallet weighted the same, against the crowd.- A source's wallets join the smart consensus only once it has at least 5 judged wallets, at least 30 rounds, and beats the crowd.
- Sources listed in
wallets.flagSourcesmark their wallets "listed-insider" instead of recommending them. - Live feeds.
wallets.feeds(console: Smart wallets → Live candidate feeds) is re-pulled every 6 hours by the running desk. The default is the public uwuu.ai 7-day list. Add only sites whose terms allow it.
04GeckoTerminal: trades after graduation
node src/cli.mjs gecko 60 # sweep for 60 minutes (default 30, max 1440)
Sweeps trending, busiest and newest Solana memecoin pools (PumpSwap, Raydium, Meteora, Orca) on GeckoTerminal's free API and keeps every new trade in data/gecko-trades/. Pools above USD 50M FDV or below USD 20k 24-hour volume are skipped. It slows itself down when rate-limited; the default is one call every 6 seconds.
05FOMO traders
node src/cli.mjs fomo 5000 # read the newest 5,000 FOMO trades (default 500, max 20,000)
Every native-Solana trade made in the FOMO app pays FOMO's fee wallet, so reading that wallet's transactions on-chain gives the trader, the coin and the amount, with no login. The command prints a FOMO leaderboard (realised plus open PnL), saves data/fomo-leaderboard.json and adds every trader as candidate source fomo-active. It needs a SOL price from Hyperliquid and uses your solanaRpc; a private RPC is much faster.
06Collect unattended
node src/cli.mjs collect 24 # 24 hours (max 720)
node src/cli.mjs record --minutes 180 # in a second terminal, for the pump.fun curve
collect runs the GeckoTerminal sweep continuously, reads FOMO forward every 5 minutes, and rebuilds data/leaderboard.json and data/wallets.json every hour. All venues merge into one wallet book; a swap seen by two collectors counts once.
07What the list is and is not
A wallet that made money in the past is not a signal on its own. The SMART lane only acts on consensus of several wallets, and the out-of-sample test tells you whether the list held up on your own data. If it says "did NOT beat the crowd", treat the list as information, not as a trade signal.