Fees
Level: Beginner · Read time: 7 min
Not every vault applies every fee. Always read the individual vault page.
Fee menu
| Fee | Range | Notes |
|---|---|---|
| Deposit fee | none | - |
| Withdrawal fee | none | - |
| Cooldown exit fee | 0-1% of position | Only to bypass a cooldown early; decays linearly toward expiry. |
| Management fee | 0-10% / yr of AUM | Accrues continuously with time; standard rate 1.5% on most vaults. |
| Performance fee | 0-30% of net positive yield | Charged only when strategies produce net gains after losses. |
| Hurdle on performance fee | 0-30% of net positive yield | Fee applies only to yield above a target return: fixed APY, fixed APR (simple) or dynamic (tracks an external rate). |
How fees are paid
Fees are paid in vault shares, minted to a fee recipient. Existing holders are diluted proportionally, so the cost appears directly in the share price. Each accrual emits on-chain events (indexed by Concrete's subgraph), so the impact is observable.
Order of operations on each accrual
Worked illustration (hypothetical numbers)
Vault: 1,000,000 assets, 1,000,000 shares. In 30 days it earns 8,000 gross. Management 1.5%/yr, performance 10%, no hurdle.
$ python examples/python/fee_dilution_model.py
share price before fees 1.008000, after fees 1.005958, fee shares 2,029.66Holders see a net share-price gain of ~0.596% instead of 0.8% for the month: the difference went to fee recipients as newly minted shares. (Teaching model - the contract source is private, so exact rounding may differ.)
Where fees go (technical)
Recipient addresses are set by the factory owner. Each usually points to a TwoWayFeeSplitter that divides fees between a mainRecipient (commonly the curator) and a secondaryRecipient (commonly the protocol) by a basis-point split. Anyone can call distributeFees(vault) to flush accrued fees. See Architecture.
Next: 07 · Points.