How the score is calculated
The score is derived entirely from public, on-chain activity indexed from the Stellar network — no off-chain data, no self-reported information. It measures how a wallet has actually used DeFi protocols over time.
Looking for how the Holdings card is calculated? Jump to how holdings work ↓ · how the credit line works ↓
Two scoring paths
Every wallet is scored one of two ways, depending on what it's done on-chain. Whichever applies, only the highest-signal path is used — a wallet is never scored both ways.
Lending pathUsed when a wallet has at least one completed borrow → repay cycle on a lending protocol (currently Blend). This is the strongest signal available, since repaying debt is the clearest evidence of creditworthiness — so this path can reach tier A.
Activity pathUsed when a wallet has no lending cycles, but has meaningful breadth or volume of other DeFi activity (swaps, liquidity provision, yield deposits, claims, transfers). This path can reach tier A only above a high score threshold — most activity-only wallets land in tier B.
FloorUsed when a wallet has very little indexed activity (fewer than 3 meaningful events, fewer than 2 protocols, and fewer than 2 months of distribution-claim income). Score is simply capped at a low tier-C value based on event count.
Lending path breakdown
LENDING path: 3 cycles, speed 34, cyclecount 12, income 8
[participation 2, months 3 (2pts), net $61.40 realized (4pts)],
distribution 0 [no distribution claims], tenure 11, raw 67
| Term | What it means |
|---|---|
| cycles | Number of completed borrow→repay cycles found (a debt opened and later fully closed). |
| speed | Points for how quickly debt was typically repaid, from the median cycle duration — faster repayment scores higher. |
| cyclecount | Points for having multiple cycles: min(cycles, 5) × 4 — repeat, completed borrowing is rewarded, up to 5 cycles. |
| income | Points for real yield income (see "Realized yield income" below) — up to 10 points here. |
| distribution | Points for recurring payroll/mass-distribution claims (see "Distribution income" below) — up to 4 points here. |
| rewards | Points for claiming protocol incentive rewards (see "Incentive rewards" below) — up to 3 points here. |
| classic | A small bonus for account age and long Stellar history (see "Account age and classic Stellar history" below) — up to 3 points here. |
| tenure | Points for how long ago the wallet's cycle activity spans — longer track record scores higher. |
| raw | Sum of the above. If a wallet has only 1 cycle, the score is provisionally capped lower until a second cycle confirms the pattern. |
Activity path breakdown
ACTIVITY path: protocols 5, events 784, days 44, breadth 15, volume
25, consistency 20, tenure 15, income 6 [participation 2, months 4
(3pts), net $128.07 realized (1pts)], distribution 2 [participation
1, months 2 (1pts), $40.00 claimed (0pts)], raw 83
| Term | What it means |
|---|---|
| protocols | Number of distinct DeFi protocols the wallet has touched (e.g. Blend, Soroswap, Aquarius, Sushi, DeFindex). |
| events | Count of "meaningful" on-chain events — everything except generic contract calls with no clear economic action. |
| days | Number of distinct calendar days the wallet was active on. |
| breadth | Points for protocol diversity: min(protocols × 5, 15). |
| volume | Points for activity volume: min(events, 25) — capped so very high-frequency wallets don't automatically dominate the score. |
| consistency | Points for how spread out the activity is across distinct days. |
| tenure | Points for the time span between the wallet's first and last meaningful event. |
| income | Points for real yield income (see "Realized yield income" below) — up to 12 points here. |
| distribution | Points for recurring payroll/mass-distribution claims (see "Distribution income" below) — up to 6 points here. |
| rewards | Points for claiming protocol incentive rewards (see "Incentive rewards" below) — up to 4 points here. |
| classic | A small bonus for account age and long Stellar history (see "Account age and classic Stellar history" below) — up to 5 points here. |
| raw | Sum of the above. |
From raw score to final tier
The raw point total isn't the displayed score — it's run through a scaling curve that concentrates most wallets in the middle of the range and reserves the top end for genuinely strong track records, then mapped to a tier:
The lending path and activity path use separate scaling curves calibrated to their own raw-score ranges, which is why the same raw number can map to different final scores depending on path.
Realized yield income
Beyond lending and activity, the score looks at real yield/savings income — deposits and withdrawals on yield products like DeFindex vaults, Stellar DeFi Hub, and Upshift/Gami. This only counts realized income: USD a wallet actually withdrew above what it had deposited into that position, not paper gains from a balance that's still parked. A wallet that deposits and never withdraws gets a small flat credit for participating, but the bulk of the income score comes from cashing out more than was put in.
Amounts across different assets (USDC, EURC, XLM, and tokenized bonds like CETES, TESOURO, USTRY) are converted to USD using live prices, refreshed every 6 hours.
| Term | What it means |
|---|---|
| participation | A small flat bonus just for having any yield deposit/withdraw history at all, whether or not income has been realized yet. |
| months (Npts) | Number of distinct calendar months in which the wallet realized net-positive income — rewards income spread over time, not one lucky cash-out. |
| net $X realized (Npts) | Total USD withdrawn above total USD deposited, across all yield positions. Scored as a rate relative to how much was deposited, so a small active saver and a large passive one are compared fairly. |
Distribution income
Some wallets receive income a different way: a recurring claim from a mass-distribution / payroll-style contract (e.g. Fundable), rather than depositing and withdrawing from a yield position. A single claim has no deposit side to measure a "return" against, so it can't be scored the same way as yield income — instead it's weighted heavily toward consistency over magnitude. A wallet claiming something every month looks like real, recurring income; a single claim ever looks like a one-time windfall and is scored accordingly low. Claiming activity is deliberately excluded from the breadth/volume/consistency numbers above — passively receiving an allocation doesn't demonstrate protocol sophistication the way actively swapping or depositing does — but it can still qualify a wallet for the activity path on its own if claims span 2 or more distinct months.
| Term | What it means |
|---|---|
| participation | A small flat bonus just for having any claim history at all. |
| months (Npts) | Number of distinct calendar months with a claim — the main driver of this score. |
| $X claimed (Npts) | Total USD value claimed across all distributions — a smaller, secondary factor. |
Incentive rewards
Protocols also pay out reward tokens: AQUA to Aquarius liquidity providers (plus Aquarius gauge rewards, paid in assets like USDC and XLM) and BLND to Blend lenders and backstop depositors, and reward tokens to Phoenix liquidity providers who stake their LP tokens (Phoenix doesn't record the amount of a reward claim, so those count toward the months-claimed factor only, never the dollar one). These are scored as their own signal, and deliberately the smallest of the three income signals (at most 3 points on the lending path and 4 on the activity path). Rewards are incentives, not organic income: they scale with how much a wallet has staked, they are volatile, and some wallets simply rotate between incentive programs. So, as with distribution income, consistency (distinct months with a claim, saturating at 8) counts for more than size (total USD claimed, saturating at $50). Reward tokens are converted to USD with live prices, refreshed every 6 hours. A claim that can't be priced still counts as participation but adds no dollars. Liquidity-provider fee claims are a different thing and are not counted here.
| Term | What it means |
|---|---|
| participation | 1 point for having claimed any reward. |
| months (Npts) | Distinct calendar months with a reward claim — up to 1 point (lending) or 2 (activity). |
| $X in rewards (Npts) | Total USD value of rewards claimed — up to 1 point. |
Account age and classic Stellar history
The score is built from Soroban DeFi activity, which we index from mid-2024. A wallet can have a much longer history than that, with years of ordinary Stellar payments and trades. That history says something real about a wallet, so it earns a small bonus, but only alongside DeFi activity: a wallet with no DeFi history isn't scored on classic history alone.
| Term | What it means |
|---|---|
| age | How long the account has existed: 90 days +1 point, 1 year +2, 2 years +3, 4 years +4. Age is hard to fake, so it carries the most weight here. |
| payments, trades | +1 point for a real classic footprint (1,000 or more payments, or 100 or more trades) that is still active this year. Payments and trades cost almost nothing to create, so volume counts for one point at most. |
The bonus is capped at 5 points on the activity path and 3 on the lending path, where repayment history already carries the score. The data comes from public sources (stellar.expert and Horizon); if neither answers, the wallet is simply scored without the bonus.
A few notes
- Scores are computed live from indexed on-chain history on every lookup — nothing is cached or pre-stored per wallet.
- Looking up a smart-wallet (
C...) address that was self-deployed by its own owner (e.g. a Veil passkey wallet) automatically merges in that owner's directG...address activity too, so the same person isn't scored as two disconnected partial identities. - Very high-activity wallets are capped at 50,000 most-recent events per lookup for performance — this rarely changes the outcome, since the volume, breadth and consistency components already cap out well before that.
- This tool only sees Soroban DeFi activity the indexer has captured (currently Blend, Soroswap, Aquarius, Phoenix, Sushi, DeFindex, Fundable and a growing set of others). Classic Stellar payments, DEX trades and offers aren't scored, apart from the small age bonus above, so it is not a complete picture of a wallet's full on-chain history.
- This is not a regulated credit score and isn't financial advice — it's an experimental measure of on-chain DeFi behavior.
How holdings are calculated
The Holdings card under the score shows what a wallet owns right now — tokens and DeFi positions — priced in US dollars. It is separate from the score: the score looks at history, holdings look at today's balances.
Where the numbers come from
- Balances are read live from the Stellar network every time you look a wallet up (results are reused for about a minute). Nothing is stored per wallet.
- Only Stellar mainnet is read. An address that exists only on the test network shows an empty portfolio.
- The wallet's indexed history is used only to work out which protocols to ask about, so a position the indexer has never seen can be missed.
- Works for any address you paste. It is public chain data, so no signature is needed.
What is counted
| Item | How it is valued |
|---|---|
| Tokens | Balance × price, for tokens we can price (see below). |
| Blend | Supplied and collateral amounts, and borrowed amounts, converted to the underlying asset using the pool's current rates. |
| Aquarius pools | The wallet's share of the pool's reserves (constant-product and stable pools). |
| DeFindex vaults | What the vault shares redeem for in the vault's underlying asset, not the share count. |
| Untangled USDyc II | USDyc shares converted to USDC at the vault's current share price. |
Portfolio value is tokens plus DeFi positions. Debt (what the wallet has borrowed) is shown separately, and Net value is portfolio value minus debt.
Vault and pool amounts are what the shares are worth. A wallet with 240,000 vault shares can show $260,000 because the vault has earned yield since the shares were issued.
How tokens are priced
A token only gets a price if we can be sure which token it is. Prices are matched by contract address, never by name or ticker, so a scam token calling itself "USDC" is never valued at $1.
- Verified list: XLM, USDC, EURC, PYUSD, AQUA, BLND and Etherfuse's CETES, USTRY and TESOURO. Prices refresh every 6 hours.
- Curated market list: other tokens on stellar.expert's curated list, only if they trade at least $100,000 a week and the price is under 48 hours old. A thinly traded token's last price isn't treated as a value.
- Everything else is unpriced: it is listed but not counted in any total.
The tags on each row
| Tag | What it means |
|---|---|
| LP token | The holding is a share of a pool or vault (an Aquarius pool, a DeFindex vault, Untangled USDyc II). |
| Unpriced | We can't price it, so it isn't counted in the totals. |
| Partly priced | One side of a pool can be priced and the other can't. Only the priced side is counted, so the figure shown is a minimum; the real value is higher. |
| Transferable | The wallet can move this holding to another address. |
| Not transferable | The wallet can't move it directly, for example a Blend deposit (it sits inside the pool until withdrawn) or a token whose issuer hasn't authorized the wallet to move it. |
| Transfer unconfirmed | We couldn't confirm either way, usually an unlisted token. |
| Clawback | The token's issuer has the power to reclaim the balance. Worth knowing before relying on it. |
The Transferable total adds up the priced holdings the wallet can actually move. It is what could be handed over or pledged, which can be smaller than portfolio value.
What is not covered yet
- Protocols we can't read yet are named under "Not shown yet" instead of being silently left out.
- Aquarius concentrated-liquidity positions, which are price ranges rather than tokens.
- Pool or vault shares sent to a wallet from elsewhere, if the wallet never interacted with that pool itself.
- Tokens we can't price (listed, but not counted).
Holdings are an estimate for information only. They are not a valuation, an offer of credit, or financial advice.
How the indicative credit line is calculated
After you verify a wallet you can see an indicative credit line and APR under three lending models. It is an estimate from your score and holdings, not an offer: nothing is lent and nothing is committed.
Three lending models
| Model | How the limit is set |
|---|---|
| Secured | From the holdings the wallet could pledge. 75% of the lendable collateral value (see below), minus anything already borrowed. The score doesn't change the limit. |
| Unsecured | From the LCRD score alone, with no collateral. Tier A: $2,500 to $10,000 as the score rises from 67 to 100. Tier B: $250 to $2,500 from 34 to 66. Tier C and wallets with too little history aren't eligible. |
| Score + collateral | The score sets a ceiling (tier A up to $30,000, tier B up to $5,000, tier C up to $500) and the holdings cap it: a better tier may borrow against more of its lendable collateral (100% for A, 85% for B, 60% for C). The lower of the two applies. |
Each model has an overall maximum ($250,000 secured, $10,000 unsecured, $100,000 for score + collateral) and a minimum line of $50 for the models that use collateral.
What counts as collateral
Only holdings the wallet can actually move (marked Transferable in Holdings) and that have a trusted USD price count. Blend deposits, tokens the issuer hasn't authorized the wallet to move, and unpriced tokens are left out. Each kind of asset is then discounted for how risky it is to hold as security:
| Asset | Counted at |
|---|---|
| USDC, PYUSD | 95% of value |
| EURC | 90% |
| Etherfuse bonds (CETES, USTRY, TESOURO) | 75% |
| XLM | 65% |
| AQUA, BLND (reward tokens) | 40% |
| Other tokens priced from stellar.expert's list | 30% |
Pool and vault shares (Aquarius, DeFindex, Untangled) are valued by what they redeem for, discounted again by 10% for exit risk. A token whose issuer can claw it back counts at half. The total after these discounts is the lendable collateral.
How the APR is priced
The APR is built from a base rate, a risk charge from the score, and an adjustment for how well the loan is secured. The card shows each part.
| Part | What it means |
|---|---|
| Base rate | 8%, our assumed cost of funds. |
| Score risk | Falls steadily as the score rises: 20% at a score of 0 down to 3% at 100. |
| Collateral discount | Only part of the score risk applies when there is security: 35% of it for secured, 70% for score + collateral, all of it for unsecured. |
| Unsecured surcharge | +3% for unsecured credit. |
| Volatile collateral | +2% when the collateral's average discount is above 30%, meaning it is mostly volatile assets. |
The final APR is kept between 6% and 36%.
Who sees it, and what it isn't
- Only a wallet that has proven ownership by signing sees its credit line. A pasted address is someone else's public data, and smart-contract wallets can't be verified yet.
- It uses today's balances and prices and moves when they do.
- The figures follow a first-draft policy that hasn't been checked against real loan performance, and may change.
- It is not an offer of credit, a credit decision or financial advice.