Skip to main content

Vault Metrics

Overview​

Vault metrics apply to vaults that follow the ERC-4626 tokenized vault standard (or a close variant of it), which currently includes morpho_vaults_v1. They do not apply to lending-pool protocols such as aave_v3. share_price_ntv (and its _mean form) is a property of any ERC-4626-style vault: how much a single share is worth in terms of the vault's underlying asset. fee_performance_pct (and its _mean form) is not part of the ERC-4626 standard itself, so it applies specifically to vault protocols, like morpho_vaults_v1, that charge such a fee, rather than to ERC-4626 vaults generally. They are part of the Protocol Metrics family. See that page for the shared entity model (protocol, chain, market), the beginning-of-interval timestamp convention, and for what an instantaneous value versus a _mean value represents at each frequency.

At a Glance​

Data typeEntitiesFrequency / cadenceUnitPrimary endpointCoverage
Vault share price and performance feeVault protocol markets (currently morpho_vaults_v1 only)1d and 1mNative units per share (share price) or percent (fee)/timeseries/protocol-metricscoming soon....

Metrics​

MetricDescriptionFrequency
share_price_ntvThe value of one vault share. This multiplier can be used to convert assets to shares and vice versa.1d, 1m
share_price_ntv_meanThe mean share_price_ntv value over the time interval.1d, 1m
fee_performance_pctThe percentage of the vault's performance (yield generated) taken as a fee, closing value for the interval.1d, 1m
fee_performance_pct_meanThe mean fee_performance_pct value over the time interval.1d, 1m
info

Conventions.

  • Metric values are returned as JSON strings to preserve precision.
  • share_price_ntv is denominated in the vault's underlying asset (for example USDC for a USDC vault), not in U.S. dollars directly, so a share price near 1.0 on a stablecoin vault indicates the underlying asset itself is close to par, not that the vault has returned nothing.
  • fee_performance_pct is already scaled to percent (for example 10 means 10%).

Methodology​

See Protocol Metrics: Frequency and the daily mean for how the instantaneous and _mean forms differ at each frequency.

Share price​

A vault issues shares against deposits of its underlying asset, following the ERC-4626 tokenized vault standard (or a close variant of it). share_price_ntv is the current exchange rate between one share and the underlying asset, equivalent to the ERC-4626 convertToAssets view for a single share, and it rises over time as the vault's strategies earn yield (net of fees). This is how a vault depositor's return is expressed without needing a separate rebasing balance.

Performance fee​

fee_performance_pct is the fee the vault takes on the yield it generates, set by the vault's curator. This is not a property of the ERC-4626 standard itself: ERC-4626 defines how shares convert to and from the underlying asset, but says nothing about fees, so whether a vault charges a performance fee, and how it is defined, is up to the individual vault protocol rather than the standard.

Accessing the Data​

Python Client
import os
from coinmetrics.api_client import CoinMetricsClient

client = CoinMetricsClient(os.environ["CM_API_KEY"])

df = client.get_protocol_metrics(
protocols="morpho_vaults_v1",
markets="ausdc",
metrics=["share_price_ntv", "share_price_ntv_mean", "fee_performance_pct"],
frequency="1d",
).to_dataframe()
Shell
curl --compressed "https://api.coinmetrics.io/v4/timeseries/protocol-metrics?protocols=morpho_vaults_v1&markets=ausdc&metrics=share_price_ntv,share_price_ntv_mean,fee_performance_pct&frequency=1d&page_size=10000&api_key=$CM_API_KEY"
Python
import os, requests

response = requests.get(
"https://api.coinmetrics.io/v4/timeseries/protocol-metrics",
params={"protocols": "morpho_vaults_v1", "markets": "ausdc",
"metrics": "share_price_ntv,share_price_ntv_mean,fee_performance_pct",
"frequency": "1d", "page_size": 10000, "api_key": os.environ["CM_API_KEY"]},
).json()
print(response)

Full parameter reference: see the API Reference for /timeseries/protocol-metrics.

Examples​

The example below is a live pull, returned as JSON strings, and changes on each pull.

Example: vault share price and fee​

share_price_ntv, share_price_ntv_mean, and fee_performance_pct for a Morpho vault on Ethereum (browser):

[
{
"protocol": "morpho_vaults_v1",
"market": "ausdc",
"chain": "ethereum",
"time": "2026-08-07T00:00:00.000000000Z",
"fee_performance_pct": "10",
"share_price_ntv": "1.105472",
"share_price_ntv_mean": "1.105362704741980423"
},
{
"protocol": "morpho_vaults_v1",
"market": "ausdc",
"chain": "ethereum",
"time": "2026-08-08T00:00:00.000000000Z",
"fee_performance_pct": "10",
"share_price_ntv": "1.105669",
"share_price_ntv_mean": "1.10556758102822019"
},
{
"protocol": "morpho_vaults_v1",
"market": "ausdc",
"chain": "ethereum",
"time": "2026-08-09T00:00:00.000000000Z",
"fee_performance_pct": "10",
"share_price_ntv": "1.105856",
"share_price_ntv_mean": "1.105763864725550336"
}
]

Coverage​

See Protocol Metrics: Coverage for how to check current availability against the catalog directly. As of this writing, vault metrics are only available for morpho_vaults_v1 markets.

  • Protocol Metrics: the parent page, with the shared entity model and frequency semantics.
  • Rates and Yield: the lending-pool equivalent of yield, for protocols like aave_v3 that are not vaults.