What your portfolio is worth at exit prices.
Your dashboard shows paper value — balances times the last price. DeFi Checkup runs your wallet through a deterministic risk engine and returns what it would realistically convert to, the exposures a professional risk desk would refuse, and a proof artifact you can re-run.
Powered by SPA RiskDesk. Every finding comes from a published, versioned rule set — where data is insufficient, the engine says so instead of guessing.
- Educational risk analysis
- No custody
- No execution
- No investment advice
- Privacy by design
The problem
Your tracker shows balances. It does not show risk.
Paper value is an optimist. It assumes deep liquidity, no counterparty risk, and that nothing changes on the way out. A real risk desk asks harder questions — these are the ones trackers skip.
Paper value ≠ exit value
Balance × last price ignores slippage, thin pools, and stress conditions. What a position shows and what it converts to can differ materially.
Hidden approvals
Standing token approvals — often unlimited, often stale — are a permission surface most owners never revisit. They do not appear in a portfolio total.
Bridged & wrapped exposure
A wrapped asset carries the risk of the bridge that minted it. Trackers price it like the canonical asset; the counterparty risk is invisible in the number.
Silent concentration
A single asset, chain, or protocol can dominate a portfolio without any flag. Concentration is a structural risk that a balance view renders as just another row.
How it works
Three steps, one deterministic pass.
No account, no wallet connection, no signing. You submit a read-only reference; the engine does the rest, and the output is reproducible from a hashed snapshot.
Submit a reference
Paste a wallet address (0x…), an ENS name, or a DeBank profile URL. Read-only, from publicly available onchain data. Invalid input is refused with a coded reason — nothing is stored.
The engine runs the policy
SPA RiskDesk evaluates the snapshot against a versioned RiskPolicy: concentration, approvals, bridges, stablecoins, leverage, Exit-NAV. Every verdict is a rule outcome, never a language-model opinion.
You get a verifiable memo
A structured report in fixed section order: coded refusals, Exit-NAV ranges with confidence, and a proof hash. Re-run the same snapshot under the same policy and the hashes match.
What you get
A structured risk memo, not an AI essay.
Every section is produced by a named engine component under a published RiskPolicy version. The explanation layer only rephrases what the engine already decided — it never adds a number or a verdict.
Health Score
A composite score with an explicit confidence level and data-coverage percentage — always a band, never a single decimal pretending to precision.
with confidence levelExit-NAV
Paper value versus an estimated exit range under current and stressed liquidity. Always a range with stated confidence — never a point estimate, never a price prediction.
range + stressApprovals Risk
Standing approvals enumerated and classified: unlimited allowances, unknown or flagged spenders, and stale permissions surfaced with per-approval severity.
permission surfaceBridge Risk
Bridged and wrapped assets mapped to their bridge and risk class, so counterparty exposure a tracker prices as canonical is made visible.
counterpartyYield Quality
Where the yield actually comes from — fees, lending, emissions, or rebase — with a sustainability flag and a classification confidence per position.
source-typedRefusal Log
What SPA RiskPolicy would flag or refuse, each with a machine-readable reason code, the policy clause it cites, and the exact values that triggered it.
coded reasonsWhy trust it
Verifiable beats plausible.
A generative wallet report reads well and cannot be checked. This is the opposite by construction: the risk verdict is deterministic, and the AI only explains it.
Deterministic, not generative
Verdicts come from versioned rules, not a language model. The same input under the same policy yields the same output — every time.
Reproducible from a hash
Each report ships an input-snapshot hash, methodology version, RiskPolicy version, and output hash. Re-run it and the hashes reconcile.
Refusal-first
Where data is insufficient, the engine refuses to score rather than filling the gap with a guess. A blank is an honest answer here.
Open methodology
The RiskPolicy is published and versioned with a changelog. You can read the clause behind any refusal — the reasoning is not a black box.
Sample report
What the memo looks like.
Generated deterministically by SPA RiskDesk from a synthetic fixture wallet. Same engine, same section order, same proof block as a real report — no wallet is referenced.
Paper value
$100,000.00
Exit-NAV (current)
$99,500.00 – $99,900.00
Under stress
$97,150.00 – $99,075.00
Refusals fired
1
Confidence
high
RiskPolicy
v0.6.0
Exit-NAV — paper value vs. estimated exit ranges
Axis zoomed to the range band; bars render ranges only — never a point estimate.
One refusal from this snapshot:
REF-CONC-001would refuseSPA RiskPolicy 0.6.0 would refuse this setup because 85.00% of portfolio paper value sits in a single non-stablecoin asset (ETH), above the policy maximum of 80.00%.
Synthetic fixture data. The full report adds assumptions, data-gaps lists, and the reproducible proof hashes.