mint_paired, redeem_paired, pool_swap, commit_swap) are public. Here are concrete things you can build on them.
Token facts
Every L and S mint is a classic SPL Token mint (programTokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA) with no Token-2022 extensions. Each has 6 decimals and no freeze authority, so no one can freeze a holder’s tokens. The mint authority is the market’s Market PDA, so only mint-redeem can create new tokens. All 28 mints of the 14 markets then listed matched this on chain on 10 Oct 2026 (MSTR has since closed, leaving 26); for QQQ, the L mint E4xJxBPyDXXJK2uqF17cq9kch1xHCTBZ6vjMxKWKANgZ and the S mint BisvPibkUJqix3ZzaeHCxJ2W7KqoroFpnyf55nzFoicG both have mint authority F12ostJBgYCzsdouwz5GG1qeBCwbmhNGucPBNCZCfPG5.
These are devnet tokens backed by devnet cUSDC. They can’t be used on mainnet protocols such as Kamino.
1. Long-only or short-only wrapper
Most users want a one-click long or short, not a pair. Wrap it:commit_swap. A committed order fills at NAV ± max(commit_spread_bps, 10) bps at a keeper price push after the commit. The keeper posts the spread as clamp(half-spread, 10, 500) bps: 18 for QQQ, 15 for SPY and 18 for XAU as of 10 Oct 2026. Settlement waits while the market is below its 100% collateral floor or the price fails the oracle checks, and reverts until the keeper provisions the CLP’s inventory. An unfilled order expires after 180 s, and the keeper refunds it about 5 s later; anyone can send that cancel_swap, and the escrow goes back to the user. mint_paired and pool_swap can’t share a transaction: mint needs a price at most 300 s old, and the bin books fill only once it is older than that.
Committed orders work on every live market. The bin books ignore swap guards but fill only while a market’s price is stale.
2. Arb bot
Every venue prices off the same keeper-posted price. Mint and redeem quote worst-case NAVs (every market except QQQ, where worst-case quoting is switched off as of 10 Oct 2026), committed orders fill at NAV ± the committed spread, and the bin books sit around an inventory-shifted centre. That leaves little to arbitrage:- The books fill only while the market’s price is stale. The window lasts until the keeper’s guard pulls the stale side or a fresh push closes the book, and the take is capped by the depth of the in-the-money bins.
- Closing a one-sided position needs the paired round trip. Mint and redeem reopen only with the next fresh price, so the position carries price risk until then. The round trip’s hurdle is the mint or redeem fee (posted at 10 to 39 bps as of 13 Oct 2026, then multiplied by 1.5 in ProxyMode) plus the book’s spread. Near NAV it rarely clears.
settle_swapis keeper-only: the signer must beclp.authorityormarket.keeper_authority, so an integrator can’t settle its own order. An order settles only at a price push newer than its commit. If the keeper stops pushing, orders expire after 180 s, and anyone can then sendcancel_swapto return the escrow to its owner. If a payout or refund can’t reach the account recorded at commit, the order is held and anyone can sendclaim.
3. Structured products
Combine positions across markets to express more specific views.Dispersion: long index, short components
Holding the pair
s_gamma_index (γ) in step with the market’s realized variance, and set_s_gamma_index can only lower it, so the S leg loses value over time even if the price comes back. A pair gains from large moves and pays that decay while it waits for them.
Equity against the dollar
4. Portfolio analytics
L and S NAVs are on chain, so valuing a wallet needs no outside feed. Read the wallet’s balances and multiply by NAV:p.redeem instead of p.nav for what the pairs would pay out now. Treat the result as the keeper’s number: keeper_authority writes the price, and nothing on chain checks it against an independent source today.
5. Custodial UX
A custodian (a wallet provider, broker or fintech app) takes user deposits and:- Mints Continuum positions on the user’s behalf.
- Shows them as “QQQ exposure” without exposing the paired primitive.
- Absorbs fees and slippage itself.
6. Borrowing against L tokens (mainnet only)
Continuum has no margin or borrowing. A lending market that accepted L tokens as collateral would allow a loop:7. Vault that rebalances
A program takes cUSDC deposits, mints a target basket across markets, rebalances with mint and redeem, and charges a management fee. Build it as an Anchor program that holds positions in a PDA and calls Continuum by CPI. Schedule rebalances inside market hours. Mint and redeem revert once a price is 300 s old, and Stress blocks both by default.8. Cross-protocol routing
A user who wants short QQQ exposure has two paths inside Continuum:- Mint a pair and sell the L leg with a committed order.
- Buy QQQ S with a committed order while QQQ is open, or on the bin book with
pool_swapwhile its price is stale.
9. Pre-trade quotes
Quote a mint before the user signs, with the worst-case NAVs and the fee multiplier thatmint_paired applies:
simulateMint(m, 100_000_000n, now) returns 0.066374 L and 0.163706 S at 27 bps. The transaction mints the same amounts unless the keeper posts a new price or fee, or the risk state changes, before it lands. Show no quote when fresh is false: the program rejects prices more than 300 s old.
10. Data product
Continuum’s activity is on chain. An indexer can follow:- mint-redeem’s
PairedActionExecutedevents: every mint and redeem, with its fee and dev tax. - The CLP’s
SwapExecuted,OrderCommitted,OrderSettled,OrderRefundedandOrderCancelledevents. update_risk_state_v2price pushes, which carry the source’s publish time.- The
RevenueAttributionaccount, which splits fees and volume between the keeper and external traders.
Patterns we like
- Use the Market price as the price of record. Every mint, redeem and committed order uses it, and the keeper writes it.
- Route by market state. While a market’s price is live, send trades to
commit_swap, which fills at NAV ± the committed spread within the CLP’s inventory and the 100% collateral floor. While it is stale,pool_swapfills small trades instantly. Mint or redeem when you want the pair itself. - Watch the risk state. Stress blocks mint and redeem by default, so show it to the user.
- Plan for gaps in keeper pushes. After 300 s without a push, mint and redeem revert with
TwapNotAvailableand committed orders can’t settle. That happens whenever the underlying market is closed. The bin books open then.
Patterns to avoid
- Don’t pre-mint and hold inventory. Positions track NAV, so mint when you need them; the S leg also loses value to γ while it sits.
- Don’t assume markets move together. Each market prices from its own feed, so treat them independently in basket math.
- Don’t skip ATA creation. Idempotent creation costs about 0.002 SOL of rent, once per user and mint.
- Don’t assume a trade fills in full. A capped market (
Clp.oi_capabove 0) limits traders’ net position. A committed order fills up to the room left and refunds the rest, and apool_swapthat doesn’t fit reverts. On a capped market these also need the exposure accounts as remaining accounts: the pool long and short synth vaults and the CLP’s long and short token accounts. Redemptions are not capped and need none, because they burn a balanced pair. See Exposure cap. Size is also limited by book depth, CLP inventory and the collateral floor.
Talk to us
If you’re building on Continuum, drop a note in Discord. We can help with the integration, and mainnet partner integrations get priority listing slots.See also
CPI integration
On-chain integration via Cross-Program Invocation.
Reading state
Pull all the data your integration needs.

