Skip to content
Anyperp
DocsProviding liquidityAppData
Open the app

Using Anyperp

Getting startedTradingFees, funding and the borrow feeProviding liquidityClaim balancesListing a marketHow prices are madeHalts and settlementAPITokenFAQ

Papers

LitepaperWhitepaper

Providing liquidity

One USDC vault takes the other side of every Anyperp market. Liquidity providers deposit USDC into it and receive vault shares, a receipt on its NAV. The vault earns 60% of trading, liquidation and borrow fees, plus net funding and its side of trader PnL. Deposits fill at the next NAV, and withdrawals wait 72 hours in a queue.

What the vault does

The vault is the counterparty to the net position in each market. When longs outweigh shorts in a market, the vault is short the difference; when shorts outweigh longs, it is long. Positions that offset each other inside a market net out, and the vault carries only the skew.

The vault's token account also holds cash that belongs to others: trader margin, pending deposits, priced withdrawals and claim balances. That cash is kept apart from NAV. Before an open fills, the program checks that the vault's cash covers all of it plus the funding owed to traders and a reserve against each market's net exposure; an order the reserve can't cover does not fill.

The Vault page

RowWhat it shows
NAVthe value that belongs to shareholders
Share priceNAV per share, in USDC
Available liquiditycash not held for margin, deposits, withdrawals, claims or reserves
Reserved margintrader margin held in escrow
Net exposurethe vault's position across all markets, in USDC
Fees earned · 24hthe vault's share of fees, in total and over the last 24 h
Insurance fundthe insurance fund's balance
Withdrawal queuethe number of queued requests and their value

"NAV as of" gives the time of the NAV shown. Under Your liquidity you see your shares and what they are worth, your pending deposit and queued withdrawals, and anything ready to claim.

NAV and shares

NAV is the vault's cash, less the cash it holds for others, less the PnL it owes traders on open positions, plus the funding and borrow fees traders owe it:

NAV=cash−held for others−trader PnL+charges owed to the vault\text{NAV} = \text{cash} - \text{held for others} - \text{trader PnL} + \text{charges owed to the vault}NAV=cash−held for others−trader PnL+charges owed to the vault

Only the vault's 60% of an accrued borrow fee counts toward NAV before it is collected. The share price is NAV divided by the shares outstanding. Shares are a classic SPL token with 9 decimals.

NAV generations

A NAV used for deposits and withdrawals is a NAV generation: a snapshot taken once every market has synced to a fresh print and every open position has been valued at it. The program writes the snapshot once and never changes it. A deposit or withdrawal prices at the first generation whose prints were all fetched after the request landed or unlocked, so it prices at a NAV that nobody could see when the request was made.

Sync marketseach to its last printValue positionsPnL, funding, borrowNAV snapshotNAV per share, frozenPrice LP workdeposits and withdrawalsA deposit or withdrawal fills only at a generation completed after it became eligible.
A NAV generation: markets sync to fresh prints, positions are valued, the snapshot is written, and deposits and withdrawals price at it.

Depositing

  1. Open Vault. Under Your liquidity, enter an amount in Deposit USDC.
  2. Press Deposit and approve the transaction. The USDC moves into the vault as a pending deposit.
  3. The deposit waits for the next NAV generation; "Fills at the next round's NAV."
  4. A keeper fills it at that NAV. Your new shares land in your claim balance as "Shares ready to claim".
  5. Press Claim to wallet to move them into your wallet, or leave them where they are: a withdrawal request can use claimable shares directly.

The shares you receive are the deposit times the shares outstanding divided by NAV, rounded down:

shares=deposit⋅shares outstandingNAV\text{shares} = \text{deposit} \cdot \frac{\text{shares outstanding}}{\text{NAV}}shares=deposit⋅NAVshares outstanding​

For example, if the deposit prices at a NAV of $2,000,000 with 1,900,000 shares outstanding, 10,000 USDC buys 9,500 shares.

Each wallet has one deposit pending at a time.

Requesting a withdrawal

  1. Under Your liquidity, enter a number of shares in Withdraw shares.
  2. Press Request withdrawal and approve the transaction. The program takes the shares from your claim balance first, then from your wallet, and holds them in escrow.
  3. The withdrawal shows "Withdrawal · queued" with a countdown under "Unlocks".

The queue is 72 hours. Queued shares stay part of the vault until they are priced, so their value keeps moving with NAV while they wait. The queue means a liquidity provider can't leave ahead of a print they can already see coming. Each wallet has one withdrawal queued at a time.

request_withdrawqueue: 72 hunlocksfirst complete NAV → execute_withdrawUSDC to the claim balance
A withdrawal waits 72 hours, prices at the first complete NAV after it unlocks, and its USDC lands in the claim balance.

Executing a withdrawal

When the 72 hours have passed, a keeper prices the withdrawal at the first complete NAV generation after its unlock time. The shares are burned and the USDC amount is fixed:

USDC=shares⋅NAVshares outstanding\text{USDC} = \text{shares} \cdot \frac{\text{NAV}}{\text{shares outstanding}}USDC=shares⋅shares outstandingNAV​

Execute withdrawal then appears on the withdrawal. Press it and approve; the USDC lands in your claim balance, and Claim to wallet moves it to your wallet.

For example, 9,500 shares priced at a NAV of $2,100,000 with 1,900,000 shares outstanding pay 10,500 USDC.

What earns the vault money

SourceHow
Fees60% of every trading fee, liquidation fee and borrow fee
Fundingthe side that adds to the skew pays more than the other side receives; the vault keeps the difference
Skew premiumorders that add to the skew fill above the index (longs) or below it (shorts)
Trader PnLthe vault is the counterparty to each market's net position, so it gains what that position loses

The insurance fund is separate from the vault. It receives 10% of fees and any slashed listing bond, and it covers a position whose losses exceed its margin at a liquidation or settlement before the vault does.

PreviousFees, funding and the borrow feeNextClaim balances

On this page

What the vault doesThe Vault pageNAV and sharesDepositingRequesting a withdrawalExecuting a withdrawalWhat earns the vault money
Anyperp
AppDataDocsLitepaperWhitepaperToken
Perpetual futures on artists’ monthly listeners, on Solana.Not offered to US persons.