How fees work across LayerCover's two fund types — Standard and Tranched.
A Standard Fund is a vanilla Morpho V2 vault, which exposes two native fee slots — a management fee (annual rate on TVL) and a performance fee (rate on positive yield). LayerCover uses the management slot; the performance slot stays free for the curator.
When you deploy a Standard Fund through the LayerCover curator console, we program the vault with:
managementFee = 25 bps (0.25% per year on TVL)managementFeeRecipient = LayerCover treasuryThe 0.25% pays for the platform LayerCover provides around the vault:
The curator owns the vault, so the management fee config isn't locked. Either field can be changed via the standard Morpho V2 timelocked setter path (setManagementFee / setManagementFeeRecipient).
The cost of changing it is loss of LayerCover tooling: a vault whose management fee config drifts from the LayerCover spec is filtered out of the marketplace listing and the curator console. The vault keeps working as a Morpho V2 vault, depositors and integrations that interact with it directly are unaffected.
LayerCover takes a cut of positive yield at the tranche level. The default rate is 5% and the hard cap is 20% (MAX_PERFORMANCE_FEE_BPS). The fee is only charged on gains.
Both controls sit on the metavault and are gated by PROTOCOL_ROLE:
setPerformanceFeeRate(uint256 bps) updates the rate. Reverts above MAX_PERFORMANCE_FEE_BPS.setFeeRecipient(address) redirects future mints. Already-minted shares stay with whoever holds them.When someone other than the notice holder executes a matured withdrawal, they earn 5 bps of the withdrawn assets (KEEPER_FEE_BPS). The notice holder pays nothing if they execute themselves.
The fee comes out of the withdrawing LP's own redemption proceeds. Other LPs in the vault are unaffected: the keeper splits one underlying withdrawal into two payouts (the LP gets the bulk, the keeper gets the bps slice). NAV, share prices, and the leverage cap don't move on a keeper-cranked execution any more than they would on a self-execution.
The fee pays bots to push matured notices through promptly. Without that, an LP could file a notice in calm conditions, sit on it matured, and exit on demand the moment a future loss became visible. The keeper market plus 3-day auto-expiry (NOTICE_EXECUTION_WINDOW) close that window. If keeperRestricted is on, only PROTOCOL_ROLE holders can crank on behalf of someone else. The fee flows to them, the guarantee is unchanged.
| Fee | Default | Cap | Paid by | Paid to | Configured at |
|---|---|---|---|---|---|
| Protocol fee | 5% of gains | 20% of gains | The tranche pool (mint dilution to junior fee recipient) | LayerCover (or whoever PROTOCOL_ROLE points at) | setPerformanceFeeRate / setFeeRecipient |
| Curator fee | curator's choice | curator's choice | LayerCover's underlying-vault share price | The curator | Morpho Curator UI |
| Withdrawal fee | 5 bps (0 on self-exec) | 5 bps | The withdrawing LP | The keeper (msg.sender) | Hard-coded constant |