Skip to main content

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.

CadenceBase fee on AUMProtocol floorYour share at the base
Weekly0.90%0.450%0.450%
Monthly0.75%0.375%0.375%
Quarterly0.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:

VaultVerdict
100% USDC across three lenderseligible — no directional exposure
100% SOLno
25% each of SOL, mSOL, jitoSOL, bSOLno — that is 100% SOL, not four positions
99% SOL + 1% BTCno — a decorative allocation buys nothing
50% SOL + 50% BTCeligible
60% USDC + 40% SOLeligible

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:

MetricDescription
cumulative_deposit_usdTotal USD deposited over vault lifetime
cumulative_withdraw_usdTotal USD withdrawn over vault lifetime
net_external_flow_usdNet deposits minus withdrawals
cumulative_realized_pnl_usdRealized profit/loss from swaps and yield
cumulative_unrealized_pnl_usdUnrealized profit/loss based on current prices
performance_baseline_nav_usdNAV 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:

  1. Returns: all-time and annualized performance
  2. AUM growth: growing deposits signal trust
  3. Consistency: steady returns with controlled drawdowns
  4. Transparency: on-chain verifiable performance metrics

The combination of fees, points, and performance tracking gives you a complete incentive and reputation system.