OverviewChainsCuratorsVaultsMarketsAssetsMethodology

Methodology

How every number on this terminal is computed, sourced, and qualified. If a figure in a research report links here, this page is the receipt.

1. What this dashboard is

The Morpho Research Terminal is a read-only analytics surface for Morpho and the MetaMorpho vault layer across every chain Morpho is live on. It is built for lending researchers, allocators, and analysts who need defensible numbers with their derivations attached. It is not an operator console: it does not place orders, manage positions, or surface wallet-level activity, and it is not affiliated with Morpho Labs.

The analytical lens treats Morpho as a lending sector in its own right. Chains are its primary components and curators its secondary ones, the way a banking system is read through its regional banks and asset managers. That framing is what separates this dashboard from operator-facing tools like data.morpho.org, which answer "what is happening in this market right now." This dashboard answers "how large is the loan book, who runs it, what does it earn, and how does it sit against the rest of the sector."

The headline metrics follow from that lens. Active loans, borrow interest, and net interest margin lead. Total value locked is shown where it aids comparison with other dashboards, but it never sits at the top of a page.

Per a framing principle articulated by Stani Kulechov in late 2025 and adopted across Datum Labs research dashboards, lending protocols are analyzed by their loan books and interest flows rather than by net asset position (TVL) alone.

2. Data sources

SourceWhat it providesUpdate cadenceAuthentication
Morpho GraphQL API (blue-api.morpho.org)Markets, vaults, curators, asset metadata, historical stateEvery 6 hoursNone
DefiLlama protocol APIProtocol-level TVL, fees, revenue across chainsEvery 6 hoursNone
DefiLlama yields APICompetitor supply and borrow APYsEvery 6 hoursNone
FRED (Federal Reserve Economic Data)3-month T-bill rate for risk-free benchmarkDailyAPI key required

A Cloudflare Worker reads from these sources on a schedule and writes normalized rows to a Neon Postgres database. The web application reads from Neon only. It does not call any external API at render time, so a page load never depends on a third-party service being up.

2.1 Data lineage: from source to figure

Every market and vault number on this terminal traces through four stages. There is no manual entry and no estimation at any step:

  1. 1. Source. The Cloudflare Worker queries the Morpho GraphQL API at blue-api.morpho.org/graphql every six hours, paginating the top markets by supply and the top vaults by assets. The exact fields pulled per market are borrowAssetsUsd, supplyAssetsUsd, collateralAssetsUsd, borrowApy, and supplyApy; per vault, totalAssetsUsd, apy, and fee.
  2. 2. Snapshot. Each field is written verbatim to a dated row in market_state_daily or vault_state_daily. The Worker does not transform the values; it only normalizes types (BigInt to text, fee fraction to basis points) and stamps the UTC date.
  3. 3. Aggregation. At render time the web app reads the latest snapshot per market or vault and applies the formulas in section 3 directly in SQL. The relevant query lives in lib/queries/chains.ts(getChainEconomicsMatrix). Borrow Interest, NIM, and Curator Fees are computed there and nowhere else.
  4. 4. Render. The figure is formatted for display. No rounding occurs before aggregation, so totals reconcile to the source.

2.2 Source authority and accuracy

Is the source authoritative? The Morpho GraphQL API is Morpho Labs’ own indexer, the same backend that serves the official app.morpho.org interface. It is the canonical reference for on-chain Morpho state, not a third-party reconstruction. USD values are Morpho’s own price-feed marks at query time.

Is our stored copy faithful? A standing reconciliation re-fetches the live API and compares it against the stored snapshot the dashboard renders, per chain, for Active Loans, Borrow Interest, NIM, and Curator Fees. At the most recent check the Morpho-wide totals were Active Loans of $3.73B (live and stored agreeing to within 0.1%) and Borrow Interest of roughly $185M annualized. Per-chain Active Loans matched within about 1-2%; that small gap is intraday drift between the last six-hour sync and the live moment, not a methodological difference. The Morpho-wide Active Loans figure also matches Morpho’s publicly reported loan book.

Because the dashboard reads a snapshot rather than calling the API live, displayed figures lag the source by at most one sync interval (six hours). Interest and fee figures, which scale with APY, drift slightly more than balance figures between syncs because APYs move continuously. Multi-day context is therefore more reliable than any single spot reading. The footer of every page shows the exact snapshot timestamp.

3. Metric definitions

3.1 Active loans and related supply-side metrics

Active Loans: Σ borrow_assets_usd across all Morpho markets, latest day.

Total Deposits: Σ supply_assets_usd plus Σ collateral_assets_usd. The gross size of capital locked in the protocol.

Total Supply: Σ supply_assets_usd. The loan-asset side only, excluding collateral.

TVL: Total Deposits minus Active Loans. Matches Morpho’s published dashboard and DefiLlama. Used for sector compatibility; not the primary headline metric on this dashboard.

Utilization: Active Loans divided by Total Deposits.

Available Liquidity: Total Deposits minus Active Loans. Numerically identical to TVL.

3.2 Interest flow metrics

Borrow Interest (Annualized): Σ borrow_assets_usd × min(borrow_apy, 1.0). The dollars borrowers pay per year across the protocol.

Lender Yield (Annualized): Σ supply_assets_usd × min(supply_apy, 1.0). The dollars lenders receive per year.

Curator Fees (Annualized): Σ vault.total_assets_usd × min(vault.apy, 1.0) × vault.fee. The dollars retained by curators per year as performance fees.

Net Interest Margin (NIM): weighted_borrow_apy minus weighted_supply_apy, in basis points. The spread between borrower cost and lender return, defining lending profitability.

3.3 Curator metrics

