Scora

Methodology

How a wallet becomes a number

Every constant on this page is imported from the same module that computes live scores. If we tune the model, this page changes with it. Transparency isn't a feature of Scora; it is the product. The public API returns every input below.

The overall Scora

Five sub-scores, each 0–10, are blended by fixed weights and scaled to 0–100: Scora = round(10 × Σ subscoreᵢ × weightᵢ)

Sub-scoreWeight
Conviction30%
Vintage15%
Portfolio Health20%
Discipline20%
Degen Index15%
ScoraTier
0–39Paper
40–59Steel
60–79Titanium
80–100Diamond

Conviction · 30%

Value-weighted average hold duration across current holdings. Curve: 0d→0, 7d→3, 30d→6, 90d→8.5, 180d+→10 (log-interpolated). Tokens are weighted by their USD share so dust can't inflate the score.

Held forScore
0d0
7d3
30d6
90d8.5
180d+10

When a token was acquired before our scan window, its hold time is a floor: shown as “90+ days” and scored at the floor value. That is a positive signal, never treated as missing data. Native SOL uses the wallet's age as its hold-time proxy.

Vintage · 15%

Age curve: 0d→0, 90d→4, 365d→7, 730d+→10 (linear). +1 bonus if active in ≥60% of observed weeks (capped at 10).

Wallet ageScore
0d0
90d4
365d7
730d+10

Continuity bonus: +1 when the wallet was active in at least 60% of the weeks we observed, capped at 10.

Portfolio Health · 20%

A token counts as alive when it has a live market price (Jupiter, with the on-chain price snapshot as fallback). No price usually means dead or rugged. The score is the USD-weighted alive share ×10, minus 0.15 per dead mint (capped at 3, so one airdrop-farm era can't zero a wallet). Holdings under $1 are ignored throughout.

Discipline · 20%

Two equally-weighted parts:

SignalRule
Churn≤25 swaps/week → 10 · falls linearly to 0 at 100/week. Swaps are detected on a recent-transaction sample; unknown tempo scores a neutral 7.
ConcentrationTop non-exempt token ≤60% of portfolio → 10 · slides down to 4 at 90% · toward 0 beyond. SOL and stables are exempt.

Degen Index · 15%

The memecoin share of portfolio value: everything that isn't SOL, a liquid staking token, a stablecoin or a hardcoded blue chip counts as a memecoin. The score peaks at a mixed portfolio and floors at 2for the extremes. It's a character axis: the labels are celebratory, never insulting.

Memecoin shareLabel
0–20%Tourist
20–50%Balanced
50–80%Degen
80–100%Full Degen

Data window & honesty

Scora runs on free public infrastructure and budgets every analysis: up to ~5,000 recent signatures for wallet history, per-token hold-time scans for the top holdings by value, and one parsed-transaction sample for swap detection. Everything the budget couldn't reach is reported in the coverage field (0–1) instead of being silently guessed. Below 40% coverage, every score is marked as an estimate in the UI.

Edge cases

WalletBehavior
Empty (no tokens, no SOL, no history)No score at all, never a fake zero.
Fresh (< 7 days and < 10 transactions)Scored, but flagged “Fresh wallet”, because a low score would be misleading.
Coverage below 40%Scores render with an “estimate” chip.

Scores are informational, not financial advice. Scoring runs only on public on-chain data; Scora stores nothing about you or the wallets you look up.