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 type | Entities | Frequency / cadence | Unit | Primary endpoint | Coverage |
|---|---|---|---|---|---|
| Vault share price and performance fee | Vault protocol markets (currently morpho_vaults_v1 only) | 1d and 1m | Native units per share (share price) or percent (fee) | /timeseries/protocol-metrics | coming soon.... |
Metrics
| Metric | Description | Frequency |
|---|---|---|
share_price_ntv | The value of one vault share. This multiplier can be used to convert assets to shares and vice versa. | 1d, 1m |
share_price_ntv_mean | The mean share_price_ntv value over the time interval. | 1d, 1m |
fee_performance_pct | The percentage of the vault's performance (yield generated) taken as a fee, closing value for the interval. | 1d, 1m |
fee_performance_pct_mean | The mean fee_performance_pct value over the time interval. | 1d, 1m |
Conventions.
- Metric values are returned as JSON strings to preserve precision.
share_price_ntvis denominated in the vault's underlying asset (for example USDC for a USDC vault), not in U.S. dollars directly, so a share price near1.0on a stablecoin vault indicates the underlying asset itself is close to par, not that the vault has returned nothing.fee_performance_pctis already scaled to percent (for example10means 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.
Related
- 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_v3that are not vaults.