Markets
Asset Classes & Roadmap
Launch Coverage
At launch, Origin lists perpetual futures across three asset classes:
- Crypto perps. BTC, ETH, SOL, and major altcoins.
- Equity perps. Major single-name equities and equity indices.
- Commodity perps. Precious metals, energy, and agricultural benchmarks.
All contracts are quoted in USD and settled in stablecoins.
Roadmap
Options, spot, and FX perpetuals are scheduled to follow.
- Options. Will share the same margin account as perps, allowing portfolio-margined risk offsets.
- Spot. Will leverage the same orderbook and settlement infrastructure.
- FX perps. Will reference rates derived from Circle StableFX liquidity, giving traders 24/7 access to currency pairs natively settled in stablecoins.
Listing Process
Listings are permissioned. New markets are reviewed for liquidity, oracle availability, regulatory considerations, and risk-parameter feasibility before being activated. Each listing publishes a complete parameter set at the time of activation:
- Initial margin, maintenance margin, and leverage tier ladder
- Position limits
- Tick size and lot size
- Oracle source binding (Pyth feed identifier and CEX price source set)
- Funding configuration
- Fat-finger band
Contract Specifications
Quote and Settlement Currency
Every contract is USD-denominated. PnL is calculated in USD and credited or debited in the user's collateral assets. If a user holds non-USD collateral, realized PnL settles against that collateral at the prevailing oracle exchange rate, with haircuts applied (Section 4.3).
Tick Size and Lot Size
Tick size and lot size are set per market based on liquidity profile and price magnitude. High-liquidity, high-price markets (e.g., BTC) use finer ticks expressed in absolute USD; lower-price markets use ticks expressed as a percentage of price to avoid quoting noise. The full table is published on the markets reference page.
Position Limits
Each market enforces a per-account maximum position size. Limits scale with the user's effective margin tier and are designed to prevent any single account from accumulating risk that would be difficult to liquidate without market impact.
Market States
A market can be in one of the following per-market states at any time. These are distinct from system-wide operational states (Section 10), which act as a global envelope over all markets.
| State | Behavior |
|---|---|
LIVE | Full trading. |
POST_ONLY | Only post-only limit orders accepted; takers rejected. Used during volatility spikes or oracle anomalies. |
REDUCE_ONLY | Only orders that reduce existing positions accepted. Used during planned market windowing or risk events. |
HALTED | No order activity. Existing positions continue marking; liquidations paused if halt is triggered by oracle staleness. |
DELISTED | Market removed from listing; users notified to close before final settlement. |
Transitions between states are logged on-chain and announced via the WebSocket market-state channel.
Virtual Cross-Currency Markets
Core Concept
Origin exposes markets like GOOGL/KRW, BTC/EUR, and XAU/JPY without maintaining separate orderbook liquidity for every quote currency. Instead, each virtual cross-currency market is a composition of a canonical USD-denominated perp book and an FX overlay:
GOOGL/KRW = GOOGL/USD-PERP + USD/KRW FX layer
BTC/EUR = BTC/USD-PERP + USD/EUR FX layer
XAU/JPY = XAU/USD-PERP + USD/JPY FX layer
This gives users a native local-currency trading experience while all orderbook liquidity, funding, risk, and market-maker hedging remain unified around canonical USD books.
User Experience vs. Protocol Reality
From the user's perspective:
- Deposit KRW1, see margin in KRW, trade GOOGL/KRW, see PnL in KRW, withdraw KRW1.
From the protocol's perspective:
- Collateral is valued in USD. The order routes to the canonical GOOGL/USD book. The FX overlay prices USD/KRW. The Risk Engine computes everything in USD. Settlement converts through StableFX only when needed (withdrawal or liquidation), not on every trade.
The user's actual economic exposure is to a USD-denominated GOOGL/USD perp. The KRW display is a presentation layer over that canonical position. PnL is USD-denominated at source; KRW figures are display conversions. Users who hold KRW1 collateral and trade GOOGL/USD perps carry FX risk on their collateral, not on their perp position itself. Origin makes this distinction explicit in account statements and the order preview.
Virtual Market Definition
Each virtual market is registered as:
| Field | Example |
|---|---|
virtual_market_id | GOOGL-KRW-PERP |
canonical_market_id | GOOGL-USD-PERP |
display_quote_currency | KRW |
settlement_stablecoin | KRW1 |
fx_pair | USD/KRW |
max_fx_drift_bps | 25 |
fx_quote_ttl_ms | 3000 |
The virtual market is a routing and display configuration; it is not a separate orderbook. Risk, funding, open interest, and position records are all maintained on the canonical USD market.
Price Construction
The virtual index and mark prices are composed from the canonical USD price and the FX overlay:
virtual_index_price = asset/USD index × USD/local TWAP
virtual_mark_price = asset/USD mark × USD/local conservative mid
The virtual mark is used for display, liquidation price estimates shown to users, and SL/TP trigger conditions expressed in local currency. The canonical USD mark remains the source of truth for all actual risk and margin calculations.
The displayed bid/ask spread for a virtual market reflects both the asset perp spread and the FX spread:
virtual bid = asset/USD impact bid × USD/local executable bid
virtual ask = asset/USD impact ask × USD/local executable ask
Order Routing and Limit Translation
When a user places a local-currency limit order (e.g., Buy GOOGL/KRW limit ₩250,000), the system translates the limit into a canonical USD price at placement time:
# Buy side: user pays local currency for USD exposure
canonical_limit_usd = local_limit / USD_local_execution_ask
# Sell side: user receives local currency from USD exposure
canonical_limit_usd = local_limit / USD_local_execution_bid
Origin uses dynamic FX-bound limits: the original local-currency limit price and FX reference rate are stored alongside the translated USD limit. If FX moves beyond max_fx_drift_bps while the order rests on the book, the order is cancelled by default (configurable to pause or reprice). This protects the user from having their KRW-denominated price intent silently become a different economic outcome after an FX move.
Funding
Funding remains canonical. A single GOOGL/USD funding rate applies regardless of the user's display currency. There are no separate funding rates for GOOGL/KRW, GOOGL/EUR, or GOOGL/JPY. This eliminates liquidity fragmentation and cross-currency funding arbitrage. Funding payments are denominated in USD and reflected in KRW only as a display conversion.
Market-Maker Model
Virtual cross-currency markets are powered by two specialized liquidity roles:
| Participant | Provides |
|---|---|
| Perp market maker | Quotes on canonical Asset/USD books |
| FX liquidity provider | Quotes on stablecoin FX pairs (e.g., USDC/KRW1) via StableFX |
| Origin virtual layer | Synthesizes Asset/local-currency markets from both |
Market makers do not need to quote every synthetic pair directly. A market maker quoting GOOGL/USD and an FX LP quoting USDC/KRW1 together enable GOOGL/KRW for users, without requiring any participant to hold or hedge cross-currency perp inventory.

