MUNNIN answers one question: are large profitable wallets still in this position, leaving it, or rotating into something else? Every metric below exists only because it answers part of that question. Nothing here is a recommendation to buy or sell.
Per wallet: 40% bag remaining + 25% behavior status + 20% holding-while-in-profit + 15% net 7D flow. Weighted by wallet quality × √cost basis. Shrunk toward 50 by n/(n+5), so a handful of wallets can’t produce an extreme score.
Realized value ÷ initial cost. Realized value = proceeds of swaps and OTC sells, plus CEX deposits valued at market (flagged as estimated). Can exceed 100%. Undefined for zero-cost (airdrop) positions.
Tokens still held ÷ tokens originally acquired. ‘Original’ means every acquisition, not peak balance. Tokens in LP, staking, bridges or the wallet’s own cluster count as held. Balances are reconciled against on-chain; any unexplained delta lowers confidence.
Priority-ordered rules: Exited (<5% left) → New Buyer (first buy ≤7D) → Accumulating (net +10% in 7D) → Heavy Distribution (<40% left or ≥20% sold in 7D) → Partial Distribution (≥5% sold in 30D) → High Conviction (≥75% held, principal out or ≥3x, no 30D selling) → Free Roll (principal out, ≥40% held) → Holding.
Σ swap/OTC buys − Σ swap/OTC sells by qualified wallets, per 24H / 7D / 30D. Transfers, LP moves, bridging and CEX deposits are not counted as flow because they are not observed trades.
Same wallet sells token A, then within 30 minutes buys token B with the same quote asset, spending 50–150% of the proceeds. Confidence = path (direct 0.99 / stable 0.95 / native 0.90) × time decay × amount match × funding purity. A signal needs ≥3 wallets from distinct funding clusters within 48H.
25% realized PnL (log) + 20% Bayesian win rate + 10% # profitable trades + 10% age + 10% holding duration + 25% token selection (median peak multiple after entry), × (1 − max of sybil / MM / insider probability).
Supply split by classified holder. Burned, treasury, team/insider, LP, staking, bridges and dormant (>180D) wallets are not tradable. Each bucket has its own confidence; ‘Unclassified’ is shown, never hidden.
Base pressure by unrealized multiple, adjusted by behavior: proven holders ×0.6, recent distributors ×1.35, prior sellers ×1.1, young (<30D) or low-quality wallets ×1.1–1.15, current buyers ×0.8. Summed over holdings ÷ tradable float → LOW (<5%) / MEDIUM / HIGH (≥12%).
A balance change is never assumed to be a buy or sell. Rules run in this order; the first match wins and its rule id is shown in View Evidence.
Exchanges, market makers, team wallets, insiders and bots are identified first (labels, then heuristics) and excluded from every whale metric. Of the rest, a wallet is Smart Money with quality ≥ 65 over ≥ 10 closed trades, or a Whale with a ≥ $50K position or ≥ 0.5% of supply. Only those, and only when profitable on the token or high quality, are “qualified”.
Every conclusion carries a confidence: High ≥ 85%, Medium 60–85%, Low < 60%. It drops when prices come from an oracle instead of the swap itself, when balances don’t reconcile, when few wallets qualify, or when a transfer’s intent is unknown. We write “tracked profitable wallets have retained 78% of their original positions”, never “whales will not sell”.
Real: the engine - transaction classification, position reconstruction, principal recovered, bag remaining, statuses, wallet quality, conviction, flows, rotation detection, float and exit risk. All numbers on the site are computed by it.
Synthetic: the input. Wallets, transaction hashes, prices and labels are generated demo data shaped like Robinhood Chain activity. Tickers are placeholders. Nothing shown is a real holding, trade or market figure. Live mode will read indexed Robinhood Chain data (Blockscout API + RPC logs) through the same engine.