HOW VERSUS WORKS
VERSUS puts two Robinhood Chain tokens in the ring and scores them over five rounds. Rules decide every round. An AI commentator calls the fight, but it never picks a winner, and every number it says is checked against the data before it reaches the page.
How a fight works
- Pick two fighters in the ring: type a ticker or name, or paste a contract address.
- VERSUS takes a snapshot of both tokens from public sources: pools, holders, transfers and launch data.
- Each round compares one thing. Each fighter gets a score from 0 to 100 for that round.
- The fighter with more rounds wins. The result, the commentary and a fight poster are saved to a permanent link you can share on X.
The same pair asked again within 10 minutes gets the same fight, so the result doesn't change because someone hit refresh. After that window a new snapshot is taken.
Scores are relative. A small token with a healthy pool and a wide holder base can beat a big token that sits on a thin pool.
The five rounds
All formulas below are exactly what runs. Scores are rounded to one decimal.
Round 1 · Holders
Is the token held by a crowd, or by a committee? Mostly how concentrated the top 10 is, a bit of how many holders there are.
score = 0.7 × 100 × (1 − top10 share) + 0.3 × min(100, 25 × log10(holders))Pools, the Uniswap v4 pool manager, Pons contracts (hook, locker, graduation executor, fee escrow, buyback vault), burn addresses and any other contract don't count as holders.
Round 2 · Liquidity
How deep the pool is against the market cap. A pool worth 25% of the cap or more scores full marks.
depth = liquidity ÷ market cap
score = 100 × min(1, depth ÷ 0.25) (halved if liquidity is under $2,000)Liquidity is added up across every pool the token has on DexScreener.
Round 3 · Momentum
Where the price went in 24 hours, and how much trading the pool saw. Capped, so one pump can't win the round alone.
price part = 50 + 50 × tanh(24h change % ÷ 50)
turnover = 24h volume ÷ liquidity
turnover part = 100 × min(1, turnover ÷ 2) (set to 50 if turnover is above 15x)
score = 0.6 × price part + 0.4 × turnover partRound 4 · Buy pressure
Over the last 24 hours, how many wallets ended up net buyers against how many ended up net sellers. Only transfers that touch one of the token's pools count. A wallet that bought and sold back nets out to zero and isn't counted.
score = 100 × (buyers + 5) ÷ (buyers + sellers + 10)The +5 / +10 pulls small samples toward 50, so 3 buyers against 0 sellers isn't a knockout. If either side has fewer than 5 wallets trading, the round is a no contest: nobody wins it.
Round 5 · Status
Time survived on a live pool. Keeps rising for about three months, so two veterans don't both max out.
score = 60 + min(40, 8 × log2(1 + age in days ÷ 3))Age comes from the token's creation transaction, or its launch event for Pons tokens.
Decisions and flags
A round is even when the two scores are within 3 points. Nobody gets the round.
| Decision | When |
|---|---|
| Shutout | The winner took 3 or more rounds and lost none. |
| Unanimous | The winner is ahead by 2 rounds or more. |
| Split | The winner is ahead by 1 round. |
| On points | Level on rounds. The bigger total margin across all five rounds wins. |
| Draw | Level on rounds and level on total margin. |
Red flags
Flags don't change the score. They are printed under the decision so nobody misses them.
| Flag | When |
|---|---|
| Concentrated | The top 10 holders own more than 60% of the supply. |
| Thin pool | Total liquidity under $1,000. |
| Suspicious volume | 24h volume is more than 15x the pool. |
Who can fight
Any token on Robinhood Chain with at least one pool on DexScreener can be put in the ring.
Tokens still on a launchpad bonding curve (not yet graduated to a pool) can't fight yet. Support for them is planned.
To count for the Hall of Belts and to be picked for Tonight's Card, a fight needs both fighters to be graduated, at least 1 day old, and holding at least $5,000 in liquidity.
Tonight's card
Three fights land every day at 00:05 UTC. They are picked by rules, never by the AI.
- Main event: the two biggest neighbours by market cap.
- Undercard: two neighbours from the middle of the ranking.
- Upset watch: the hottest token outside the top 5 against a top 5 token.
No pair repeats within 7 days, no token fights twice on one card, and at least one fight features a Pons token when one is available.
The title fight
One fight at a time runs for seven days. When one ends, the next opens at the same daily bell. The rules pick two graduated Pons tokens close in market cap (no more than 4x apart when possible), each with a pool of at least $5,000, at least 3 days old, that haven't met in a title fight in the last four weeks.
Both fighters are read once at the opening bell and once a day after that, around 00:20 UTC. Every round is scored on what changed since the opening bell. Grit replaces Status, because age doesn't move in a week.
Holders
Top 10 share falling scores, holder count growing scores. 60% concentration change, 40% holder growth.
0.6 × (50 − 50 × tanh(Δ top10 pts ÷ 3)) + 0.4 × (50 + 50 × tanh(holder growth % ÷ 10))Liquidity
How much pool depth (pool ÷ market cap) grew or shrank since the opening bell, as a percentage of where it started.
50 + 50 × tanh(depth change % ÷ 20)Momentum
Price change since the bell, plus the average daily turnover of the pool. Capped, so one pump can’t win it alone.
0.6 × (50 + 50 × tanh(price % ÷ 50)) + 0.4 × 100 × min(1, avg turnover ÷ 2)Buy Pressure
Each day counts the wallets that net-bought and net-sold through a pool in the last 24 hours. The days are added up. Under 5 wallets a side is a no contest.
100 × (buyers + 5) ÷ (buyers + sellers + 10)Grit
Share of days that closed higher than the day before.
100 × green days ÷ days so farRounds within 3 points are level. Decisions work the same way as a regular fight. The winner holds the Title Belt until the next title fight ends.
Challenges
Anyone can call out a rival. Pick two Robinhood Chain tokens and a length of 1, 3 or 7 days. Both tokens need a pool of at least $5,000 that has been trading for 3 days or more.
A challenge is scored exactly like the title fight: the same five rounds, on what changed since the opening bell. Each token is read once per UTC day, and that reading is shared by every challenge the token is in.
- One new challenge per fan per day.
- Up to 30 challenges run at once. When the arena is full, a slot opens as soon as one ends.
- The same two tokens can't have two live challenges at the same time.
- Challenges count for the token's record. The Title Belt is only won in the title fight.
Hall of Belts
A weekly leaderboard, Monday to Sunday UTC. Tokens are ranked by unique wins: beating the same opponent ten times counts once. Ties go to total wins, then fewer losses. Only eligible fights count.
The commentator
Every fight gets a ringside call: a title, an intro for each corner, one line per round, a closing line and a ready-made X post.
- It gets the finished result and the formatted numbers. It can't change a winner.
- Every number in its lines has to appear in the fight data. A line with a made-up number is thrown out and replaced with a plain rule line.
- It roasts numbers, never people. No claims about teams, developers or intent.
- No-contest rounds always get the plain rule line.
If the AI is down or too many of its lines fail the check, the fight still runs with plain rule-written lines.
Data sources
VERSUS is read-only. It doesn't index the chain, hold funds or ask for a wallet. Everything comes from these public sources:
| Source | Used for |
|---|---|
| DexScreener ↗ | Pools, liquidity, market cap, 24h price change and 24h volume. Every pool a token has is added up. |
| Blockscout (Robinhood Chain) ↗ | Holder count, top 10 holders, 24h transfers for buy pressure, and the creation transaction for age. |
| Pons ↗ | Launch detection. A token launched on Pons V2 is read from its TokenLaunched event. |
| Robinhood Chain ↗ | The chain every fighter lives on. Chain ID 4663. |
Every number on a fight page is the snapshot taken at fight time. The timestamp is on the fight. Live data keeps moving.
FAQ
Why did I get the same result twice?
The same pair within 10 minutes returns the saved fight. Wait for the window to pass for a fresh snapshot.
Why is buy pressure a no contest?
One of the tokens had fewer than 5 wallets buying or selling in the last 24 hours. Too few to call it.
My token won't enter the ring.
It needs a pool on DexScreener on Robinhood Chain. Tokens still on a bonding curve can't fight yet. Double-check the contract address too.
Can a fight result change?
No. A fight is saved with its snapshot. A rematch later takes a new snapshot and can go the other way.
Is the holder count different from the explorer?
It can be. VERSUS removes pools, lockers, burn addresses and other contracts from the top 10 before scoring.

