APY Breakdown
See how yield flows from Morpho markets through the fee wrapper to end users, with fees deducted at each layer.
Calculate APY
Enter a fee wrapper address to see the full yield breakdown
The deployed fee wrapper to analyze
Include Rewards
Rewards pass through to depositors
Note: Newly deployed fee wrappers may take up to 5 minutes to appear in the Morpho API. If you see "No results", please wait and try again.
Integration Guide
Exact query and formulas used in this page so partners can integrate the same post-fee APY logic directly. No on-chain reads needed — all data comes from the API.
1) Query the Morpho API
Endpoint: POST https://api.morpho.org/graphql
Supported chain IDs: 1, 8453, 42161, 10, 137, 59144
Use the fee wrapper address directly (not the underlying vault address).
query FeeWrapperAPY($feeWrapper: String!, $chainId: Int!) {
feeWrapper: vaultV2ByAddress(address: $feeWrapper, chainId: $chainId) {
avgNetApy
avgNetApyExcludingRewards
performanceFee
managementFee
name
symbol
rewards {
supplyApr
asset { address, symbol }
}
adapters {
items {
type
address
... on MorphoVaultV2Adapter {
innerVault {
address
name
avgNetApyExcludingRewards
performanceFee
managementFee
rewards {
supplyApr
asset { address, symbol }
}
}
}
}
}
}
}2) Compute Net APY
// Primary approach — use the fee wrapper's own fields directly:
// netApyExclRewards = feeWrapper.avgNetApyExcludingRewards
// rewardsApr = sum(innerVault.rewards[].supplyApr)
// netApy = netApyExclRewards + rewardsApr
// Advanced — manual breakdown from inner vault post-fee data:
// adapterYield = innerVault.avgNetApyExcludingRewards (already post inner vault fees)
// Rewards = innerVault.rewards[].supplyApr (pass through to depositors)
// Back-calculate gross for display:
// preFee = adapterYield + innerVault.managementFee
// grossApy = preFee > 0 ? preFee / (1 - innerVault.performanceFee) : preFee
wrapperPerfFeeDeduction = max(adapterYield, 0) * feeWrapper.performanceFee
nativeYield = adapterYield - wrapperPerfFeeDeduction - feeWrapper.managementFee
rewardsApr = sum(innerVault.rewards[].supplyApr)
netApy = nativeYield + rewardsApravgNetApyExcludingRewards is the post-fee yield (after performance and management fees). For simple integrations, use feeWrapper.avgNetApyExcludingRewards directly. For a full breakdown, use the inner vault's avgNetApyExcludingRewards and back-calculate the gross. Rewards are sourced from the inner vault (innerVault.rewards[]) — fee wrappers never have rewards in the API; rewards are distributed via Merkl based on the inner vault's market positions.
3) Notes on API fields
avgNetApyExcludingRewards is the recommended field — it reflects yield after vault fees but before external rewards. The deprecated avgApy (gross, pre-fee) should no longer be used.
The fee wrapper also exposes avgNetApy (includes rewards) and avgNetApyExcludingRewards directly. For newly deployed fee wrappers, these fields may be noisy or zero until sufficient history accumulates.