Skip to content
Methodology · v1.0.0

No black-box scoring.

The Monarcy score is the sum of six components, each documented below with its input, normalisation, weight and limitations. The same code runs on every inspection — see src/lib/scoring/monarcy-score.ts. Unknown inputs score 0; the score never fills a gap with an estimate.

30
Liquidity
25
Depth
15
Volume
15
Price impact
10
Age
5
Data confidence
total 100 points
01

Liquidity · 30 points maximum

weight 30%
Input
USD liquidity of the primary market. Indexed figure (DexScreener → GeckoTerminal) when available, otherwise 2 × the quote-side reserve read on-chain, priced with a stablecoin (1.00) or the wrapped-native price from the deepest stable factory pool.
Normalisation
points = 30 × clamp((log10(L) − log10(1,000)) ÷ (log10(5,000,000) − log10(1,000)), 0, 1). $1k or less → 0, $5M or more → 30, linear in log space between.
Weight
30 of 100
Limitations
Index liquidity for V3 pools counts whole-pool inventory, not only in-range liquidity. Unpriced quote assets yield no on-chain figure and the component scores 0.
02

Depth · 25 points maximum

weight 25%
Input
Simulated price impact of a $10,000 buy paid in the quote asset.
Normalisation
points = 25 × (1 − clamp((log10(impact) − log10(0.005)) ÷ (log10(0.25) − log10(0.005)), 0, 1)). ≤0.5 % → 25, ≥25 % → 0.
Weight
25 of 100
Limitations
LP fee is stripped from the input first, so the figure is pure price movement. V2: exact x·y=k. V3: in-range approximation using the active liquidity L — understates impact when the trade crosses ticks. LIQUIDITY_ESTIMATE: constant-product identity on indexed liquidity when pool state could not be read.
03

Volume · 15 points maximum

weight 15%
Input
24-hour USD volume of the primary market from an index.
Normalisation
points = 15 × clamp((log10(V) − 2) ÷ (6 − 2), 0, 1). $100 or less → 0, $1M or more → 15.
Weight
15 of 100
Limitations
Volume only exists via an index; factory-discovered markets have none and score 0 here. Wash trading is not detected.
04

Price impact · 15 points maximum

weight 15%
Input
Simulated price impact of a $1,000 buy.
Normalisation
points = 15 × (1 − clamp((log10(impact) − log10(0.001)) ÷ (log10(0.10) − log10(0.001)), 0, 1)). ≤0.1 % → 15, ≥10 % → 0.
Weight
15 of 100
Limitations
Same simulation caveats as Depth. Fee-on-transfer and rebasing tokens are not modelled.
05

Age · 10 points maximum

weight 10%
Input
Days since the pool was created, from the index pair-creation timestamp, measured against the head block time.
Normalisation
points = 10 × clamp((log10(days) − 0) ÷ (log10(180) − 0), 0, 1). Under 1 day → 0, 180 days or more → 10.
Weight
10 of 100
Limitations
Only indexes report creation time; factory-only markets score 0. Age says nothing about the token contract’s deployment date.
06

Data confidence · 5 points maximum

weight 5%
Input
Which corroborating sources answered.
Normalisation
+2 pool state read on-chain at the pinned block · +1 indexed liquidity · +1 indexed volume · +1 pool age known. Maximum 5.
Weight
5 of 100
Limitations
Confidence rewards agreement between sources; it does not verify that an index is correct.
07

Verdict bands

deterministic
VerdictRangeMeaning
FORTIFIED90100Deep, aged, actively traded market with negligible impact at $10k.
STABLE7589Solid structure; minor gaps in one component.
THIN5074Tradeable but shallow; sizeable orders move the price.
FRAGILE2549Unstable structure: low liquidity, new, or barely traded.
UNVERIFIED024No measurable market structure, or no data at all. High risk.

A market with no measurable liquidity from any source is always UNVERIFIED (score capped at 24) regardless of other components.

08

Sources & order of precedence

per inspection
  1. JSON-RPC at one pinned head block: bytecode, ERC-20 selectors, token0/token1, getReserves, slot0, liquidity, fee, pool token balances.
  2. DexScreener token pairs / pair lookup — price, liquidity, volume, transactions, creation time.
  3. GeckoTerminal token pools / pool lookup — same fields; also the source for the Discover list.
  4. Factory reads: Uniswap V2 getPair and V3 getPool against the chain’s registered quote tokens, priced from reserves. Never overrides an index value; only fills gaps.

Structural market assessment only. Not investment advice.