RobinX Score — Methodology
Summary. RobinX scores who launches a token, not just what the contract says. It holds the complete transaction history of Robinhood Chain from genesis — every launch, swap, and transfer — and derives from it a per-deployer reputation score, per-token insider-flow flags, and a measured leaderboard of which X (Twitter) accounts actually move prices. Out of sample, deployers scoring 70+ went on to produce real tokens at 5.5× the chain baseline.
1. Data foundation
RobinX ingests Robinhood Chain from block 0 (chain genesis, May 2026; public mainnet 2026-07-01) via full-history sweeps, plus a live WebSocket tail that captures every new launch and swap within seconds, re-scored on a rolling cycle. As of 2026-07-10 the corpus covers:
| Dataset | Size (2026-07-10) | Source |
|---|---|---|
| Tokens indexed (every launch path: the RobinFun factory, then pool-derived launches since 2026-07-11) | 39,765 | factory creation events, genesis→now |
| Deployers scored | 15,185 | creation-event attribution |
| Swaps processed (genesis corpus) | 3.26M+ | Uniswap v3 pool events |
| ERC-20 transfers traced | 2.71M+ | all indexed token contracts |
| X posts about RH-chain tokens | rolling | continuous polling, chain-anchored matching |
A structural finding baked into the pipeline: RobinFun has no discrete “graduation” event. Every token receives its Uniswap v3 WETH pool at creation (verified across 100% of launches). Milestones like “became tradeable” are therefore computed from swap activity, not read from an event log.
2. Definitions
Real token
A token whose pool has transacted ≥ 1 WETH cumulative volume AND attracted ≥ 20 unique traders. On the genesis corpus (17,037 launches through 2026-07-08), 16.96% of tokens ever became real — versus roughly 1% graduation rates on comparable Solana launchpads.
Deployer score (0–100)
Computed per deployer wallet from complete history: tokens launched, share reaching real activity, dead-token share, best token’s WETH volume, and whether the deployer performs wallet-to-wallet token distribution before dumps (insider-prep pattern). Signals are transparent rules, not a black box — every score returns machine-readable reasons[].
A token is never judged on its own trading. A verdict about a token uses its deployer’s other launches: the token itself is left out of the record the score is computed on. If the deployer has no other graded launch the verdict reads new_deployer, and trusted requires at least two other launches that reached real activity. One launch that traded heavily is not a track record, and heavy trading is not evidence of safety: a bundled launch can pump and collapse inside an hour.
Insider flow
Tokens acquired by transfer rather than purchase. On the genesis corpus, 4,181 wallets (~5% of all traders) received tokens wallet-to-wallet off-market and then sold into pools, realizing 23,224 WETH (~$40M) — and every one of the top-10 profit wallets on the chain is in this cohort. Insider-share of supply is a first-class risk input in every verdict.
Tokenized stocks and ETFs
Robinhood issues tokens against stocks and ETFs on its chain, named “Company • Robinhood Token”. From 2026-10-19 RobinX reports a genuine one as a market, not a launch: its price, volume, wallet records and the calls on it are measured like any token’s, and its verdict reads tokenized_stock with no deployer record, custody reading or holder-concentration overlay (the launch frame does not apply to a token issued against a stock). Genuine means on Robinhood’s issuer’s contract template (191 contracts on 2026-10-19, read from their bytecode) or deployed by that issuer; a token merely named like one is a look-alike, judged as the launch it is and flagged named_like_robinhood_stock_token. The Omega bot leaves tokenized stocks alone. RobinX is independent and not affiliated with Robinhood.
3. Out-of-sample calibration
The score’s discriminating power is tested forward, not backfit. Method: freeze scores at a cutoff block, then measure outcomes of new launches after the cutoff.
| Cohort (at launch time) | Real-token rate (forward) | vs baseline |
|---|---|---|
| Deployer score ≥ 70 | 41% | 5.5× |
| All launches (baseline) | 7.4% | 1.0× |
| Serial spam factories (10+ launches, 0 real) | ≈0% | avoid |
Extremes are stark and stable: the deployer behind the chain’s largest token is 7-for-7 on real launches; the largest spam factory is 0-for-325. 288 serial spam factories are currently flagged. Live, refreshed calibration is published continuously at robinx.io/proof.
4. Caller intelligence (X / Twitter): the rules, version caller-rules-4
RobinX joins chain-anchored X mentions to on-chain price series (from our own swap data) to measure which accounts’ posts precede moves. The rules below are the method; the same text is served as the rules field on every caller record (GET api.robinx.io/caller/{handle}), and every graded call carries a receipt that lets a reader redo the arithmetic.
- A call. A public X post that names exactly one Robinhood Chain token: by contract address, by a DEX link, or by a cashtag, hashtag or bare name that resolves to one token under the matching rules (a cashtag only when exactly one non-major cashtag appears and one token holds ≥90% of that symbol's indexed volume; a hashtag or bare name only for a non-dictionary word with independent evidence from five or more distinct accounts whose address-bearing posts used the same word for the same token). Every call records its basis (matched_via). A post that could mean more than one token is not a call: we prefer missing a call to guessing one, because a guessed match would grade a named account against a token they never called. Every call records when it was posted and when RobinX captured it (usually within minutes; a backfilled historical post shows its later capture time). A deleted post stays in the record; its text is never redistributed, its id and capture time are.
- Three prices. From the swaps of one pool, chosen for each call from the swaps before the post: of the token's v3 pools, v4 pools and verified v2 pairs from an allowlisted factory, the one with the most WETH traded in the 24 hours before the post (a tie goes to the one with more WETH traded before the post); if none traded in those 24 hours, the one with the most WETH traded at any time before the post; if none had traded at all, the first to trade after it (that call has no price at the post and is never graded). The receipt names the pool and its kind. A pool quoted in USDG competes and is priced in WETH-equivalent: each of its swaps is converted at the USDG/WETH reading taken about once an hour from the USDG/WETH 0.01% pool (the latest reading at or before the swap); the receipt says the pool's quote (caller-rules-4). The last swap at or before the post (price_at_call), the last swap at or before 30 minutes earlier (price_30m_before), and the first swap at or after one hour later (price_1h_after). Price is WETH per token from the swap amounts (for a USDG-quoted pool, USDG per token converted at that reading). No external oracle, no third-party price, no screenshot.
- Gradeable. A call is graded only when all three prices exist. A call missing one is ungradeable: neither a win nor a loss, and not counted. A call is pending until its post is one hour old and a later swap has been seen in its pool; a call whose pool never trades again after that hour stays pending and is never counted, even if the token trades elsewhere.
- Early. The pre-run (price_at_call / price_30m_before − 1) is below +25% and the one-hour move (price_1h_after / price_at_call − 1) is above +10%. The token had not run when they posted, and it rose after.
- Momentum. The pre-run is above +50%. The post came after the run: riding, not calling.
- The record. calls = graded calls. early_rate = early / calls. momentum_rate = momentum / calls. med_1h = the median one-hour move over graded calls. A record is shown from 4 graded calls. One horizon is measured: one hour.
- The ranking. rank_score = the lower bound of the 95% Wilson score interval on early_rate. Boards are ordered by it, so 3 early of 4 (rank score 30%) ranks below 10 early of 19 (32%), and 4 of 4 (51%) sits level with 18 of 26 (50%). The raw order is served only on request (?sort=early_rate). evidence = thin under 8 graded calls, fair from 8, solid from 20.
- The grade. The letter on the free report card and the badge is a cut on rank_score, shown from 4 graded calls: A from 45%, B from 30%, C from 15%, D below (caller-rules-2). A thin record needs a near-perfect run for an A: 4 of 4 is an A (51%), 3 of 4 a B (30%), 2 of 4 a C (15%); 18 of 26 is an A (50%), 9 of 14 a B (39%). B or better is also what the paid call stream and the webhook alerts push; evidence says how much stands behind the letter.
- Coordination. coordinated = the account is in a cluster of callers: accounts that follow each other, or (since 2026-10-12) accounts that have repeatedly posted a text many accounts posted (10 or more accounts each posted it 3 or more times within 14 days; an account is flagged when 3 or more of its token posts in those days were such posts and they were half or more of them). The flag describes follows and post text only: it does not say the accounts know each other, are run by one party, are paid or are automated. The record is still its own; in mention counts a cluster is one voice.
- Not done. No self-reported results, no screenshots, no external or third-party oracle prices (the one reference rate is the on-chain USDG/WETH reading named above), no horizon beyond one hour, no advice. Rule-based observations from public data; not accusations.
Receipts. GET api.robinx.io/caller/{handle}/calls ($0.02 over x402) returns every tracked call with its post id and URL, capture time, attribution basis, pool, the three prices, the pre-run and the one-hour move, and the status of its grade: graded (all three prices found), pending (the hour has not closed, or no swap has been seen since; the reason is stated), ungradeable (a price missing once the post was two hours old; never counted), unmarked (no mark yet: no indexed pool at the last grading run, pools holding under five swaps in all, a swap history that could not be read or is too large to walk, or a post newer than that run), not_admitted (an attribution basis outside the grading allowlist, or none recorded), unavailable (the receipt store could not be read; retry). A graded call with pre_run_pct null had a 30-minute price of zero and is graded momentum. The statuses travel with every response (receipts.statuses). On the current corpus the median pre-mention run is +6%, and only 18% of mentions land after a token is already +50%: genuine early-calling exists on this chain and is measurable.
4b. The Omega signal: X and Telegram converging, version omega-signal-2
The Omega signal is an observation, not a trade call: X and Telegram converged on a token, with the receipts and what the price did afterwards. The rule was written down before the first signal and is never tuned on the results; a change is a new version. Version 1 recorded from 2026-10-09 23:00 UTC; version 2 from 2026-10-19 01:31 UTC, differing only in the main pool, which may be a USDG-quoted pool priced in WETH-equivalent (section 5 states the reading); each signal carries its version and the two records are not pooled. It is served at GET api.robinx.io/omega/signals (included on Omega keys, $0.05 per call otherwise).
- Two sources only. X calls (as defined in section 4) and messages in the Telegram rooms RobinX includes in its counts. Nothing else counts.
- Independence. One vote per X account and per Telegram room; X posts with the same text after normalising (lowercase, links and spaces removed) count once; Telegram messages with the same text within 10 minutes count once, so a message cross-posted to many rooms is one vote.
- When it fires. Within 60 minutes of post time: at least one X call and at least three Telegram rooms. It fires at the moment RobinX captured the signal that completed the rule; nothing captured later is used. Three rooms is the floor every Telegram number RobinX sells carries: rooms are counted, never named.
- Once a day per token. A token's next signal uses only signals captured 24 hours or more after its previous one.
- Receipts and checks. Each signal names its X posts (post id, account, the account's caller grade) and counts its Telegram rooms. Times are rounded down to 5 minutes, Telegram post times are not shown, and every price is read at the end of the 5-minute window, so nothing shown gives the time of a Telegram message. It carries RobinX's checks when the signal is recorded: the token's verdict, whether it is a launch-template launch, who can pull its liquidity, its main pool's depth, its age and its move in the hour before. The checks do not filter: a signal fires whatever they say, so they are there to be read (?exclude_flagged=true leaves out the signals they flag).
- The record. The main pool's price (the price lane's pool: the most WETH or WETH-equivalent in range across v2, v3 and v4, ETH- or USDG-quoted, with its liveness rule) at the end of the fire's 5-minute window (the last swap at or before it: after the fire, so no hindsight), then at +1 hour, +6 hours and +24 hours from that moment (the last swap at or before each), as ratios. No costs, no exits. Losses are shown exactly as gains are. A signal found more than 10 minutes after it fired, or found after the recorder had stopped for a while, is marked late and measured like the rest; late signals are not pushed to webhooks.
5. Honest limitations
- The chain is young (public mainnet 2026-07-01). Forward windows are short; calibration hardens weekly and this page updates with it.
- Caller samples are small for most accounts: on 2026-10-06, 1,097 of 1,795 measured accounts had under 8 graded calls (evidence: thin). The rank score carries that uncertainty; the raw rate does not. One horizon (one hour) is measured, and a call's prices come from one pool: the one where the token traded most in the 24 hours before the post, which is not always the pool holding the most liquidity at that moment.
- Deployer scores can be evaded by wallet rotation; funding-lineage clustering (inheriting reputation across linked wallets) mitigates but does not eliminate this.
- A USDG amount is converted to WETH-equivalent at a spot reading of the USDG/WETH 0.01% Uniswap v3 pool taken about once an hour (every 36,000 blocks): a swap uses the latest reading at or before it, and swaps before the pool's first reading on 2026-07-02 use that reading. ETH's move against the dollar since the reading is not reflected. Prices and market caps use a reading taken when the price is read; px_at is when the pool was read, not when it last traded.
- RobinX measures and sells information. Nothing here is investment advice, and RobinX never executes trades.
6. Access
Every signal is served machine-readable: pay-per-call via the x402 API (USDC on Base, no signup, no API key) or through the RobinX MCP server for Claude/Cursor-class agents. Response envelope: {data, signal, confidence, sources, model_used, latency_ms, timestamp} with constrained per-endpoint signal enums (e.g. trusted / mixed / avoid / serial_spammer).
Changelog
| Date | Change |
|---|---|
| 2026-10-19 | Tokenized stocks and ETFs (section 2): Robinhood’s own are reported as markets, not launches (verdict tokenized_stock, no deployer or custody judgment; price, volume, wallet records and calls measured as for any token); look-alikes named like them are judged as launches and flagged. Until this day the deployer rules read Robinhood’s issuer as a deployer with 188 launches. |
| 2026-10-19 | caller-rules-4: a USDG-quoted pool competes for a call's pool and is priced in WETH-equivalent at the hourly USDG/WETH reading; the receipt says the pool's quote. Every call was graded again under it on 2026-10-19 (the run of 09:21–11:57 UTC: 69,561 calls resolved over 8,252 tokens, 69,566 graded). The board went from 2,891 to 2,970 accounts with 4 or more graded calls; letters A 9 → 7, B 26 → 22, C 174 → 176, D 2,682 → 2,765; the B-or-better stream from 35 to 29 accounts. In the read-only preview of the same run, 617 of 56,282 calls graded both ways changed grade (246 became early, 315 stopped being early) and 10,932 moved to another pool: calls graded on a thin ETH-quoted pool while the token's market was a USDG pool now read on that market. |
| 2026-10-19 | wallet-record-2: USDG-paired fills count, in WETH-equivalent at the hourly reading, where the pool is in the index. Every wallet's record is read again from its first block, so the board thins while the re-read runs and fills back as wallets complete. |
| 2026-10-19 | omega-signal-2 from 01:31 UTC: the main pool may be a USDG-quoted pool priced in WETH-equivalent at the reading taken when the price is read; nothing else changed. Signals before it carry omega-signal-1; the two records are not pooled. |
| 2026-10-18 | USDG-quoted pools: the index, the price lane (the pool holding the most WETH in range, a USDG pool's depth counted in WETH-equivalent; when the two deepest pools disagree on the price by more than 10%, the deepest one that traded in the past day is served) and the custody reading admit Uniswap v3 and v4 pools quoted in USDG and verified v2 pairs quoted in USDG, on the same canonical venues, each swap converted to WETH-equivalent at the hourly USDG/WETH reading from the USDG/WETH 0.01% pool (prices and market caps at the reading taken when the price is read; they say which quote priced them). A token that gains USDG pools is recounted from its first block at its next derivation; prices and market caps change at their next read. Caller grades, the wallet record and the Omega signal stayed on ETH-quoted pools until their next versions the following day (the three rows above). Published real_at_block values are not rewritten. Live from 2026-10-18 23:31 UTC (the worker; the existing USDG pools of called and top tokens the same evening). |
| 2026-10-10 | omega-signal-1: the Omega signal (section 4b), X and Telegram converging on a token, written down before its first signal. |
| 2026-10-08 | caller-rules-3: each call is graded on the pool where the token was actually trading when the post went out (the most WETH traded in the 24 hours before it; if none, the most before it), chosen among all of the token’s pools: v3, v4 and verified v2 pairs from an allowlisted factory. Under caller-rules-2 every call on a token was graded on one pool, the first our index had recorded, which could be a thin pool where a single trade moves the price. A board row whose account falls under four graded calls is now rewritten with its true count, so it leaves the board and the paid stream; before this, 71 rows kept records last refreshed between July and early October, two of them in the paid stream. On the first run 7,214 more calls were graded (40,244 in all), 830 calls changed grade (498 stopped being early, 222 became early), 337 accounts reached four graded calls, 63 fell under it, and the paid stream went from 25 accounts to 29. |
| 2026-10-06 | caller-rules-2: the letter grade (report card, badge) is a cut on rank_score instead of the raw early rate (A from 45%, B from 30%, C from 15%), so three early of four no longer carries an A (it did under caller-rules-1); the paid call stream and the webhook alerts push accounts of grade B or better (rank score 30%+) instead of a raw early rate of 50% or more, which had admitted 2-of-4 records. 200 of the 1,810 public letters changed with it: 29 of the 33 A's fell (21 to B, 8 to C), 73 of the 74 B's fell to C, 86 C's became D's, and 12 long records rose from D to C. |
| 2026-10-06 | caller-rules-1: the caller method written out as ten rules (section 4) and served with every caller record. Boards are ordered by rank_score, the 95% Wilson lower bound on the early rate, instead of the raw rate: the public board had been led by accounts with 4 graded calls at 100% while an account at 18 of 26 was not on it. Every call on /caller/{handle}/calls now carries its receipt: post id, capture time, pool and the three prices its grade is made of. The section used to say forward returns at +6h and +24h and a win rate were measured; they were not, and the text now says what is: one horizon, one hour. |
| 2026-10-01 | v1.1: token verdicts use the deployer’s other launches only (the token under judgment is excluded); a first launch reads new_deployer; trusted needs two other launches that reached real activity. Before this, a deployer’s single heavily traded launch scored 70 or more and the token read trusted on its own volume. |
| 2026-10-01 | v1.2: a deployer score of 70 or more needs two other launches that reached real activity (one success is capped at 69). When the deployer’s other launches cannot be read, no deployer verdict is given for that request; it used to fall back to a record that included the token. Market cap is the price in the pool holding the most WETH in range across v2, v3 and v4 pools, times supply; a token whose deepest indexed ETH-quoted pool holds under 0.05 WETH shows no market cap, and a price older than three days is not shown as current. |
| 2026-07-10 | Updated corpus counts (39,765 tokens, 15,185 deployers); added caller early-vs-momentum figures. |
| 2026-07-09 | v1 published: score definition, real-token threshold, out-of-sample 5.5× calibration, insider-flow findings. |