Every market carries a full MarketParams struct. Defaults live on the Global account and are set at init_global; the admin may override them per market at create_market, and update them later with update_market_params. The two curve virtual reserves are the exception: they are immutable after creation (ImmutableParam), because the running curve state depends on them.
The values below are illustrative, chosen to show sensible orders of magnitude for a liquid mainnet market. They are not final and would be tuned per underlying at listing time.

Oracle and index

Mark price and funding

Collateral and liquidation

The hedge reserve is the tail-wags-dog guard: it keeps the synthetic market from outgrowing the real collectible market whose price it references. Sizing it is a listing-time judgment call; see Listing a Market. On the internal venue it plays a double role: create_market premints exactly this many base units into the treasury reserve before revoking the mint authority, so the parameter is both the arithmetic check and the physical supply allocation. The binding cap is the smaller of the parameter and the treasury balance. update_market_params can lower the effective cap, but it can never raise the physical reserve: supply is fixed, so the reserve chosen at creation is the facility’s ceiling forever. Size it generously at listing.

Item swaps

Like the hedge reserve, item_reserve is a physical premint made before the mint authority is revoked, so it can never be raised after creation. Each deposit_item pays index_twap * 1e12 * units_per_item_micro / mark_ema / 1e6 base units out of it and each withdraw_item pays the same formula back in, so the reserve floats around its initial size as copies flow in and out. The launch executor sizes it for 25 deposited items at launch scale (units_per_item_micro * 1e6 * 25 base units). Size it to the number of vaulted copies you realistically expect deposited at once, with headroom for the token trading below parity (a cheap mark pays out more tokens per copy).

Launch curve and graduation

The two virtual reserves define the curve’s starting price: curve_virtual_sol / curve_virtual_tokens lamports per base unit. The launch convention is identical for every market, regardless of the underlying: 25 SOL virtual against the full 1B supply opens the token at a 25 SOL market cap, and the 100 SOL graduation target closes the curve at 0.625 SOL per unit, about a 625 SOL market cap, with the entire raise seeding the AMM (see Launch Curve).

AMM

How parameters interact

A few couplings worth knowing when tuning:
  • Breaker vs push interval. breaker_bps bounds movement per accepted push, and min_push_interval_secs bounds push frequency, so together they cap the index’s maximum slew rate even under a compromised oracle key.
  • Staleness vs push cadence. max_index_age_secs should comfortably exceed the relayer’s push interval (and min_push_interval_secs), or routine gaps will lock CDP operations; a 4h guard against an hourly push cadence leaves room for a few missed cycles.
  • Initial vs maintenance CR. The gap (150% vs 120% illustrative) is the shorter’s buffer: how much the index can rise before a fresh position at minimum collateral becomes liquidatable.
  • Funding clamp vs hedge reserve. Worst-case daily value transfer from a manipulated index is max_open_interest * max_funding_bps_per_day / 10000. These two parameters are the security budget.