Skip to main content
redeem_paired(l_amount, s_amount) burns L and S in independently chosen quantities and returns the value at NAV in cUSDC. Unlike mint, redeem amounts are not quantity-paired - they are NAV-weighted.

Math

In the normal over-collateralized state (the protocol targets a solvency buffer above 100%), redeem returns full NAV value:
You burn your L + S, you receive return cUSDC. If the vault is ever under-collateralized (CR < 100%), the payout is scaled by the collateralization ratio - see Under-collateralization below. In the normal case min(1, CR) = 1, so the haircut is a no-op. The fee is taken on the post-haircut gross, so it scales with what is actually paid out. If you redeem only one side (the other amount is zero), the program just burns that side and returns its value in cUSDC. No paired requirement.

Fees

Same structure as mint: base 10bps, of which 90% stays in the collateral vault as backing and 10% (the dev tax) goes to the fee recipient. On high-vol markets the keeper posts a vol-informed fee - max(10, fee_mult × q90) bps, capped at 100 - because the mint/redeem fee is the hurdle that gates paired round-trip extraction. Broad indices in calm regimes sit at the static 10bps.

Oracle staleness gate

Like mint, redeem outside Normal risk state (always, on devnet) requires the TWAP to be fresher than 300 seconds. When the underlying market is closed the keeper withholds oracle pushes, the TWAP ages out, and redeem freezes with TwapNotAvailable until reopen - paying out at a stale pre-gap price would misprice against everyone who stays in. The pool books continue floating off-hours if you need to exit at a live two-sided quote.

Accounts

Same as mint. The user signs, ATAs source/sink tokens, vault transfers cUSDC out.

TypeScript

Asymmetric redemption

L and S have very different unit prices (e.g. QQQ: L_NAV ≈ 480, S_NAV ≈ 0.002). Burning equal quantities doesn’t burn equal value. The program is fine with this: There’s no penalty for asymmetric redeems. They’re how you implement directional position closing - sell one leg, redeem the other.

Maximum redeem

There’s no protocol-imposed maximum. You can redeem the entire vault if you hold the corresponding tokens. The program checks:
The pro-rata haircut (below) caps return_value at the vault’s collateralization, so InsufficientCollateral is unreachable in practice. InsufficientLiquidCollateral can fire only if collateral is deployed to yield (off by default) and must be recalled first.

Under-collateralization: pro-rata redemption

Continuum targets an over-collateralized vault, but the constant-product NAV means a large move on an imbalanced book can, in the tail, push collateralization below 100%. Redeem stays open in that case — it just pays pro-rata:
Two guarantees hold by construction:
  • Never overdraws. A single redeem can never pay out more than the vault holds (payout ≤ total_collateral), so the vault can’t be pushed negative.
  • No first-mover advantage. Every redeemer takes the same min(1, CR) factor and the ratio is preserved for everyone who remains — there’s no race to exit first. This removes the bank-run dynamic that a “full NAV for early redeemers” rule would create when the vault is thin.
In the normal over-collateralized state this is invisible: CR ≥ 100%min(1, CR) = 1 → you receive full NAV value.

Behavior across risk states

Redeem is never blocked by risk state - users can always exit at the last fresh NAV (pro-rata if the vault is under-collateralized; see above). The only thing that pauses it is the staleness gate while the underlying market is closed.

Errors

Full error catalog

Optional: redeem_paired_with_waiver

Same as mint’s fee-waiver variant. Skips the redeem fee if the user has an active fee waiver against this market. Used by power users; ignore for typical integrations.

What you receive

Closing a directional position

If you minted paired and sold one side to express direction, your wallet now holds only one side. Redeem proceeds normally:
Your final P&L is the redeem cUSDC plus whatever cUSDC you got from selling the other side, minus your initial mint cost. If L_NAV rose since mint, you profit.

Redeem vs sell

To exit one leg, compare the redeem fee (10bps) against the book’s half-spread (15-40bps) - redeeming at NAV is usually the cheaper exit for a single side, and a committed order (NAV - 10bps) matches it for size. Selling on the book wins only when you want instant execution and the spread is at its floor.

See also

Mint

The inverse - deposit cUSDC, receive paired tokens.

Trade

The three venues - books, committed orders, instant swap - and when to use each.