Skip to main content

Fees and Points

Fee Model​

Oblivion uses a share-dilution fee model, similar to traditional ETFs. Fees are not deducted from the vault's assets directly — instead, new shares are minted to the fee recipient, diluting existing shareholders proportionally.

Fee Structure​

FeeWho earnsHow it works
Management feeCurator + protocolAnnual fee on AUM, accrued over time, collected periodically
Keeper incentiveKeeperDeducted from each deposit before share minting

Management Fee Tiers​

The annual management fee is linked to the vault's rebalance cadence:

CadenceAnnual Fee
Weekly90 bps (0.90%)
Monthly75 bps (0.75%)
Quarterly50 bps (0.50%)

More frequent rebalancing justifies higher fees due to increased operational costs.

Fee Collection​

The keeper calls collect_fees periodically. The process:

  1. Calculate time elapsed since last collection
  2. Compute annualized fee: fee_shares = total_shares * fee_bps * elapsed / (10000 * seconds_per_year)
  3. Split between curator and protocol. The protocol takes the greater of its floor (half the cadence's base fee) and 30% of the fee charged; the curator receives the rest. The share is derived from the vault's fee and cadence at collection time, not stored. The curator's cut floors and the treasury takes the remainder, so the two always sum to exactly what was minted
  4. Mint new shares to the curator and protocol treasury
  5. Requires fresh oracle valuation (prevents fee collection on stale NAV)

Performance Fees​

A vault may also charge a share of gains above a high-water mark, up to 10%, set at creation and immutable after. collect_performance_fee is permissionless:

  1. pnl = total_value_usd - net_external_flow_usd, so deposits are not mistaken for gains
  2. chargeable = max(0, pnl - high_water_pnl_usd)
  3. fee_usd = chargeable * performance_fee_bps / 10000, floored
  4. Minted as shares and split on the same derived share as the management fee
  5. The high-water mark advances only if a fee was actually taken, so a charge that floors to zero is a no-op and cannot be used to walk the mark past uncharged gains

The mark makes the total path-independent: charging at every new high comes to exactly what one charge at the end would, so no minimum interval is needed.

A vault may charge it only while performance_fee_eligible is set, which requires that no single non-default underlying_mint exceeds 50% of target weight. The flag fails closed — it starts at zero and is cleared whenever allocations are applied, so it must be re-proven by the permissionless refresh_performance_fee_eligibility before charging resumes.

Curator Incentives​

Curators earn fees by creating and managing successful vaults:

  • Fee share: the management fee less the protocol's cut. The share is not stored and not a create_vault argument — it is derived from the vault's fee and cadence every time fees are collected, so a curator cannot choose it and no stored copy can drift from the fee it describes
  • Curator points: when points are enabled, curators earn points proportional to depositor activity — curator_points_bps of what depositors accrue, minted on top rather than taken out of it. A depositor's points are never reduced to pay a curator
  • Performance tracking: on-chain fields track cumulative PnL, unrealized gains, and IRR/APY metrics

The curator's economic incentive is to attract deposits (grows AUM and fee base) and generate returns (attracts more depositors).

Keeper Incentive​

Keepers earn a small fee on each deposit they process:

incentive = deposit_amount * keeper_incentive_bps / 10000

This is deducted before share pricing, so the depositor receives shares based on the net deposit amount. The incentive is transferred from the reserve treasury to the keeper's token account.

Fee Caps​

The protocol enforces a max_management_fee_bps cap. Curators cannot set fees above this limit. This protects depositors from predatory fee structures.

Points System​

Oblivion has a loyalty points system that rewards depositors for holding vault shares over time.

How Points Accrue​

Points are time-weighted: the longer you hold shares, the more points you earn. The formula:

points = depositor_position.shares * elapsed_seconds * depositor_points_per_usdc / POINTS_SCALE

Points accrue automatically during deposits, withdrawals, and DCA executions. They can also be triggered manually via the permissionless accrue_points instruction (anyone can call it for any depositor).

Point Types​

TypeWho earnsBased on
Loyalty pointsDepositorTime-weighted share holdings
Curator pointsCuratorcurator_points_bps of depositor accrual, minted additionally — not deducted from the depositor

Depositor Account​

Each wallet has a global Depositor account that aggregates total_loyalty_points across all vault positions. This enables protocol-wide loyalty tracking regardless of how many vaults a user participates in.

Points Configuration​

The protocol authority controls:

  • points_enabled: master switch for the points system
  • depositor_points_per_usdc: points accrual rate
  • curator_points_bps: curator points minted per unit of depositor accrual, currently 10000 (1:1). Additive, so enabling it costs depositors nothing