Skip to content
OcraMarketsOcraMarkets

Methodology

Every score, in the open.

OcraMarkets never hides a formula. The engines below run in src/lib/score and src/lib/signals and return every sub-score with its reason.

Log-normalisation

Market quantities span many orders of magnitude, so each is mapped to 0–100 on a log10 scale between a floor and a ceiling. Values outside the range are clamped. A metric a provider did not return is null, never zero, and is excluded from the weighted average; the remaining weights are re-normalised and the coverage is reported as a confidence level (HIGH ≥ 85% of weight, MEDIUM ≥ 60%, LOW otherwise).

logNorm(v, lo, hi) = clamp( (log10(v) − log10(lo)) / (log10(hi) − log10(lo)) × 100 , 0, 100 )

OcraScore (0–100)

Summarises market quality. Higher means deeper, more distributed and more orderly — not “better investment”. Published only when at least 50% of the weight had real inputs.

FactorWeightInputSub-score
Liquidity25%Pooled DEX liquidity (USD)logNorm($10K → $100M). Top-200 CEX-listed assets without pool data: logNorm(volume, $1M → $10B) as an explicit proxy
Volume20%24h volume + volume ÷ liquidity½ logNorm($10K → $1B) + ½ ratio quality: <0.01× → 20 · <0.05× → 60 · 0.05–5× → 100 · 5–20× → 60 · >20× → 20
Momentum15%24h change (70%) + 1h change (30%)clamp(50 + change24h × 2) blended with clamp(50 + change1h × 6); halved when |change24h| > 25%
Market depth15%Pool count, largest-pool share5+ pools 100 · 3–4 75 · 2 55 · 1 35 · 0 10; −15 when one pool holds >90%; ≥ $5M liquidity floors at 85; top-200 CEX-listed without pools 80
Holder concentration15%Top-10 WALLET share of supply (contracts excluded)≤10% → 100 · 10–30% → 100→60 · 30–50% → 60→10 · ≥50% → 10
Market age / reliability10%Oldest observed pool or genesis date<1d 5 · <7d 25 · <30d 50 · <180d 75 · <1y 90 · older 100
OcraScore = Σ(weight_i × score_i) / Σ(weight_i)   over factors with data
Status:  80–100 HEALTHY · 60–79 STABLE · 40–59 WATCH · 0–39 HIGH RISK · coverage < 50% INSUFFICIENT DATA

Each factor also carries a one-word reading (STRONG, MODERATE, THIN, ACCELERATING, DISORDERLY, DISTRIBUTED, SHALLOW, HEALTHY, ELEVATED, HIGH, NEW, ESTABLISHED…) and a tooltip describing its scale, shown wherever the score appears.

Ocra Pulse (four states)

A read of unusual activity. The highest state whose threshold is crossed wins; every reading line that contributed is shown on the card.

StateTriggers
RISKpooled liquidity < $25K · top-10 wallets ≥ 50% · |24h change| ≥ 40% · OcraScore in HIGH RISK
WATCH|24h change| ≥ 10% · 24h range ≥ 20% · volume > 5× pooled liquidity · top-10 wallets ≥ 30% · market < 7 days old · OcraScore in WATCH
ACTIVE|24h change| ≥ 3% · |1h change| ≥ 1.5% · volume ≥ 0.5× pooled liquidity
CALMnone of the above

Signal label (Market Explorer)

One label per row, first match wins: THIN LIQUIDITY (under $25K) · HIGH CONCENTRATION (≥ 50%) · NEW MARKET (under 7 days) · HIGH VOLATILITY (|24h| ≥ 25%) · VOLUME SURGE (over 5× liquidity) · MOMENTUM ↑ (≥ +5%) · MOMENTUM ↓ (≤ −5%) · DEEP LIQUIDITY (≥ $10M) · ACTIVE · STEADY.

Activity index (Pulse ranking order)

