Overview
Scope: every score is computed per chain, from the Morpho markets that exist on whichever chain your wallet is connected to. Switching chains recomputes everything. The Fear & Greed Index is the one exception.Data sources
| Source | Used for |
|---|---|
| Morpho Blue contracts (wagmi/viem) | Market state: oracle, LLTV, totalAssets, totalBorrowAssets |
| Morpho REST API | Bad debt fields, market metadata, 30-day historical APY |
| On-chain oracles + CoinGecko fallback | Token prices for borrower health-factor calculation |
| alternative.me Fear & Greed | Global crypto sentiment widget (external) |
Update cadence
Data refreshes every 5 minutes. The “Updated” pill in the page header reflects the wall-clock age of the last fetch. Important: every score on the Risk Dashboard is a heuristic for surfacing patterns. None of them are predictions, recommendations, or a substitute for reading market parameters yourself. Always verify before supplying, borrowing, or moving capital.Page Header Metrics
Top-right of the dashboard. Four compact pills, scoped to the connected chain.| Pill | Definition |
|---|---|
| Markets | Count of Morpho Blue markets with at least one supply position. Excludes empty markets. |
| TVL | Sum of totalMarketSize (USD) across those markets. Computed from on-chain totalAssets × loan-asset oracle price. |
| Flagged | Sum of totalMarketSize (USD) for markets classified Medium or High risk. See Risk Tier Classification below. |
| Updated | Wall-clock age of the last data fetch (e.g. “32 sec ago”). Refreshes every 5 minutes. |
Flagged TVL Banner
The wide banner near the top showing total flagged USD, percentage of chain TVL, and a Low / Medium / High breakdown. Flagged TVL is the USD sum of all markets whereriskLevel !== "low". The breakdown chips show the same USD totals split by tier.
The banner is not a liquidation predictor. A flagged market can remain healthy for months; an unflagged market can still suffer liquidations if its collateral price moves fast. The signal is “this market has structural properties that warrant extra attention,” not “this market is about to break.”
Risk Tier Classification
Every market gets one of three tiers. The full classification logic (defined insrc/hooks/useMorphoMarkets.ts):
- Low risk: large, mature market with a conservative LLTV. The kind of market most users supply into.
- Medium risk: mid-sized or younger market, or a slightly aggressive LLTV. Workable for experienced users who understand the parameters.
- High risk: small or very new market, or aggressive LLTV. Treat as experimental.
Systemic Risk Score
The big gauge near the top, 0 to 100. A TVL-weighted composite of five signals across all markets on the connected chain.Formula
Interpretation bands
| Range | Reading |
|---|---|
| 0 to 32 | Healthy. Market parameters are spread out, oracles diversified, rates stable. |
| 33 to 65 | Elevated. At least one component is straining. Check which one in the gauge breakdown. |
| 66 to 100 | Stressed. Multiple components co-flag. Borrowing or supplying without reading market parameters is unwise. |
Component: Volatility (weight 25%)
TVL-weighted standard deviation ofborrowRate across markets, rescaled so 5 percentage-point std = 100.
Component: Utilization Stress (weight 20%)
TVL-weighted average of utilization across markets.Component: Liquidation Clustering (weight 20%)
Inverse TVL-weighted std-dev of thelltv - utilization buffer across at-risk markets (risk tier ≠ low). Rescaled so 10 pp std = 0 risk, 0 std = 100 risk.
Component: Liquidity Concentration (weight 20%)
Share of total chain TVL held by the top 3 markets.Component: Oracle Dependency (weight 15%)
Share of total chain TVL secured by the single most-used oracle address.Fear & Greed Widget (External)
This widget shows the alternative.me Crypto Fear & Greed Index, updated daily. It reflects global crypto market sentiment, not Dynamo or Morpho specifically. Same value regardless of which chain you’re on. The score combines volatility, market momentum and volume, social media, dominance, and Google Trends signals. Values 0 to 24 read as Extreme Fear, 25 to 49 Fear, 50 to 54 Neutral, 55 to 74 Greed, 75 to 100 Extreme Greed. We display it as a complement to the Morpho-specific Protocol Heat below.Protocol Heat (Internal Sentiment)
Dynamo’s own 0-to-100 sentiment score, computed from the markets on the connected chain only. Switching chains changes this; it reflects Morpho activity on that specific chain.Formula
Labels
| Range | Label |
|---|---|
| 0 to 19 | Extreme Fear |
| 20 to 39 | Fear |
| 40 to 59 | Neutral |
| 60 to 79 | Greed |
| 80 to 100 | Extreme Greed |
Liquidations Panel (Per-Market)
When you select a market in the per-market section, four numbers are shown.LLTV (Liquidation Loan-to-Value)
Pulled directly from the Morpho Blue market struct as a percentage. The maximum borrow position size relative to collateral value before liquidation is allowed.Liquidation Penalty (LIF)
Computed from LLTV using the Morpho Blue Liquidation Incentive Factor formula:| LLTV | Penalty |
|---|---|
| 86% | 4.38% |
| 91.5% | 2.62% |
| 96.5% | 1.06% |
Realized Bad Debt
Cumulative bad debt that has been written off and socialized across the market’s lenders. Pulled from Morpho API fieldMarket.realizedBadDebt { underlying, usd }.
Example: if a liquidation fails to fully cover a borrower’s debt (collateral insufficient even after the penalty), the protocol absorbs the gap. That gap, written off the books, accumulates into Realized Bad Debt.
Healthy markets show $0 here. Non-zero realized bad debt is a signal that liquidations have happened and not been fully covered in the past.
Unrealized Bad Debt
Currently underwater debt that is still on the books: a borrower’s collateral is worth less than what they owe, but the loss has not been written off yet. Pulled from Morpho API fieldMarket.badDebt { underlying, usd }.
Unrealized rising without realization usually means liquidators have not yet stepped in (either because penalties are insufficient, gas costs exceed the bonus, or liquidator bots are missing the chain).
Health Factor (Per-Position)
For each borrower position on a selected market, Health Factor is computed on-chain at oracle price:| Health Factor | Reading |
|---|---|
| HF > 2.0 | Healthy buffer |
| 1.5 to 2.0 | Moderate buffer |
| 1.0 to 1.5 | Stress zone (small price move could trigger liquidation) |
| HF ≤ 1.0 | Liquidatable |
Per-Market Analysis Metrics
In the “Drill Down” section, after selecting a market, the dashboard shows the following per-market signals.30-Day APY Trend
A sparkline of borrow APY over the trailing 30 days, sourced from Morpho APIhistoricalState.borrowRate. Values are rescaled to 0-100% if the API returns 0-1 fractions.
Percentage-Point Change
Absolute change between the first and last points of the 30-day window:APY Anomaly (z-score)
Z-score of the latest APY observation against the trailing window (excluding the latest):30-Day Trend Direction
Up, down, or flat between the first and last points:Liquidation Clusters
Groups of borrowers whose health factors fall within ±5% of each other. Each cluster shows count, average HF, and total collateral exposure.Stress Zone Percentage
Share of valid borrower positions with HF < 1.5:Actionable Insights
The dashboard surfaces up to 5 ranked insights from a five-rule library, sorted by severity (critical > warning > info) then by exposure size.| # | Rule | Severity | Trigger |
|---|---|---|---|
| 1 | Borrow pressure rising | Warning | Market has utilization > 85% AND borrow APY > 4%. |
| 2 | Liquidation cluster forming | Critical | Selected market has a cluster with count ≥ 3 AND avgHF < 1.3. |
| 3 | Oracle concentration risk | Critical | Top single oracle address secures > 50% of TVL on the chain. |
| 4 | Safer alternative available | Info | Highest-TVL high-risk market has a sibling low-risk market with the same collateral/loan pair. |
| 5 | APY anomaly | Warning | Selected market has |z-score| > 2 (latest APY > 2σ from 30d mean). |
Data Cadence & Freshness
| Metric | Refresh | Source |
|---|---|---|
| Markets list, TVL, utilization, LLTV | 5 min | Morpho Blue contracts via wagmi/viem |
| Bad debt, market metadata, historical APY | 5 min | Morpho REST API |
| Borrower health factors, oracle prices | 5 min | On-chain reads |
| Fear & Greed (external) | Daily | alternative.me API |
What This Dashboard Is Not
- Not a liquidation predictor. Flagged TVL and at-risk tier classification are structural heuristics, not price models. We do not estimate the probability that a specific market will be liquidated.
- Not financial advice. Every score is a pattern-surfacing tool. Read the underlying market parameters (LLTV, oracle, curator, liquidity) before transacting.
- Not exhaustive of all on-chain risk. Smart-contract bugs, oracle manipulation, governance attacks, and cross-protocol composability risks are not captured by any score on this page.
Glossary
| Term | Definition |
|---|---|
| LLTV | Liquidation Loan-to-Value. The maximum debt position size relative to collateral value before liquidation is allowed. |
| Health Factor (HF) | Ratio of max-allowed-borrow to actual-borrow. HF > 1 = healthy; HF ≤ 1 = liquidatable. |
| Utilization | totalBorrowAssets / totalAssets. The share of supplied capital currently borrowed. |
| TVL | Total Value Locked. Sum of totalAssets × loan-asset price, in USD. |
| Bad Debt | Debt position whose collateral has dropped below the owed amount. Unrealized = still on books; Realized = written off and socialized to lenders. |
| Oracle | The price feed contract Morpho consults to value collateral. Each market specifies its own oracle address. |
| LIF | Liquidation Incentive Factor. The bonus liquidators receive for closing underwater positions. Penalty = (LIF − 1) × 100%. |
src/lib/risk.ts, src/hooks/useRiskMetrics.ts, src/hooks/useMarketRiskAnalysis.ts, src/hooks/useActionableInsights.ts, and src/pages/RiskDashboard.tsx. The implementation is the spec; this page is its translation into plain language.