> ## Documentation Index
> Fetch the complete documentation index at: https://continuum-ec12e897.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Markets

> A market is one synthetic asset - a pair of SPL mints, two native CLMM books, a collateral vault, and a CLP vault. Here's how they're shaped and listed.

A **market** in Continuum is one synthetic asset. Each market has:

* A `Market` PDA (mint-redeem program) holding initial prices, fees, supply, TWAP, risk state, buffer target, and the keeper authority.
* Two SPL mints - long (`L`) and short (`S`) - both with the market PDA as mint authority.
* One collateral vault (cUSDC token account) holding the collateral backing outstanding L+S supply.
* Two native CLMM `Pool` PDAs (clp program) - one book per side.
* A `Clp` PDA and per-market CLP vault tracking trading inventory and capital allocation.

Markets are not interchangeable - a QQQL token is a different mint from an SPYL token, even though both are "long" tokens.

## PDA derivation

```
Market: seeds = [b"market", asset_symbol_bytes]        (mint-redeem program)
Pool:   seeds = [b"pool", market_pda, side_byte]       (clp program; side 0 = long, 1 = short)
```

Symbol is the asset ticker as ASCII (e.g. `"QQQ"`).

## What's stored on the Market account

Public fields you'll likely read:

| Field                                 | Type      | Meaning                                                                    |
| ------------------------------------- | --------- | -------------------------------------------------------------------------- |
| `asset_symbol`                        | string    | Market ticker.                                                             |
| `long_mint` / `short_mint`            | Pubkey    | L and S SPL mints.                                                         |
| `collateral_mint`                     | Pubkey    | cUSDC mint.                                                                |
| `collateral_vault`                    | Pubkey    | Token account holding backing cUSDC.                                       |
| `mint_fee_bps` / `redeem_fee_bps`     | u16       | Base fees (10 = 0.10%); scaled up with vol by the keeper, capped at 100.   |
| `initial_l_price` / `initial_s_price` | u64       | 6-dec prices fixed at init; their product is the constant `K`.             |
| `total_l_supply` / `total_s_supply`   | u64       | Outstanding supply on each side.                                           |
| `total_collateral`                    | u64       | Vault balance.                                                             |
| `buffer_target_bps`                   | u16       | Dynamic overcollateralization target, posted by the keeper.                |
| `is_active`                           | bool      | If false, all mint/redeem reject.                                          |
| `risk_state`                          | enum      | `Normal` / `ProxyMode` / `Stress` / `Recovery`.                            |
| `user_twap_price` / `twap_updated_at` | u64 / i64 | Source of `L_NAV` and its freshness (300 s gate).                          |
| `oracle_confidence`                   | u64       | Hermes confidence, pushed with each TWAP update.                           |
| `keeper_authority`                    | Pubkey    | Privileged signer for oracle/book/vault operations.                        |
| `dev_tax_pct`                         | u8        | Slice of fees routed to fee\_recipient (10%); the rest stays in the vault. |

