Vault metrics

The numbers that tell you whether a vault is in good shape, where to find them, and what each reading should prompt you to do. For the push side of monitoring (alerts on threshold breaches), see Subscribe to webhooks.

This guide assumes you're familiar with what each metric means: for the formulas and definitions, see Vault health.

ℹ️

Some metrics need a fresh oracle report. Total Value, Health Factor, stETH minted, APR history, carry spread, accrued fee, and feesToSettle are all derived from the latest oracle report. If the report is stale, the numbers lag real on-chain state. Write flows (deposit / mint / burn / rebalance) prompt an Update report transaction automatically; for read-only monitoring, refresh the report explicitly. Concept: Staking vaults → Periodic updates.

At a glance: the Vaults list

The Vaults page is the home view for monitoring. Each row condenses a vault into six columns:

ColumnWhat it shows
Vault name + addressIdentity
Vault HealthStatus badge: Healthy / Warning / At risk / Disconnected / Disconnecting. Derived from the health factor (and vault-hub connection status): see thresholds below.
Health factorThe current percentage. The single most important number on this row.
Total valueThe vault's total assets, in ETH (with USD sub-line).
stETH mintedThe vault's outstanding stETH liability.
OperatorThe node operator running validators for this vault.

Health badge thresholds

The badge is computed from the health factor with these bands:

RangeBadgeWhat it means
HF ≥ 125%Healthy (green)Comfortable buffer; routine operations are safe.
100% ≤ HF < 125%Warning (yellow)Margin is thin. Avoid new mints; consider burning or adding ETH.
HF < 100%At risk (red)Below the forced-rebalance threshold. The vault is eligible to be force-rebalanced by anyone. Act now: see Rebalance a vault.
Vault hub connection ≠ connectedDisconnected / Disconnecting (grey / amber)Health factor not applicable. Only voluntary disconnect, withdrawal, and reconnect operations are allowed.
🖱️

to scan vault health in the UI: open the Vaults page. Sort by Health factor ascending to surface anything close to the warning band first.

</> to scan vault health via the API: list vaults with listLidoStakingContracts for identities, then fetch per-vault detail with getLidoStakingContracts: healthFactor and vaultData are on the detail response.

Per-vault detail: the vault page

Clicking a row opens the vault detail page, which adds two reading-only signals worth checking regularly: APR and the obligations breakdown.

Net APR and carry spread

Two related performance metrics, both 7-day moving averages:

  • Net APR: estimated yearly return after node-operator fee and Lido protocol fee, not adjusted for stETH rebase cost. The headline yield.
  • Carry spread: the yield delta versus the stETH benchmark. Positive carry means the vault is outperforming a stETH position; negative carry means it's underperforming and the liability is rebasing faster than the vault earns.

Both surface as N/A on newly created vaults until enough oracle history exists (typically a few days).

🖱️

to read APR and carry spread in the UI: the Net APR card on the vault detail page shows both, with a tooltip explaining the methodology.

</> to read APR and carry spread via the API: see getLidoStakingContracts. The response includes an apr object with history (up to 7 oracle-report pairs) and averaged netAPR / carrySpreadAPR values across the window.

Fees and obligations

The vault detail page also surfaces what the vault owes:

  • Accrued fee (vaultData.accruedFee): node-operator fees accumulated against the vault, claimable via disburse-fee.
  • Fees to settle (vaultData.obligations.feesToSettle): outstanding Lido protocol fees owed to the treasury, settled via settle-lido-fees.

Both are a silent drag on Total Value at report time. Settle them on a recurring schedule rather than letting them accumulate: see Settle and disburse fees.

Reserve ratio and minting capacity

  • Reserve ratio (reserveRatioBP): the share of the vault's value the protocol holds back as reserve. Sets the upper bound on how much stETH the vault can mint.
  • Remaining minting capacity (vaultData.remainingMintingCapacityStETH): how much more stETH the vault could mint right now. Watching this trend is a leading indicator: if it shrinks while you're not minting, validators are underperforming and Total Value is drifting down.

What each reading should tell you to do

A quick lookup of "I see X: what do I do?":

ReadingWhat to do
Health Factor ≥ 125%Nothing: routine operations are safe.
Health Factor 100–125%Don't mint more. Consider burning stETH or topping up the vault to rebuild the buffer.
Health Factor < 100%Rebalance the vault yourself: same on-chain action as a forced rebalance, but you pick the timing.
Carry spread negative for several reports in a rowValidator performance is below the stETH benchmark. Check the Validators tab for slashed or under-performing validators.
Net APR drops sharplyA validator was slashed, exited unexpectedly, or fees jumped. Cross-reference with the Validators tab.
Accrued fee or feesToSettle is largeSettle / disburse now: see Settle and disburse fees.
Vault Hub connection = Disconnecting or DisconnectedMost write operations are blocked. Either complete the disconnect intentionally or reconnect to the vault hub.

Automated monitoring

The metrics above are pull-shaped: you (or your client) ask, the API returns. For push-shaped alerts when a threshold is crossed, use webhooks. See Subscribe to webhooks for the setup.

A reasonable monitoring loop:

  1. Subscribe to vault-health webhook events for push alerts on threshold crossings.
  2. Run a recurring pull (every few minutes) against getLidoStakingContracts for each vault you own, and check healthFactor, apr.averagedCarrySpreadAPR, and vaultData.obligations.
  3. Alert your team when the values cross your own internal thresholds: typically tighter than the protocol's 100% floor (e.g. alert at 115%, act by 110%).

Related