AUM: vault total_assets_usd, summed per curator. Treats curators as asset managers; AUM is the assets under their curation.

Fee Take Rate: Curator Fees divided by Borrow Interest Captured. The share of borrower-paid yield the curator retains as fees.

Net APY Delivered: weighted average vault net_apy across the curator’s book.

CR3, CR5: combined market share of the top 3 and top 5 curators by AUM. Used to summarize concentration.

HHI (Herfindahl-Hirschman Index): Σ (share)² × 10,000 across all curators. Per US Department of Justice thresholds, HHI above 2,500 indicates a highly concentrated market.

3.4 Risk metrics

LLTV: liquidation loan-to-value ratio per market, set at market creation, immutable.

Risk Score: supply_usd × utilization × LLTV. Used to rank markets by potential blast-radius. Higher scores indicate larger, more fully utilized, higher-LLTV positions.

Bad Debt: max(0, Σ borrow_assets_usd minus Σ supply_assets_usd) per market. Markets where outstanding borrows exceed supplied capital.

Stressed Markets: count of markets above 90% utilization.

3.5 Sector-level metrics

Chain Lending TVL: sum of TVL across every protocol DefiLlama categorizes as ‘Lending’ or ‘CDP’ on that chain. Used as the denominator for Morpho’s per-chain share.

Morpho Share of Lending: Morpho TVL on a chain divided by Chain Lending TVL on that chain.

Real Yield Spread: Morpho’s volume-weighted stablecoin supply APY minus the 3-month T-bill rate from FRED. Available when FRED data is current.

4. Methodological choices

4.1 Carry-forward semantics for lending denominators

Many DefiLlama-indexed protocols update their TVL with a one-day lag, particularly long-tail lenders. A strict snapshot_date GROUP BY produces denominators that systematically understate yesterday’s number. This dashboard computes each protocol’s latest TVL within a trailing seven-day window before aggregating, mirroring the carry-forward semantic standard in TVL analytics.

4.2 Per-protocol latest within seven days for chain competitor stacks

The same logic applies when ranking competitors on a chain. Strict max(snapshot_date) drops protocols whose most recent indexing is older than the freshest reporter. The seven-day window includes Moonwell on Base, Hyperlend on Hyperliquid, and other chain-native lenders that would otherwise be invisible.

4.3 Exclusion of degenerate IRM markets from rate aggregations

Roughly 120 Morpho markets have interest rate models that produce non-economic APYs above 100% under saturated utilization. The BONDUSD/USR market on Ethereum, for example, has shown supply APY of 41,829% during liquidation periods. Including these in weighted averages produces meaningless aggregate rates. This dashboard excludes any market whose supply APY or borrow APY exceeds 100% from all weighted rate computations. The count of excluded markets is surfaced below the relevant charts. The risk surface table deliberately keeps these markets visible because their blast-radius is real even when their reported yields are not.

4.4 SUM grouped by collateral, not MAX per market

The "largest collateral asset" headline KPI computes Σ collateral_assets_usd grouped by collateral asset symbol, then takes the largest. Earlier versions of this query took MAX per market, which produced BONDUSD as the headline largest collateral. BONDUSD is a single phantom market with null collateral data sorted incorrectly via the Postgres NULLS FIRST default. The corrected query produces cbBTC as the largest, at roughly $3B across 30 markets.

4.5 Stani-inspired metric hierarchy

TVL is shown where useful for sector compatibility. It is not the primary headline metric on any page. Active loans, borrow interest, and net interest margin lead instead. This follows the framing principle that lending protocols should be analyzed like banks: by loan book size and interest flows, not by net asset position. The framing is borrowed; the vocabulary stays DeFi-native.

4.6 Asset categorization

Asset class assignment uses an inline classifier with manual mappings for the 100 most prevalent symbols on Morpho. Classes include stablecoin, LST, LRT, BTC, ETH, RWA, and other. PT- prefixed tokens (Pendle principal tokens) inherit the class of their underlying. New symbols above $10 million in supply trigger a warning in the maintenance log and appear in the uncategorized panel on /assets. The full classification list is documented in lib/queries/assets.ts.

5. Known limitations

  • Vault allocation breakdowns infer asset class from the vault deposit asset symbol rather than market-level allocations. True per-market vault exposure lives in vault_allocations_daily, which is empty as of this writing. The backfill is planned but not run.
  • Curator revenue attribution maps roughly 26% of vault performance fees to named curators via fee_recipient_address. The remaining 74% routes to addresses not present in Morpho’s curator metadata and surfaces as "UNATTRIBUTED" in the revenue leaderboard. The total revenue is preserved; the attribution gap is real and reflects incomplete public mappings.
  • Today’s row for chain_lending_tvl_daily may show artificially low values if DefiLlama has not yet indexed long-tail protocols for the current day. The carry-forward semantic in section 4.1 mitigates this, but the most recent 24 hours can still be conservative.
  • Curator fees are realized in vault shares, not USD. The USD-marked revenue figures move with share price. Multi-day averages are more reliable than spot snapshots.
  • FRED T-bill rate data may be empty if the sync key is not configured. The real yield spread KPI falls back to a placeholder when this happens.
  • Bad debt detection is snapshot-based. A market may carry transient bad debt during liquidation processing that resolves within hours but registers in historical event data.

6. Citation

To cite this dashboard in research output, use the plain-text format:

Datum Labs. (2026). Morpho Research Terminal. Retrieved {date} from datumlab.xyz/morpho-terminal/{page}.

For a specific page, append the page slug. For a specific finding, include the snapshot date visible in the page footer.

7. Changelog

  • 2026-05-31Initial release.