Accounts & Collateral
Account Model & Sub-Accounts
Account Model
Each Origin account is keyed to an Arc address. The address is the on-chain custodian of the account's collateral and the authoritative signer for sensitive operations (withdrawals, master-key changes, sub-account creation). Trading authority can be delegated to one or more API keys with scoped permissions.
Sub-Accounts
Each master account can create up to 100 sub-accounts. Sub-accounts have:
- Independent margin and positions. A sub-account's solvency is evaluated in isolation from the master and other sub-accounts.
- Independent API keys. Sub-account keys cannot operate on the master or sibling sub-accounts.
- Shared on-chain custody. Sub-account collateral is held under the master account's Arc address; sub-accounts are an off-chain accounting partition of the master's on-chain balance.
Sub-accounts are commonly used to separate strategies, segregate desk risk, or grant scoped API access without exposing the full master account.
API Authentication
API keys are scoped to one of three roles:
| Scope | Permissions |
|---|---|
read | Read-only access to account state. |
trade | Place, modify, and cancel orders. Cannot withdraw or change account settings. |
withdraw | Initiate withdrawals to whitelisted addresses. |
Keys can additionally be restricted by IP allowlist. Withdrawals to non-whitelisted addresses always require master-key signature, regardless of API key permissions.
Accepted Assets & Haircuts
Stablecoin Collateral
Origin accepts the full set of stablecoins integrated with Circle StableFX as collateral. USDC is the unit of account; non-USD stablecoins are valued at the prevailing StableFX rate when computing margin.
| Asset | Issuer | Reference Currency |
|---|---|---|
| USDC | Circle | USD |
| EURC | Circle | EUR |
| AUDF | Forte | AUD |
| BRLA | Avenia | BRL |
| JPYC | JPYC Inc. | JPY |
| KRW1 | BDACS | KRW |
| MXNB | Bitso | MXN |
| PHPC | Coins.PH | PHP |
| QCAD | Stablecorp | CAD |
| ZARU | ZAR Universal Network | ZAR |
Crypto Collateral
Major crypto assets are accepted as collateral with volatility-adjusted haircuts. The launch set includes BTC and ETH; additional assets are added through the listing process and published in the asset registry.
RWA Collateral
Tokenized real-world assets are accepted as collateral, beginning with USYC (the Hashnote tokenized money market fund issued natively on Arc). RWA collateral allows institutional users to post yield-bearing assets as margin without converting to non-yielding stablecoins.
Haircut Schedule
Each non-USD collateral asset is assigned a haircut that reduces its margin value to account for price volatility, liquidity, and oracle risk.
| Collateral Class | Haircut Range |
|---|---|
| USDC | 0% |
| Non-USD stablecoins | 0% to 2% |
| Major crypto (BTC, ETH) | 10% to 25% (volatility-regime dependent) |
| RWA (USYC and similar) | depends on redemption profile |
Haircuts are reviewed quarterly or on material market events. Live values are published in the asset registry.
FX Haircut Pricing: Price Type by Risk Purpose
For non-USD stablecoin collateral, the FX rate used to value collateral is not a single midpoint. Different risk purposes require different FX price types. The table below defines which rate applies in each context and the conservative direction:
| Purpose | FX Price Type | Conservative Direction | Typical TTL |
|---|---|---|---|
| UI display, charts, indicative margin | Indicative mid | None (display only) | 30 seconds |
| Order preview, limit price translation | Executable bid/ask | Ask when buying USD exposure; bid when selling | 3 seconds |
| Collateral valuation for margin | $1M StableFX RFQ ask | Ask (weakens non-USD collateral value) | 5 seconds |
| Mark price for virtual markets | $1M StableFX RFQ mid, blended with TWAP | Weighted toward conservative side | 5 seconds |
| Liquidation and bankruptcy checks | Stressed FX: $1M RFQ ask × stress multiplier | Ask × (1 + stress_factor) | 1 second |
| Settlement conversions (withdrawal, liquidation) | Executable RFQ at actual trade size | Ask for buys; bid for sells | Live at execution |
| SL/TP trigger conditions (virtual markets) | 5-minute FX TWAP | Smoothed; manipulation-resistant | 5 minutes |
The guiding principle is: the protocol always uses the FX rate that protects solvency. When valuing KRW1 collateral into USD for margin purposes, the conservative ask is used (making the collateral appear worth less, protecting the fund). When paying out USD PnL in KRW on a withdrawal, the executable bid is used (paying the user slightly less KRW per USD than midpoint, which is the real executable rate).
Cross-Currency Margin Addon
When an account's collateral currency differs from the risk currency of its positions (e.g., KRW1 collateral against a GOOGL/USD perp), the Initial Margin requirement includes a cross-currency FX addon:
fx_margin_addon = position_notional_usd × fx_volatility_buffer × currency_mismatch_weight
This addon increases when FX volatility is elevated and is applied per position where a mismatch exists. The addon is in addition to the standard tier-based IM.
Dynamic Haircuts
Collateral haircuts for non-USD stablecoins are not static; they adjust dynamically based on the following inputs:
collateral_factor = base_factor
- volatility_penalty (based on 30-day FX vol)
- spread_penalty (based on live RFQ bid/ask spread)
- depth_penalty (based on RFQ availability at $1M+)
- concentration_penalty (based on share of protocol collateral)
- issuer_penalty (based on issuer risk signals)
Dynamic haircuts narrow the gap between a collateral asset's nominal value and its realizable USD value under stress. They are evaluated continuously and can widen intra-day if conditions deteriorate.
Currency Concentration Limits
To prevent any single non-USD stablecoin from creating unmanageable FX risk at the protocol level, each currency is subject to concentration caps:
| Limit | Description |
|---|---|
max_protocol_exposure_usd | Maximum total USD-equivalent of a given currency held as collateral across all accounts |
max_account_exposure_usd | Maximum per-account USD-equivalent of a given currency |
max_open_interest_backed_by_currency | Maximum open interest that can be margined primarily by a single non-USD stablecoin |
max_liquidation_notional_per_hour | Maximum size of liquidation conversions routed through StableFX per currency per hour |
When a currency approaches its protocol cap, new deposits in that currency may be restricted and the dynamic haircut widens automatically.
Multi-Collateral Valuation
A user's collateral is denominated in USD for margin purposes:
collateral_value_usd = Σ_i ( balance_i × oracle_price_i × (1 - haircut_i) )
This sum is the basis for available margin and the numerator in margin ratio calculations.

