{"name":"FOMO Radar","page":"https://cymetica.com/fomo-radar","summary":"Tracks which tokens credible wallets are buying right now on Robinhood Chain (4663) and which Solana pools are under the strongest buy pressure.","endpoints":{"signals":"/api/v1/clones/fomo-radar/signals?chain=robinhood|solana&filter=all|hot|fresh|exits&limit=40","traders":"/api/v1/clones/fomo-radar/traders?chain=robinhood&limit=25","docs":"/api/v1/clones/fomo-radar/docs"},"chains":{"robinhood":{"chain_id":4663,"source":"chain-4663 RPC: CurveBuy / CurveSell bonding-curve logs, tailed live","conviction_kind":"trader-credibility","trader_score":{"formula":"100*(wins+3)/(round_trips+6) + 15*tanh(realized_eth/0.5) + 5*min(1, round_trips/10)","range":[0,100],"no_history_value":50,"round_trip":"wallet sold >= 90% of the tokens it bought on that curve","score_raw":"the same formula without the 0-100 clip (max 120) — the ranking key and tie-breaker on /traders, so two wallets at 100.0 are no longer tied","avg_log_return":"mean of ln(proceeds_eth/cost_eth) over closed round trips — the statistic for a convex payoff (a +5% scalper and a 5x holder differ here even at the same win rate); null with no closed round trip","open_positions":"curves this wallet still holds in the window (bought, not yet 90% sold; at most 12 tracked per wallet) with open_cost_eth — open positions are counted but NOT marked to market"},"conviction":{"qualified_buyer":"trader score >= 60.0","formula":"raw = sum over qualified buyers of selectivity * overlap_discount * (score/100)^2 / (1+0.15*i) (i = rank by score); raw *= 1+log10(1+10*qualified_eth); conviction = 100*raw/(raw+3)","overlap_discount":"1/sqrt(k), k = size of this wallet's portfolio-overlap cluster among the curve's qualified buyers: two wallets are one voter when their bought-token sets in the window carry >= 8.0 nats of shared information (union-find, so transitive). No minimum portfolio size. A farm of k near-identical wallets casts sqrt(k) votes, not k (top_buyers[].cluster_size; row-level overlap_clusters, qualified_buyers_clustered, effective_qualified_buyers)","shared_information":"sum over tokens t both wallets bought (the curve being scored excluded — everyone in this vote bought it by definition) of ln(W / w_t), W = wallets active in the window, w_t = wallets that bought t. The day's hot coin (~400 of ~10k) is worth ~3.2 nats and never clusters anyone; two coins with ~6 buyers each are worth ~14.8 and do. Replaces the Jaccard ratio + min-3-tokens exemption (a cliff: a two-token farm cast 11.0 votes where the 36-token version cast 1.39). The threshold is the number the outcome labeler calibrates; until then it is a stated prior","vote_weight":"selectivity * overlap_discount * (score/100)^2 — what the wallet contributes before the rank decay; top_buyers is sorted by it, so the listed order is the order of influence, not of raw score","selectivity":"ln(N/n)/ln(N), N = tokens tracked in the window, n = distinct tokens this wallet bought in it; floored at 0.05 — a wallet that buys everything cannot vote for anything in particular (top_buyers[].selectivity, tokens_bought_in_window; row-level avg_buyer_selectivity)","co_purchase":"qualified buyers whose FIRST buy of the scored curve landed in the same block (same_block_groups) or the same transaction (atomic_groups) are linked into the SAME union-find as shared information, so they carry one k. Portfolio similarity has a ceiling by construction — a farm can give each puppet different obscure coins — but the puppets still have to buy the target and they tend to land together. Read straight from the curve trade logs (blockNumber, transactionHash); no new source. top_buyers[].first_buy_block / first_buy_tx show the link","note":"dollar volume alone can never create a signal — zero qualified buyers scores 0"},"tradeability":{"max_buy_5pct":"largest ETH/USD buy whose AVERAGE fill price is <= 5% over spot on the curve's reserve: constant-product (x*y=k on the virtual reserves), average price = spot*(1+x/R), so x_max = 0.05*R. Exact for xy=k; first-order on any other curve shape","curve_held":"ETH the curve CONTRACT itself holds (eth_getBalance), published next to the accounted reserve (liquidity_eth, getReserves) that prices the curve. On a fresh curve the reserve includes a ~1.68 ETH virtual base, so a row with eth_in ~= eth_sold shows $4.2k of liquidity over $25 held — and $25 is what sellers can take out. On a curve whose reserve is far above the base the liquidity has graduated to a pool the curve does not hold, so 0 here means 'held elsewhere', not 'cannot be sold'. Never estimated: null until read","thin":"true when max_buy_5pct_usd < $500; rows are flagged, not dropped","same_name_on_board":"how many OTHER rows carry the same token name — names are not unique on the launchpad; curve_address/token_address are the identity"},"window_seconds":21600,"fields":{"top_buyers[].bought_tokens":"tokens this wallet bought on this curve (this window)","top_buyers[].sold_tokens":"tokens this wallet sold BACK on this SAME curve (this window)","top_buyers[].eth_out":"ETH this wallet received selling on this curve","top_buyers[].cost_basis_eth":"eth_in / bought_tokens for this wallet on this curve; null when bought_tokens is 0 — never a fabricated number","top_buyers[].gone":"true once sold_tokens >= 90% of bought_tokens (same rule as a closed round trip)","top_sellers[]":"up to 5 sellers on this curve, sorted by trader score then ETH sold, each with the same bought/sold/gone fields","flow[]":"the last 20 trade legs on this curve, newest first: {side, address, address_short, score, eth, usd, tokens, ts}; usd is null with no live ETH/USD price","gone_wallets":"count of wallets on this curve that meet the 'gone' rule above","qualified_gone_wallets":"gone wallets whose trader score is >= the qualified threshold (the count the credible-exits rule uses)","tokens_bought":"sum of bought_tokens across all tracked buyers on this curve","tokens_sold":"sum of sold_tokens across all tracked sellers on this curve","exit_reason":"'net-selling' | 'credible-exits' | null — which exits trigger fired, see 'exits' below","identities_pending":"snapshot-level: rows whose curve -> token lookup has not resolved; identities are seeded from the last published snapshot on restart, so this is normally 0"}},"solana":{"source":"GeckoTerminal public trending + new Solana pools (keyless)","conviction_kind":"buy-pressure","smart_money_feed":false,"formula":"100 * (0.35*max(0,buy/sell imbalance 24h) + 0.20*max(0,buyer/seller imbalance 24h) + 0.20*max(0,1h imbalance) + 0.15*log10(1+buyers)/5 + 0.10*log10(1+liquidity_usd)/7)","note":"no per-wallet track record is available without a keyed smart-money feed, so Solana conviction measures buy pressure and is labelled as such"}},"filters":{"hot":"3+ qualified wallets opened a position in the last 15 minutes, or the buy rate is running above the token's own average","fresh":"token launched in the last 24 hours","exits":"EITHER of two OR'd, Robinhood-only rules ('exit_reason' says which fired): 'net-selling' — >=2 qualified sellers AND qualified sell ETH > 1.3x qualified buy ETH AND eth_out > eth_in (the original, strict rule — can be true for zero tokens on a quiet day, which is a correct result, not a bug); 'credible-exits' — >=2 wallets with trader score >= 60 have fully exited this curve (sold back >= 90% of what they bought) AND the last hour is net selling (sells_1h >= buys_1h). Neither rule is weakened by the other existing."},"not_built_yet":{"entity_resolution":"wallets are scored as addresses, not entities. Built: the portfolio-overlap discount above (union-find over shared information, this window) AND same-block / same-tx co-purchase of the scored curve (see conviction.co_purchase). NOT built: the shared-funder hop and bundle links — those need a transfer-history source this slot does not hold yet (feature leaderboard)","calibrated_probability":"conviction is a 0-100 ranking score, not a calibrated probability; that needs a labeler + backtester over historical outcomes first","solana_wallet_layer":"Solana stays pool-level buy pressure — no per-wallet track record source","regime_gate":"no market-wide decay watchdog / regime gate yet"},"not_available":{"trader_handles_or_names":"no keyless public source maps a chain-4663 wallet address to a human handle/name; we show the address (and its explorer link) and never invent or guess a handle","written_theses":"nothing on-chain carries a trader's reasoning for a buy/sell; we do not fabricate commentary — every field here is derived from actual trade logs","receipt_level_provenance":"we show aggregated per-wallet/per-curve totals and the last 20 raw legs (flow[]), not a per-fill receipt trail beyond that; a field we cannot compute from the indexed logs is always null, never estimated"}}