- A
MarketPDA (mint-redeem program) holding initial prices, fees, supply, the keeper’s latest price, the risk state, the buffer target and the keeper authority. - Two SPL mints, long (
L) and short (S), both with the Market PDA as mint authority. - A collateral vault backing the outstanding L and S supply. It is the Market PDA’s own cUSDC token account; QQQ, SPY and XAU moved to theirs from a shared vault on 11 Oct 2026.
- Two native bin-book
PoolPDAs (clp program), one per side. - A
ClpPDA and CLP vault holding the protocol’s trading inventory and capital for the market. - An
OracleConfigPDA (oracle program), which mint and redeem take as theiroracleaccount.
QQQL token is a different mint from an SPYL token, even though both are long tokens.
PDA derivation
"QQQ"), at most 10 characters. The CLP vault and each pool’s two token vaults are associated token accounts (ATAs) of their PDA. Address registry has a sample that derives all of them.
What’s stored on the Market account
Public fields you’ll likely read:
Full schema in the mint-redeem reference.
Reading market state
getMultipleAccounts. See Reading state.
Live markets
Thirteen markets are live on devnet. They have 26 bin books between them and about $1.4M of total collateral (12 Oct 2026, after the protocol’s own holdings were cut to working size). Each book is a ladder of discrete bins on both sides of a centre price. The firstcore_bins steps out from the centre are step_bps wide, and later steps are wing_step_bps wide. num_bins is the number of bins on each of the bid and ask sides. Geometry as of 10 Oct 2026:
Fine core steps quote tight near the centre, and wide wings hold inventory for larger moves. The keeper centres each book on an inventory-shifted price rather than on NAV itself, and re-centres it as the price moves (see Book management). The books charge no swap fee.
During market hours the keeper stages, per side, the bids its next free-float book will post ($500 until it has measured flow) and trims asks worth more than 1.5 times that. While mint and redeem are frozen, it posts a “free float” book instead: each side in one bin within 1% of the last price, sized to measured demand ($500 a side until the keeper has measured flow) and limited by a risk cap on that market’s share of the treasury. There are no fixed dollar ceilings.
The books fill only while the market’s price is stale: its risk state isn’t
Normal and its last push is more than 300 s old. On QQQ, SPY and XAU, book trades are held to a cap of 1,000,000 cUSDC of notional per one-hour window (swap_guards.window_cap_usd). The other 10 live markets have no window cap set (checked on chain, 13 Oct 2026).
While the price is live, trades go through committed orders. They are on for every live market since 11 Oct 2026, because each one’s Clp account has swap_guards.enabled set. The CLP’s instant clp_swap was retired the same day and reverts with SwapDisabled on every market. An order fills at NAV ± max(commit_spread_bps, 10) bps, where the keeper posts commit_spread_bps as clamp(half-spread, 10, 500). Committed orders have no window cap; the market’s CLP inventory and a 100% collateral floor limit the fill.
→ Live markets table with all pubkeys
How a market gets listed
The Continuum team lists markets as an operator process. In outline:1
Create the market
Create the two mints (6 decimals, Market PDA as mint authority, no freeze authority) and the market’s cUSDC vault. Then call
initialize_market(params: InitMarketParams) (admin only: the signer must be the program’s upgrade authority) with the symbol, initial prices, starting fees and keeper authority.2
Create the oracle config
initialize_oracle_config creates the OracleConfig PDA, and upsert_oracle_feed registers Pyth price accounts as its feeds. The keeper doesn’t use them on devnet.3
Create and fund the CLP
initialize_clp(oi_cap, oracle_config) creates the per-market Clp. The CLP vault and the CLP’s L and S token accounts are its ATAs, and allocate_to_market funds the vault from the GlobalClp.4
Open the books
init_pool(side, step_bps, num_bins) for each side, then configure_pool_geom(wing_step_bps, core_bins). After seeding the pool vaults, the first set_pool_shape posts the bins and enables the pool.5
Update the keeper and the app
The keeper needs code changes and a redeploy before it prices the new market, because it discovers markets only at boot. The app needs its address, taxonomy, logo and token-metadata entries.
Roadmap
Planned markets, withdrawn markets and the path to mainnet are on the Roadmap.Trading hours
Mint and redeem follow the underlying’s session, while the books trade around the clock. The keeper pushes a price only when its source prints a fresh quote, which happens during these sessions:
NYSE holidays close US stocks and ETFs, and NYSE’s 13:00 ET early closes (27 Nov and 24 Dec 2026) shorten the session. Metals shut for Good Friday, Christmas and New Year’s Day, and on other NYSE holidays and early closes they stop at 13:00 ET and reopen at 18:00 ET. The keeper’s alert clock knows these days; the pushes themselves follow the source’s actual prints.
- During the session, the keeper pushes prices, and mint, redeem and committed orders work. The bin books don’t fill while the price is live.
- When the underlying closes, the pushes stop. Once the last price is more than 300 s old, mint and redeem revert with
TwapNotAvailable. A committed order settles only at a keeper push after it was placed, so none settle while the market is closed. About 5 s after the order’s 180 s TTL, the keeper sendscancel_swap, which returns the escrow to the owner. - The bin books open, showing the demand-sized free-float book centred on the last price. A guard compares other venues that keep trading off-hours and may pull bins on the side a move has made stale. It never moves the centre or adds depth.
- At the next session’s first fresh price, the 300 s clock restarts, mint, redeem and committed orders reopen, the books stop filling, and the keeper re-centres them.
Read more
Live market addresses
All 13 markets, every pubkey.
How to read market state
Batch fetch markets, derive NAV, query book depth.

