Fees and Performance
How Curator Fees Work
Fee Mechanics
Oblivion uses share dilution for fee collection. No assets are removed from the vault. Instead, new shares are minted to the fee recipients (curator + protocol), slightly diluting existing shareholders. This is the same model used by traditional ETFs.
Your Fee Revenue
The cadence you chose at creation sets a base fee. You may price above it, up to 1.50% a year, and you may lower it back to the base at any time.
| Cadence | Base fee on AUM | Protocol floor | Your share at the base |
|---|---|---|---|
| Weekly | 0.90% | 0.450% | 0.450% |
| Monthly | 0.75% | 0.375% | 0.375% |
| Quarterly | 0.50% | 0.250% | 0.250% |
The protocol takes the greater of its floor and 30% of whatever you charge. The floor is half the cadence base and does not move when you raise your fee, so every basis point above the crossover is split 30/70 in your favour — and below the crossover you keep the increase outright.
On monthly cadence the floor binds until 1.25%, so raising from the 0.75% base to 1.25% goes entirely to you: the protocol still receives its 0.375% and you go from 0.375% to 0.875%. Past that the 30% cut takes over.
Your share is derived, never set. It is a function of your fee and your cadence, computed fresh every time fees are collected, so there is no field to negotiate and no vault can be created that pays the treasury nothing. If the split were yours to choose, every curator would be forced to route the protocol a rounding error to stay competitive.
Example: a monthly vault holding $10M at the 0.75% base pays $75,000 a year, of which you receive $37,500. Raise the fee to 1.25% and the vault pays $125,000 — the protocol still takes $37,500 and you receive $87,500.
Worth sizing honestly before committing. Running a vault has fixed costs — keeper transactions, rebalance gas, swap fees — and at low TVL the management fee does not cover them. This is a business at scale, not at launch.
Changing Your Fee
Call set_management_fee with the new rate.
- Lowering it takes effect immediately. A cut cannot harm a depositor, and making you wait would only keep them paying more.
- Raising it waits seven days. The new rate is queued and anyone can apply it once the notice period has run. Depositors who dislike the new price have that week to withdraw at the old one.
- Lowering your fee also cancels any queued raise, so a cut cannot be used to slip an earlier raise past depositors.
You cannot price below your cadence base — under it the protocol's floor would exceed the whole fee — nor above the 1.50% cap.
Performance Fee
You may also set a performance fee at creation: a share of gains, up to 10%, charged only when the vault reaches a new high. It defaults to 0 and most vaults will leave it there.
It is immutable after creation. You cannot raise it later, which is deliberate — otherwise a vault could gather deposits at 0% and raise it once the money is in.
High-water mark. The fee is charged only on gains above the highest point the vault has ever been charged for. If the vault drops 20% and climbs back, you earn nothing on the recovery — only on what exceeds the previous peak. The total works out the same whether the fee is collected hourly or once a year, so there is no crystallisation period and anyone can trigger it.
The split with the protocol is the same one your management fee uses.
Not every vault can charge it
Charging a share of profit only makes sense where the profit reflects your decisions. A vault holding one volatile asset earns its gains from the market, and the depositor could have held that asset themselves for nothing.
A vault may charge a performance fee only if no single underlying asset exceeds 50% of its target weight. Stablecoins carry no directional exposure and never count toward this, so a lending vault is always eligible.
The rule aggregates by what an asset is exposed to, not by ticker:
| Vault | Verdict |
|---|---|
| 100% USDC across three lenders | eligible — no directional exposure |
| 100% SOL | no |
| 25% each of SOL, mSOL, jitoSOL, bSOL | no — that is 100% SOL, not four positions |
| 99% SOL + 1% BTC | no — a decorative allocation buys nothing |
| 50% SOL + 50% BTC | eligible |
| 60% USDC + 40% SOL | eligible |
Liquid-staking tokens are grouped with their underlying, so splitting one bet across four tickers does not create diversification.
Changing your allocations switches the fee off until the new mix is checked. Anyone can run that check — it costs one transaction — but until they do, no performance fee is charged. If your new mix is too concentrated, it stays off.
Fee Collection Timing
Fees are not collected continuously — the keeper calls collect_fees periodically. The fee calculation is pro-rated based on time elapsed since the last collection:
fee_shares = total_shares * fee_bps * seconds_elapsed / (10000 * seconds_per_year)
curator_shares = fee_shares * curator_share / 10000 # curator_share is derived, not stored
protocol_shares = fee_shares - curator_shares
Fee collection requires fresh oracle prices to ensure fees are calculated on accurate NAV.
Fee Caps
The protocol caps the total management fee at 1.50% a year. At that ceiling a vault earning a typical 5% still returns 3.5% to depositors; higher caps start taking most of the yield, which is why the number is where it is.
Curator Points
When the points system is active, you earn curator points proportional to depositor activity:
curator_points = depositor_points * curator_points_bps / 10000
More depositors holding more shares for longer = more curator points. This aligns your incentives with depositor retention.
Performance Tracking
On-Chain Metrics
Your vault tracks these performance fields automatically:
| Metric | Description |
|---|---|
cumulative_deposit_usd | Total USD deposited over vault lifetime |
cumulative_withdraw_usd | Total USD withdrawn over vault lifetime |
net_external_flow_usd | Net deposits minus withdrawals |
cumulative_realized_pnl_usd | Realized profit/loss from swaps and yield |
cumulative_unrealized_pnl_usd | Unrealized profit/loss based on current prices |
performance_baseline_nav_usd | NAV baseline for IRR calculation |
Client Performance Helpers
The TypeScript SDK provides helpers to calculate:
import { sharePrice, allTimeReturn, annualizedReturn, realizedPnl, unrealizedPnl } from '@oblivion/client'
const price = sharePrice(vault) // current share price in USD
const allTime = allTimeReturn(vault) // total return percentage
const annual = annualizedReturn(vault) // annualized return (IRR proxy)
const realized = realizedPnl(vault) // realized PnL in USD
const unrealized = unrealizedPnl(vault) // unrealized PnL in USD
What Makes a Successful Vault
Depositors evaluate curators on:
- Returns: all-time and annualized performance
- AUM growth: growing deposits signal trust
- Consistency: steady returns with controlled drawdowns
- Transparency: on-chain verifiable performance metrics
The combination of fees, points, and performance tracking gives you a complete incentive and reputation system.