Vaults - How Managed Fund Accounts Work
TL;DR
- What: A vault is a managed fund account — you deposit assets (e.g., USDC), receive vault tokens (shares), and a trader manages the capital
- Deposit: Send USDC → receive vault tokens priced at NAV. Instant settlement
- Withdraw: Request redemption → wait ~6 hours → receive USDC. One pending request per vault
- Where yield comes from: The vault's trader profits from futures positions, funding payments, and trading activity. Losses reduce NAV
- NAV protection: Deposits use
max(spot, TWAP)and withdrawals usemin(spot, TWAP)to prevent price manipulation - Not locked: Your vault tokens aren't locked during the redemption wait — you just can't submit a second request
Table of Contents
- What is a Vault?
- Why Vaults Exist
- How Vaults Work
- Depositing (Minting)
- Withdrawing (Redeeming)
- NAV Protection & TWAP
- User Position & P&L
- When Vaults Make Sense (and When They Don't)
- Risks & Considerations
- Redeem Status Flow
- Key Differences from Borrow/Lend
1. What is a Vault?
The Concept
A vault is like a managed investment fund that lives on the exchange. Think of it like an ETF:
- You buy shares (vault tokens) by depositing assets
- A fund manager (the vault's trader) actively trades with the pooled capital
- Your shares go up or down in value based on how well the trader does
- You sell your shares to get your money back
The key difference from a traditional fund: the vault is a system account on the exchange — the trader never has custody of your assets, and the math is fully transparent.
Vault Tokens
Vault tokens are the "shares" of the fund:
- Fixed supply — tokens are pre-created and transferred, not minted on the fly
- Price = NAV (Net Asset Value) — the token price always reflects the vault's actual value
- Tokens appear as regular assets in your account (e.g.,
vBTC,BPX-VAULT-001)
Example:
Vault has $1,500 equity, 1,000 tokens circulating → NAV = $1.50/token
You deposit $150 → you receive 100 tokens
Vault grows to $2,000 equity → NAV = $2.00/token
Your 100 tokens are now worth $2002. Why Vaults Exist
The Problem
You want exposure to a trading strategy (e.g., delta-neutral market making, basis trading) but:
- You don't have the skill — active trading strategies require expertise and constant monitoring
- You don't have the time — these strategies often need 24/7 management
- You don't want to give up custody — sending funds to an external trader means trusting them completely
The Solution
Vaults let you delegate capital to a strategy without giving up custody:
- Your assets stay on the exchange — the vault trader operates a system account
- Returns are transparent — NAV is calculated from real positions and balances
- You can withdraw (after a delay) — no lock-up at the discretion of the manager
3. How Vaults Work
The Vault Account
Each vault is backed by a system account that holds:
- Asset balances — USDC from deposits, plus any trading proceeds
- Futures positions — the trader's open perp positions
- Borrow/lend positions — any borrowed or lent capital
- Unallocated vault tokens — tokens not yet distributed to depositors
NAV (Net Asset Value)
NAV is the price of one vault token. It's calculated as:
NAV = vault_equity / token_circulating_supply
If circulating_supply == 0: NAV = 1.0 (initial value)Why NAV instead of just "a price"?
Vault tokens don't trade on an order book — nobody is buying and selling them on a market, so there's no market price to look at. NAV is the price, and it's derived from reality: what the vault actually owns.
Think of it like a house with multiple owners. If someone asks "what's my share worth?", you add up the value of the house and everything in it, subtract any mortgage, and divide by the number of owners. That's NAV. It's not based on opinion or supply/demand — it's based on the actual assets.
What Is "Vault Equity"?
Vault equity is the total net value of everything in the vault's system account, converted to USD:
vault_equity = Σ(asset_balances × index_price)
+ unrealized_perp_pnl
+ unsettled_equityIn plain English — take everything the vault owns, subtract everything it owes, and that's the equity.
ELI5: What does "equity" actually mean here?
The vault is literally a trading account on the exchange — just like yours, except it's managed by a professional trader. It has a USDC balance, open futures positions, maybe some borrows. "Equity" means: add up everything it owns, subtract everything it owes.
| Component | What it means | Effect on Equity |
|---|---|---|
| USDC balance | Cash in the account from user deposits + trading profits | +$100,000 |
| Unrealized perp P&L | The vault has open futures positions — e.g., if it's long ETH and ETH is up, that's unrealized profit | +$5,000 |
| Funding payments | Perp positions pay/receive funding every 8 hours. If the vault is short and longs are paying shorts, that's income | +$200 |
| Borrow liabilities | If the vault borrowed SOL to trade, that's a debt | -$1,500 |
| Trading losses | Closed a losing trade — the USDC is gone | Reduces balance |
"Does the vault get liquidation profits?" — Not in a special way. The vault's trader is just trading on the exchange like everyone else. If they have a profitable trade against a counterparty who happens to get liquidated, that shows up as normal trading P&L. There's no special liquidation revenue stream.
When the trader profits, equity goes up, NAV goes up, and your tokens are worth more. When the trader loses, the opposite happens.
Circulating Supply
Circulating supply tracks how many vault tokens are held by users (not the vault itself):
After mint: circulating_supply += tokens_issued
After redeem: circulating_supply -= tokens_returnedThe vault has a circulating supply limit — a cap on total deposits.
Why Is There a Cap?
Vault tokens are not minted dynamically — they're pre-created with a fixed total supply. The vault's system account holds all unallocated tokens and transfers them to users on deposit. This fixed supply creates a natural capacity limit: the vault literally cannot issue more tokens than exist.
Beyond this physical constraint, the limit is also a risk management tool. Vault operators can set the cap lower than the total token supply to control how much capital the vault accepts. A smaller pool is easier for the trader to manage, and early depositors benefit from a larger share of profits relative to the pool size. The cap is configurable per vault via circulatingSupplyLimit.
4. Depositing (Minting)
Flow
User Account Vault System Account
USDC ──────────────────→ [Deposit received]
←────────────────────── Vault tokens sent- User submits a mint request with a deposit amount
- System calculates effective NAV =
max(spot_NAV, twap_NAV)(see NAV Protection) - Tokens to receive =
deposit_amount / effective_NAV - Settlement is immediate — user gets tokens, vault gets USDC
Example
Vault state:
Equity: $100,000
Circulating supply: 50,000 tokens
Spot NAV: $2.00
TWAP NAV: $1.95
You deposit $1,000:
Effective NAV = max($2.00, $1.95) = $2.00
Tokens received = $1,000 / $2.00 = 500 tokensOptions
| Option | What it does |
|---|---|
autoBorrow | If you don't have enough USDC, borrow the shortfall from the lending pool |
autoLendRedeem | If your USDC is currently lent, redeem it first |
Validation
mintsEnabledmust be true- Deposit ≥
minMintQuantity - NAV must not be stale (last sample < 5 minutes ago)
- NAV must be positive (vault not insolvent)
- Vault must have enough unallocated tokens
- New circulating supply ≤
circulatingSupplyLimit
5. Withdrawing (Redeeming)
Two-Stage Process
Unlike deposits, withdrawals are not instant. This protects the vault from bank-run scenarios and gives the trader time to unwind positions.
Stage 1: REQUEST (immediate)
User submits redeem request → added to FIFO queue
Stage 2: EXECUTION (after delay)
Crank processes queue → user receives USDC, vault receives tokens backRedeem Delay
Default: 6 hours (configurable per vault via redeemDelayMs).
A redeem becomes eligible for execution when:
current_time - request_created_at ≥ redeem_delay_msNAV at Redemption
The effective NAV uses min(spot_NAV, twap_NAV) (see NAV Protection):
Amount returned = vault_tokens × min(spot_NAV, twap_NAV)Example
You hold 500 vault tokens and request full redemption:
6 hours later, crank executes:
Spot NAV: $2.10
TWAP NAV: $2.05
Effective NAV = min($2.10, $2.05) = $2.05
USDC returned = 500 × $2.05 = $1,025Rules
| Rule | Detail |
|---|---|
| One pending request | You can only have one active redeem request per vault |
| Cancellable | You can cancel while the request is pending |
| Tokens not locked | Your vault tokens remain in your balance during the wait |
| FIFO queue | Requests are processed in order by a crank |
| Partial or full | Omit the quantity to redeem all tokens |
6. NAV Protection & TWAP
Why Not Just Use the Current NAV?
If deposits and withdrawals used the real-time ("spot") NAV, an attacker could:
- Manipulate the vault's positions to temporarily inflate NAV
- Deposit at the inflated price — getting more tokens than deserved
- Wait for NAV to normalize — then redeem at the real price, extracting value from other depositors
Or the reverse — crash NAV temporarily, redeem cheap, then let it recover.
The TWAP Solution
TWAP = Time-Weighted Average Price over a 24-hour rolling window.
The vault records NAV samples over time and computes:
TWAP = Σ(NAV_i × duration_i) / Σ(duration_i)Where each NAV_i is weighted by how long it persisted. This smooths out short-term spikes.
Samples older than 24 hours are automatically pruned.
Why 24 Hours?
The TWAP window is a tradeoff between manipulation resistance and price responsiveness:
- Too short (e.g., 1 hour) — an attacker could feasibly sustain price manipulation for that duration, making the TWAP ineffective
- Too long (e.g., 7 days) — the TWAP becomes so sluggish that it penalizes legitimate users. If the vault genuinely grows 20% in a week, depositors would still pay a price heavily anchored to last week's lower NAV, and redeemers would get significantly less than the vault is actually worth now
- 24 hours — long enough that sustaining manipulation is economically infeasible, short enough that the TWAP still tracks real vault performance
To illustrate: if NAV spikes to 2x for just 1 second within a 24-hour window, the TWAP moves less than 0.001%. An attacker would need to sustain the manipulation for the entire window to meaningfully shift it. In normal conditions (no manipulation, no big swings), spot and TWAP are very close and the choice of window barely matters.
The window is configurable per vault via twap_window_ms (default: 86,400,000 ms = 24 hours).
How It's Applied
| Operation | Effective NAV | Why |
|---|---|---|
| Mint (deposit) | max(spot, TWAP) | Depositor pays the higher price — can't buy cheap during a temporary dip |
| Redeem (withdraw) | min(spot, TWAP) | Withdrawer gets the lower price — can't extract extra during a temporary spike |
The intuition: both rules protect existing depositors.
- If someone tries to deposit right after a flash crash,
max(spot, TWAP)forces them to pay the historical average (higher), so they can't buy discounted shares - If someone tries to redeem right after a flash spike,
min(spot, TWAP)gives them the historical average (lower), so they can't extract inflated value
ELI5: The Lemonade Stand
Imagine the vault is a lemonade stand worth $100, with 100 shares at $1 each.
- Spot NAV = what the stand is worth right now
- TWAP NAV = what the stand has been worth on average over the last 24 hours
When you deposit, you pay max(spot, TWAP) — whichever is higher:
The stand just had a bad hour and spot dropped to $0.80, but the 24h average is $1.00. You pay $1.00. This stops you from buying in during a temporary dip and diluting everyone else who bought at fair price.
When you withdraw, you get min(spot, TWAP) — whichever is lower:
The stand just had a great hour and spot spiked to $1.20, but the 24h average is $1.00. You get $1.00. This stops you from cashing out during a temporary spike and taking more than your fair share from the other owners.
In normal conditions (no manipulation, no big swings), spot and TWAP are very close together and it barely matters which one is used.
NAV Staleness
If the most recent NAV sample is older than 5 minutes (default max_nav_staleness_ms = 300,000), the vault blocks mints and redeems until a fresh sample is recorded. This prevents operating on dangerously outdated prices.
Staleness check can be disabled by setting the threshold to 0.
7. User Position & P&L
Position Value
Position Value = vault_token_balance × current_NAVP&L Calculation
Total Deposited = sum of all mint quantities (USDC amounts)
Current Value = vault_token_balance × current_NAV
P&L = Current Value - Total Deposited
ROI % = (P&L / Total Deposited) × 100Example
Mint 1: Deposited $1,000, received 500 tokens @ NAV $2.00
Mint 2: Deposited $500, received 200 tokens @ NAV $2.50
Total Deposited = $1,500
Token Balance = 700 tokens
Current NAV = $2.80
Current Value = 700 × $2.80 = $1,960
P&L = $1,960 - $1,500 = +$460
ROI = ($460 / $1,500) × 100 = +30.7%Position Lifecycle
| Status | Description |
|---|---|
Opened | First deposit (balance was 0) |
Adjusted | Additional deposits or partial redemptions |
Closed | Fully redeemed (balance is 0) |
8. When Vaults Make Sense (and When They Don't)
What "Backpack Liquidity Token" Means
When a vault is described as a "liquidity token" or "Backpack liquidity vault," it means the vault's trader is providing liquidity to the Backpack exchange itself — typically through market making, basis trading, or other strategies that profit from facilitating trades and capturing spreads.
In concrete terms:
- The trader places bids and asks on Backpack's order books, earning the spread
- They may run delta-neutral strategies (e.g., long spot + short perp) to capture funding rates
- They profit from the flow of trades happening on the exchange
Your vault token represents a share of this liquidity provision operation. When the exchange has more trading volume, the market maker has more opportunities to profit, and your NAV goes up.
This is different from lending (where you earn a fixed interest rate) — you're participating in the trading infrastructure of the exchange.
Why Early Participation Matters
Vaults have a circulating supply limit — a hard cap on total deposits. Early depositors get access before the cap is hit. Once it's full, new deposits are rejected until someone redeems.
Beyond the cap, early participation means:
- Smaller pool = larger share — if the vault's strategy generates $X in profit, fewer depositors means each person's NAV grows faster
- Track record builds over time — early depositors can evaluate the vault's real performance before it becomes crowded
When Vaults Make Sense
| Scenario | Why a vault fits |
|---|---|
| You want yield but don't want to trade | Vault handles the strategy, you hold the token |
| You believe in the strategy | Market making / basis trading has historically been profitable in active markets |
| You want exchange-level custody | Assets never leave the exchange — no counterparty risk with an external fund manager |
| You have idle USDC | Better potential returns than lending (but with more risk) |
| You can tolerate a 6-hour withdrawal delay | You don't need instant liquidity on this capital |
When Vaults Don't Make Sense
| Scenario | Why a vault doesn't fit |
|---|---|
| You need instant access to your funds | 6-hour redeem delay means this isn't a checking account |
| You can't stomach any losses | NAV can go down — this is not a stablecoin savings account |
| You want predictable, fixed returns | Lending pools give you a utilization-based rate; vaults are variable and strategy-dependent |
| You want to control the trading | If you have your own strategy, just trade directly — vaults are for delegation |
| You're putting in money you can't afford to lose | Like any investment, the vault can lose value |
Vaults vs. Lending: A Simple Decision Framework
Do you want guaranteed yield from borrower interest?
→ Use Borrow/Lend (lower risk, lower potential return)
Do you want exposure to active trading strategies without doing the work?
→ Use a Vault (higher risk, higher potential return)
Do you want both?
→ Split your capital between lending and a vault9. Risks & Considerations
The Vault Can Lose Money
NAV goes down when the trader loses money. Unlike lending (where yield comes from borrower interest), vault returns depend entirely on trading performance. There is no guaranteed yield.
Redemption Delay
The default 6-hour delay means your withdrawal is not instant. During this window:
- NAV can change (for better or worse)
- The final redemption amount is calculated at execution time, not request time
One Request at a Time
You can only have one pending redeem request per vault. If you need to change the amount, cancel and resubmit.
NAV Staleness Can Block Operations
If the vault's NAV hasn't been updated in over 5 minutes, mints and redeems are temporarily blocked. This is a safety measure, not a permanent state.
Circulating Supply Limits
Each vault has a cap on total deposits. Once the circulating supply limit is reached, no new mints are accepted until tokens are redeemed.
Tokens During Redeem Wait
Your vault tokens are not locked while waiting for redemption. However, if your token balance drops below the requested redeem amount before execution, the request is automatically cancelled (InsufficientVaultTokens).
10. Redeem Status Flow
Requested ──→ Redeemed (delay passed, conditions met, crank executed)
│
└───────→ Cancelled (user or system cancelled)Cancellation Reasons
| Reason | Description |
|---|---|
UserCancelled | You manually cancelled the request |
SystemCancelled | Admin cancelled (e.g., vault shutdown) |
InsufficientVaultTokens | You no longer have enough tokens to fulfill the request |
AccountNotFound | Your account was removed |
11. Key Differences from Borrow/Lend
| Aspect | Vaults | Borrow/Lend |
|---|---|---|
| What you're doing | Delegating capital to an active trader | Lending to a pool of borrowers |
| Source of returns | Trading P&L (futures, funding, etc.) | Borrower interest payments |
| Risk profile | Can lose money if trader loses | Generally lower risk, but borrowers can default |
| Return predictability | Unpredictable — depends on trading skill | Relatively predictable — based on utilization rate |
| Withdrawal | Delayed (default 6 hours, queued) | Instant (subject to pool liquidity) |
| Your token | Vault token (variable price) | Lend position (accrues interest) |
| Price mechanism | NAV with TWAP protection | Fixed 1:1 with accrued interest |
| Who manages capital | A designated trader | No one — interest rate model is automatic |