Docs Menu

[Product]

Risk Score Methodology

The Knovo score is a deterministic 0-100 number computed from eight weighted components, then adjusted by penalty deductions and a small set of override rules. It is implemented in lib/riskScore.ts and contains no AI or randomness.

[ Note ]

Higher is safer by these metrics. A high score means liquidity, holder distribution, and market structure look comparatively strong. It does not mean a token is guaranteed safe.

1. Component scores

Eight components are scored independently from the pair and holder data, then summed. Components can score 0 when the underlying data (usually holder data) isn't available.

ComponentMax pointsDriven by
Liquidity20USD liquidity in the primary pool
Market Cap15Market cap, falling back to FDV
Holders20Top-holder % (max 10) + top-10-holder % (max 10)
Activity1524h volume relative to liquidity (volume / liquidity ratio)
Pressure10Share of 24h transactions that are buys vs. sells
Volatility10Absolute 24h price change
Pool Age5Hours since the pair was created
Security10Fixed baseline. Reserved for automated contract-safety checks not yet wired into scoring (see below)

Liquidity (0-20)

USD LiquidityPoints
> $2,000,00020
$500,000 – $2,000,00016
$150,000 – $500,00012
$50,000 – $150,0008
Below $50,0004

Market cap (0-15)

Market CapPoints
Unavailable0
> $5,000,000,00015
$500,000,000 – $5,000,000,00013
$50,000,000 – $500,000,00010
$5,000,000 – $50,000,0007
Below $5,000,0004

Holders (0-20)

Requires holder data from Moralis; scores 0 when unavailable. Split into two sub-scores that add together.

Top holder %Points
< 2%10
2% – 5%8
5% – 10%6
10% – 20%3
> 20%0
Top 10 holders %Points
< 20%10
20% – 40%8
40% – 60%5
> 60%2

Activity (0-15)

Based on the ratio of 24h volume to liquidity, a rough measure of how hard the pool is being traded relative to its depth.

Volume ÷ LiquidityPoints
≥ 1.015
0.5 – 1.012
0.2 – 0.58
0.05 – 0.24
Below 0.051

Pressure (0-10)

Based on the share of 24h transactions that are buys. Scores 0 when buy/sell counts aren't available.

Buy share of txnsPoints
> 60%10
40% – 60%7
25% – 40%4
Below 25%1

Volatility (0-10)

Based on the absolute value of the 24h price change.

|24h price change|Points
≤ 8%10
8% – 20%8
20% – 40%5
Above 40%2

Pool age (0-5)

Pool agePoints
Unknown0
≥ 30 days5
3 days – 30 days3
Below 3 days1

Security (fixed at 10)

This component currently contributes a fixed 10 points to every score. It is a placeholder for automated contract-safety signals (source verification, LP lock/burn status, deployer concentration) that exist as standalone modules in the codebase but are not yet wired into the public score. See lib/explorer.ts and lib/launchDetection.ts in Data Sources.

2. Penalty deductions

After the eight components are summed, specific risk conditions subtract points and add a human-readable reason to the response. Multiple penalties can apply at once and stack.

ConditionDeduction
Liquidity below $30,000-10
Market cap below $1,000,000-5
Top holder above 15% of supply-10
Top 10 holders above 70% of supply-10
High volume (≥0.5x liquidity) with sell-heavy flow (>60% sells)-5
A 5m, 1h, or 6h price drop of 30% or more-5

3. Override rules

A small number of floor and cap rules run after the score is clamped, to keep specific well-known or clearly dangerous cases consistent regardless of how the weighted math lands.

  1. Stablecoin floor: if the token symbol is USDT, USDC, or DAI, the score is raised to at least 90.
  2. Mega-cap floor: market cap above $1B, liquidity above $1M, and top holder under 5% raises the score to at least 85.
  3. High whale cap: top holder above 25% caps the score at 50.
  4. Low liquidity cap: liquidity below $20,000 caps the score at 45.
  5. Extreme concentration cap: top 10 holders above 80% caps the score at 55.

4. Final score

The summed, penalty-adjusted, override-applied score is rounded and clamped to a 0-100 range. The response also includes:

  • breakdown: the raw per-component points listed above.
  • penalties: the list of penalty labels that applied.
  • reasons: short explanations tied to whichever penalties fired, or a general summary sentence keyed to the score band when no penalties applied.