Full schema in [mint-redeem reference](/programs/mint-redeem#market-account).

## Reading market state

```typescript theme={null}
import { Program, web3 } from "@coral-xyz/anchor";
import idl from "./mint_redeem.json";

const program = new Program(idl, provider);
const [marketPDA] = web3.PublicKey.findProgramAddressSync(
  [Buffer.from("market"), Buffer.from("QQQ")],
  program.programId,
);
const market = await program.account.market.fetch(marketPDA);

console.log("Symbol:", market.assetSymbol);
console.log("L mint:", market.longMint.toBase58());
console.log("Vault:", market.collateralVault.toBase58());
console.log("Buffer target (bps):", market.bufferTargetBps);
```

For all live markets at once, batch via `getMultipleAccounts`. See [Reading state](/flows/read-state).

## Live markets

Four markets - eight books - are active on devnet:

| Symbol | Asset                      | Book geometry (core / wing × core bins) | Reposition gate |
| ------ | -------------------------- | --------------------------------------- | --------------- |
| `QQQ`  | Nasdaq-100 ETF             | 20 bps / 300 bps × 3, 12 bins           | 20 bps          |
| `SPY`  | SPDR S\&P 500 ETF          | 15 bps / 250 bps × 3                    | 20 bps          |
| `XAU`  | Gold spot                  | 20 bps / 300 bps × 3                    | 20 bps          |
| `VXX`  | VIX short-term futures ETN | 40 bps / 600 bps × 2                    | 40 bps          |

Fine core steps quote tight near NAV; wide wings hold the float for off-hours drift. The reposition gate is calibrated just below each market's toxic-arb line. Books converge to \~\$5k of bids and ≤\$7.5k of asks per side; committed orders take any size at NAV ± 10 bps.

→ [Live markets table with all pubkeys](/markets/live)

## How a market gets listed

The full operator flow lives in the protocol's operations runbook. At a high level:

<Steps>
  <Step title="Create the market">
    Pick symbol, initial prices, base fees; set the keeper authority. Creates the Market PDA, L and S SPL mints (mint authority = market PDA), and the collateral vault.
  </Step>

  <Step title="Initialize the CLP slot and vault">
    Per-market `Clp` PDA plus the CLP vault and the CLP PDA's L/S/cUSDC ATAs for inventory.
  </Step>

  <Step title="Initialize the books">
    `init_pool` per side, then `configure_pool_geom(wing_step_bps, core_bins)` with steep-wing geometry sized to the asset's vol class.
  </Step>

  <Step title="Configure the keeper">
    Add the market to the keeper config JSON: `min_bps` ≥ \~2× the asset's 5-minute σ, `floor_mult`, `fee_mult` (\~1.0-1.5 for high-vol single names), and the spread window. No model training - the spread floors plus the realized-vol ratchet carry both safety and competitiveness.
  </Step>

  <Step title="Fund the vault and start the keeper">
    Deposit cUSDC into the per-market CLP vault. The keeper mints paired inventory (`vault_mint_pairs`), stocks both books (`set_pool_shape`), and starts the oracle push. The vol state seeds itself from 60 days of Pyth Benchmarks history, so spreads are warm from the first tick.
  </Step>
</Steps>

→ [Listing a market](/markets/listing)

## Asset roadmap

Continuum's targeted launch coverage is **TradFi-only**:

* **Indices**: SPX, NDX (QQQ), FTSE 100, DAX
* **Equities**: NVDA, AAPL, TSLA, GME, AMC
* **Commodities**: XAU (Gold), XAG (Silver), WTI (Oil)
* **Forex**: EUR/USD, USD/JPY, GBP/USD

No crypto markets - the constant-product invariant gives no edge over an actual perp DEX for crypto pairs. High-growth single names ship only with the full solvency stack (vol-informed fees, depth-capped books, re-anchoring) - see [Solvency](/concepts/solvency).

→ [Roadmap](/markets/roadmap)

## Trading hours

Continuum follows the underlying's session for NAV-priced operations, while the books trade around the clock:

* **During the underlying's trading hours**: NAV tracks the live oracle; mint, redeem, committed orders, and books all operate.
* **When the underlying closes** (nights, weekends for equities): the keeper withholds oracle pushes, the on-chain TWAP ages past 300 s, and **mint/redeem self-freezes**. Committed orders can't settle (cancel refunds after 180 s).
* **The CLMM books float** at their standing band off-hours - you can still trade either leg, with price discovery happening inside the band. At reopen, the first fresh print re-anchors NAV and the keeper re-pins the books.

See [Oracle - the staleness chain](/concepts/oracle#the-staleness-chain-what-happens-when-the-market-closes).

## Read more

<CardGroup cols={2}>
  <Card title="Live market addresses" icon="address-book" href="/markets/live">
    QQQ, SPY, XAU, VXX - every pubkey.
  </Card>

  <Card title="How to read market state" icon="magnifying-glass" href="/flows/read-state">
    Batch fetch markets, derive NAV, query book depth.
  </Card>
</CardGroup>
