How to track smart money on Solana in real time

· 8 min read

smart moneywallet trackingcopy tradingwebsocketpnl

Every trading terminal has a "smart money" tab, and almost none of them will tell you what the label means. This guide does both: a working definition you can audit, and the exact calls to track smart money on Solana in real time — the live smart-buy feed, the smart wallets inside any token, and a push stream that fires the moment one of them enters — using the Raiden API.

What smart money actually is (and isn't)

Definition first: smart money is a wallet with consistent net profit — after every fee — across many closed positions. Each clause matters:

  • Net. On pump.fun the costs are everywhere: protocol fee, creator fee, the LP fee once the token trades on PumpSwap, priority fees, validator tips. A wallet that looks profitable gross and is flat net is not smart — it is a fee conduit. Raiden computes every PnL figure after deducting all of them (the full breakdown is in the wallet PnL checker guide).
  • Consistent, across many closed positions. One lucky 100x dominates a wallet's lifetime PnL while proving nothing about the next trade. The signal is a positive net PnL assembled from a large number of completed round-trips — entries and exits — not a single open bag marked to an illiquid price.
Why it matters: most "smart money tracker" lists on Solana rank wallets by gross or unrealized PnL. Both are easy to fake — one moonshot, or a large balance in a token nobody can actually sell into. Net realized PnL over many closed positions is the number that survives scrutiny.

Wallets with positive net realized PnL over enough closed positions and a majority win rate earn the profitable flag in their profile. The smart-money feed below draws on a stricter cut of the same idea — a hard net realized-profit bar across multiple closed positions — and it is that set whose aggregate buying you are watching.

What is smart money buying right now: /smart-money

The market-wide view is one call — the tokens being bought by consistently profitable wallets in the current window, with how many of them entered and how much SOL they committed:

curl -H "X-API-Key: $RAIDEN_KEY" \
  "https://terminal.raiden.wtf/api/smart-money?window=1h&limit=20"
{
  "data": [
    {
      "mint": "9xQm…pump",
      "symbol": "PEPE",
      "status": "bonding",
      "last_price": "0.00000042",
      "smart_buyers": 7,
      "smart_sol": "488888889",
      "mayhem": true
    },
    …
  ]
}

smart_buyers is the count of distinct smart wallets that bought; smart_sol the SOL they spent, as a string in lamports (divide by 1e9). Seven independent profitable wallets converging on one bonding token is a very different fact from one whale buying seven times — the count is the signal. The same feed renders live on the Terminal's Smart page, so you can watch it before writing a line of code.

Smart wallets inside one token: /tokens/{mint}/smart

When a token shows up in that feed, the next question is who — and whether they are still in. The per-token endpoint returns each smart-money wallet trading the mint with its full position:

curl -H "X-API-Key: $RAIDEN_KEY" \
  "https://terminal.raiden.wtf/api/tokens/9xQm…pump/smart?limit=40"
{
  "data": [
    {
      "trader": "8psN…VRtf",
      "mint": "9xQm…pump",
      "token_balance": "488888889123456",
      "sol_invested": "12500000000",
      "sol_received": "4200000000",
      "tokens_bought": "612345678901234",
      "tokens_sold": "123456789777778",
      "realized_pnl": "1875000000",
      "avg_cost": "0.0000204",
      "current_price": "0.0000287",
      "first_trade_at": "2026-06-21T09:41:14Z",
      "last_trade_at": "2026-06-27T08:12:03Z",
      "trade_count": 17
    },
    …
  ]
}

Read it like a position sheet: token_balance > 0 means the wallet still holds; sol_received against sol_invested shows how much has already been taken off the table; realized_pnl is what is banked on this mint so far, net of fees; avg_cost versus the current price tells you whether you would be buying above the smart entry. A page full of smart wallets with large balances and low sol_received is accumulation; the same wallets with tokens_sold catching up to tokens_bought is distribution dressed as conviction.

Verify before you follow

Any wallet the feed surfaces — or any KOL wallet you found on X — should be audited before it earns a place in your tracker. One call returns the full profile:

curl -H "X-API-Key: $RAIDEN_KEY" \
  "https://terminal.raiden.wtf/api/wallets/8psN…VRtf/stats"
{
  "trader": "8psN…VRtf",
  "realized_pnl": "184500000000",
  "unrealized": "-12750000000",
  "total_pnl": "171750000000",
  "fees": "3820000000",
  "tokens_traded": 312,
  "tokens_closed": 287,
  "tokens_won": 168,
  "win_rate": 0.5853658536585366,
  "avg_hold_sec": 1837.42,
  "flags": ["sniper", "profitable", "whale"],
  …
}

The checklist is short: tokens_closed high enough that the win rate means something, realized_pnl positive (already net of the fees shown), a profit distribution not carried by one bucket, and an avg_hold_sec you could actually replicate. The PnL checker article walks through every field, and tracking pump.fun wallets covers positions, transfers and rug history for the deeper dive.

Make it real time: a group and a stream

Polling REST tells you what smart money bought minutes ago. To know what it is buying now, turn your vetted list into a push stream — this is the same mechanism whether your list is algorithmically smart wallets or hand-picked influencers, which makes it a KOL wallet tracker for free. Three calls:

# 1 · create a group
curl -X POST -H "X-API-Key: $RAIDEN_KEY" -H "Content-Type: application/json" \
  -d '{"name":"Smart money"}' "https://terminal.raiden.wtf/api/wallet-groups"
{ "id": "grp_5f3a…", "name": "Smart money", "count": 0, … }

# 2 · add the vetted wallets (idempotent, max 1000 per group)
curl -X POST -H "X-API-Key: $RAIDEN_KEY" -H "Content-Type: application/json" \
  -d '{"wallets":["8psN…VRtf","Cb3f…g9rE"]}' \
  "https://terminal.raiden.wtf/api/wallet-groups/grp_5f3a…/wallets"
{ "ok": true, "added": 2 }

# 3 · attach a stream: their fills + market-wide whale flow
curl -X POST -H "X-API-Key: $RAIDEN_KEY" -H "Content-Type: application/json" \
  -d '{"name":"smart","kinds":["swaps","feed"],"wallet_list_id":"grp_5f3a…","min_sol":3000000000}' \
  "https://terminal.raiden.wtf/api/ws-subscriptions"
{ "id": 3, "token": "sub_a1b2c3…", "active": true, "kinds": ["swaps", "feed"], … }

The swaps kind pushes every fill by every wallet in the group, sub-second, as it lands on-chain. The feed kind layers notable market-wide events on the same socket — big trades at or above min_sol (lamports; 3000000000 = 3 SOL, the default) plus graduations — so whale flow from outside your list still reaches you. Accounts get 3 streams by default; the full connection protocol is in the WebSocket streaming guide.

Python: alert when two smart wallets enter the same mint

Co-entry is the highest-value event a smart money tracker on Solana can produce: two independent, verified-profitable wallets buying the same token within a minute. A single in-memory dictionary is enough to catch it:

import asyncio, json, time, websockets
from collections import defaultdict

WS = "wss://terminal.raiden.wtf/ws?key=YOUR_KEY&sub=sub_a1b2c3…"
SMART = {"8psN…VRtf", "Cb3f…g9rE"}  # your group members
WINDOW = 60                                # seconds
entries = defaultdict(dict)                # mint -> {wallet: last_buy_ts}

async def main():
    async with websockets.connect(WS) as ws:
        async for raw in ws:
            ev = json.loads(raw)
            # kinds swaps+feed share the socket: keep only buys by OUR wallets
            if ev.get("type") != "swap" or not ev.get("is_buy"):
                continue
            if ev["trader"] not in SMART:
                continue          # feed events can come from any whale
            now = time.time()
            mint = ev["mint"]
            entries[mint][ev["trader"]] = now
            entries[mint] = {w: t for w, t in entries[mint].items()
                             if now - t <= WINDOW}
            if len(entries[mint]) >= 2:
                sol = int(ev["sol_amount"]) / 1e9
                print(f"CO-ENTRY {mint}: {len(entries[mint])} smart wallets "
                      f"in {WINDOW}s (last: {ev['trader'][:6]} bought {sol:.2f} SOL, "
                      f"slot {ev['slot']})")

asyncio.run(main())

Swap the print for a Telegram or Discord webhook and you have a real-time smart money tracker for Solana that you own end to end — your definition of smart, your wallets, your threshold. When it fires, pull /tokens/{mint}/smart to see the positions before reacting.

The honest caveat

Smart money chases narratives — that is largely how it is smart. The same wallets rotate into whatever meta is paying this week and out of it days later, and their edge is as much the exit as the entry. Copying entries without copying exits is a strategy with a name: exit liquidity. Two mitigations are built into everything above. First, verify before you follow — a wallet only earns a slot in your group after its net PnL, closed-position count and hold times pass the PnL check. Second, treat co-entry as a trigger for research, not a buy order: the per-token smart list shows whether the buyers are still holding by the time you look. All figures rest on a 6-month rolling retention window with a complete record since May 1, 2026 — every number net of every fee, every amount a string in lamports.

The endpoints in this guide — /smart-money, /tokens/{mint}/smart, /wallets/{addr}/stats, wallet groups and WebSocket streams — are all part of the Raiden pump.fun API, with exact request/response shapes for every route in the API reference. To go from tracking to measuring who lands first, see comparing wallet landing.

FAQ

Frequently asked questions

What counts as smart money on Solana?

A wallet with consistent NET profit — after the pump.fun protocol fee, creator fee, LP fee, priority fees and validator tips — across many closed positions. One lucky 100x does not qualify: a single outlier trade dominates gross PnL but says nothing about repeatability. The signal is a positive net PnL built from a large number of completed round-trips over time.

How can I see what smart money is buying right now?

GET /smart-money returns the tokens currently being bought by consistently profitable wallets, with the number of smart buyers and the SOL they committed in the window. The same feed renders live on the Terminal's /smart page. For a single token, GET /tokens/{mint}/smart lists the smart-money wallets holding or trading it, with their full position per wallet.

Can I get an alert the moment a smart wallet buys a token?

Yes. Put the wallets in a wallet group (POST /wallet-groups, then add up to 1000 wallets), create a WebSocket stream with kind "swaps" bound to that group, and connect with the stream's sub token. Every fill by any wallet in the list is pushed to you sub-second, as it lands on-chain. Adding the "feed" kind with a min_sol threshold layers market-wide whale flow on the same socket.

Is copying smart money trades profitable?

Not automatically. Smart wallets are fast on the exit as well as the entry — copying their buys without copying their sells means you inherit the risk without the discipline. Verify any wallet's net PnL, win rate and hold times before following it, and treat co-entry by several smart wallets as a signal to investigate, not an order to buy.

How much history is behind the smart-money data?

Retention is a 6-month rolling window, with a complete record of pump.fun activity since May 1, 2026. PnL and win-rate figures are computed on that record, net of every fee, with amounts returned as strings in lamports (1 SOL = 1e9 lamports).

Build on the same data

Private beta — free invite-only keys, full REST + WebSocket access, and the same firehose that powers the Terminal.