tango.funDocs

Tango vaults

Withdrawals

How a withdrawal from a Tango vault is requested, funded, settled and claimed, how a forced exit works, and why there is no atomic withdrawal.

A withdrawal turns a holder's shares back into USDC. The contracts call it a redemption. Most of a vault's money is working in its strategy rather than sitting as cash, so a Tango vault does not pay out instantly. The holder makes a request, and the vault's settler brings back enough USDC. The request is then settled at the vault's NAV (net asset value, the total value of everything the vault holds). If that takes too long, the holder can force their own exit.

Key points

  • Withdrawals are settled. The holder requests, the vault's settler brings cash back from sub-accounts and settles at NAV, and the holder receives USDC.
  • The vault promises no settlement time. If a request is not settled within 3 days, the holder can force their own exit from the vault's cash and its tracked sub-accounts.
  • Release 0.12.0 has no atomic (one-transaction) withdrawals. A vault's cash sits in its strategy. An instant exit would let one holder take cash meant for others, at a price that may already be out of date.

How a withdrawal works

Withdrawals are settled from idle cash; the forced exit is the holder's backstop.
1. Request: the holder calls requestRedeem; the shares move into escrow in the vault
2. Fund: the settler brings USDC back from sub-accounts to the vault's idle cash
3. Settle: the settler names how many shares to fill for each request; the whole batch gets one NAV price
4. Claim: the USDC is set aside for the holder; anyone can deliver it, or the holder claims it
Forced exit: after 3 days unsettled, the holder exits alone from the vault's cash and tracked sub-accounts

The settler is whichever key settles requests: the VaultManager, a Settler or the VaultAdmin. A withdrawal goes through four steps:

  1. The holder requests a withdrawal by calling requestRedeem, or an operator calls it for them. An operator is an address the holder has approved to act for them. The shares move into escrow: the vault holds them until the request is settled or cancelled. The request must be worth at least the vault's minimum at the last known price.
  2. The settler funds the payout by bringing USDC back from sub-accounts. Settlement pays only from the vault's idle USDC, the cash the vault holds itself rather than in its sub-accounts. For example, the settler might sell positions, withdraw from a lending venue or bring funds back from an exchange.
  3. To settle, the settler fills each request by naming how many shares to redeem. Every request in the batch gets the same price: NAV at settlement. A request can be filled in part and finished later. If the vault sets an exit fee, it is taken in shares.
  4. Once a request is settled, the USDC is set aside for the holder and no longer counts in NAV. Anyone can deliver it to the holder, or the holder can claim it.

Redemptions are always paid in USDC, never in the vault's other assets.

Can a holder cancel?

Yes. A holder can cancel the unfilled part of a request and get those shares back. If the vault sets a redemption cancellation fee, it applies only during the forced-exit wait. After that, cancelling is free.

How long does settlement take?

The vault promises no settlement time. It depends on the settler, and on how quickly positions can be turned into USDC, which depends on the venues. Settlement also needs a fresh NAV, so it pauses while any price is stale. The forced exit is the backstop.

Forced exit

If a request is still unsettled 3 days after it was made, the holder can settle it alone. This is a forced exit.

  • Only the request's owner can force it, not an operator.
  • A forced exit pays from the vault's idle USDC first, then from a tracked sub-account's idle USDC. After that, it pays through one unwind route the holder supplies, meaning a way to turn a position into USDC. An example is selling a position through the sub-account's own modules.
  • It never reaches an attested sub-account. Funds on an exchange or on another chain are out of its reach.
  • It charges no exit fee. The holder sets a minimum amount to receive and bears any slippage, the gap between the expected and actual trade price.
  • Like any settlement, a forced exit needs a fresh NAV. It still works while the vault is paused.

The wait is fixed at deployment, and every High and Critical timelock is at least twice as long. See Timelocks.

Why there is no atomic withdrawal

An atomic withdrawal would pay a holder instantly, in one transaction, at the current NAV. Tango vaults do not offer one in release 0.12.0, for three reasons:

  • The cash is in the strategy, since most of a vault's value sits in sub-accounts rather than as idle USDC. An instant exit could only pay from idle cash the settler brought back for requests already in the queue. The fastest holder would take it.
  • The price can be behind, because NAV reflects the last oracle update or the last accepted attestation. Suppose the vault has made a loss it has not seen yet. An instant exit would pay the old, higher price, and the holders who stay would absorb the difference.
  • With an attested sub-account, part of the price is a claim: a figure someone posted. That account sends nothing back to the vault while its value is stale. An instant exit priced on it would rest on a claim rather than an oracle.

Release 0.13.0 adds an optional atomic redemption handler, for vaults whose cash and pricing make it reasonable:

  • It is deployed paused unless the vault asks for it.
  • It pays only from idle cash, and it charges its own atomic redemption fee.
  • It is refused whenever any sub-account is attested. The factory will not finalize a vault that enables it alongside an attested sub-account.

The Tango app does not use it. See Withdrawals in the app.