ComponentWeightInputSub-score
Momentum30%24h change (70%) + 1h change (30%)50 + change24h × 1.5, blended with 50 + change1h × 5, clamped 0–100
Liquidity25%Pooled DEX liquidity (USD)logNorm($1K → $1B)
Volume20%24h volume (USD)logNorm($1K → $10B)
Volatility quality15%24h range % (high–low / price, or |changes| when no range)<0.5% → 40–60 · 0.5–2% → 60–100 · 2–10% → 100 · 10–40% → 100→10 · >40% → 5
Freshness10%Age of the source snapshot≤2 min → 100 · 10 min → 60 · 60 min → 20
Universe: CoinGecko top 100 + GeckoTerminal trending pools + top pools on ETH / SOL / Base / Robinhood
Stablecoins are excluded; entries with < 50% coverage are not ranked.

Observed risk and Risk Signals (0–100, higher = more risk)

OcraMarkets never labels an asset SAFE or SCAM. It reports LOW / MODERATE / HIGH OBSERVED RISK from measurable market conditions, or INSUFFICIENT DATA when fewer than 40% of the weights have inputs. The Risk Signals list on every market profile is produced by the thresholds below — a warning appears only when the data supports it.

ComponentWeightInputRisk sub-score
Liquidity quality30%Pooled liquidity100 − logNorm($1K → $10M)
Volume quality20%Volume ÷ liquidity<0.01× → 75 · <0.05× → 50 · 0.05–5× → 10 · 5–20× → 45 · >20× → 85
Volatility20%24h range %<5% → 10–15 · 5–20% → 15–50 · 20–60% → 50–100 · ≥60% → 100
Market age10%Oldest pool / genesis date<1 day → 100 · <7d → 70 · <30d → 40 · <180d → 20 · else 5
Concentration10%Top-10 WALLET share of supply (Blockscout on EVM chains; Jupiter audit on Solana)≥50% → 100 · 30–50% → 60–100 · 10–30% → 10–60 · <10% → share
Market depth10%Pool count + main-pool share of liquidity≥5 pools → 10 · 3–4 → 25 · 2 → 45 · 1 → 65 (+10 if one pool holds >90%)

Risk Signals

SignalTrigger
LOW LIQUIDITYpooled liquidity < $25K (high severity < $5K)
UNUSUAL VOLUME24h volume > 20× pooled liquidity
HIGH VOLATILITY24h range ≥ 40% (high severity ≥ 80%)
NEW MARKEToldest observed pool < 7 days (high severity < 1 day)
HIGH FDV / LIQUIDITYFDV > 200× pooled liquidity (high severity > 1000×)
HIGH CONCENTRATIONtop-10 wallets ≥ 30% of supply (high ≥ 50%)
MINT / FREEZE AUTHORITY ACTIVESolana mint or freeze authority not revoked (from RPC / Jupiter)
Level:  score < 30 → LOW OBSERVED RISK · 30–59 → MODERATE · ≥ 60 → HIGH · coverage < 40% → INSUFFICIENT DATA

DEX-only liquidity caveat. Pooled liquidity comes from DEX pairs. For widely CEX-listed assets (CoinGecko rank ≤ 200) most depth sits on centralised venues, so ratios against pooled liquidity are replaced by turnover or an explicit proxy, and the FDV ÷ liquidity signal is not applied.

These scores describe observable market conditions and are not a guarantee of asset safety. They cannot see contract code, team behaviour or off-chain events. Verify the sources linked on every market profile.

Known limitations

CoinGecko’s multi-chain universe carries no pooled-liquidity, pool-depth or holder figures, so OcraScore coverage is partial there (75% for top-200 assets through the documented proxies, less otherwise); per-chain and DEX views have the full breakdown. 24h ranges for DEX-only tokens are approximated from 1h/24h moves. Holder concentration comes from Blockscout on Ethereum, Base, Arbitrum, Optimism and Robinhood Chain and from the Jupiter audit on Solana; it is unavailable elsewhere. Contract verification is read from Sourcify for EVM chains; “not verified on Sourcify” means exactly that, not that the contract is unsafe.