Skip to main content
Alongside crypto, Arcus offers perps on real-world assets (RWAs) — equities, commodity ETFs, and index ETFs. They work like crypto perps (a CLOB, margin, funding, and liquidations), but they reference assets that trade on a schedule. This page is the reference for what changes when the underlying is closed.
This page explains the mechanics. Per-market values — margin fractions, trading hours, and the live band state — come from GET /v1/markets; read them from the API rather than hard-coding the examples here.

Why RWA perps

  • 24/7 exposure. The underlying stock or commodity market is open only part of the week; the perp lets you take or adjust a position any time — overnight, weekends, holidays.
  • Leverage and shorting. Go long or short with leverage, from the same USDG collateral you use for crypto.
  • One account, many asset classes. Crypto, equities, commodities, and indices share a single balance and margin system.

Corporate actions

Cash dividends are reflected in the market’s oracle price, which tracks the underlying; Arcus doesn’t pay them out through funding. Arcus stock tokens handle the same events through an on-chain oracle adjustment; see the help-center FAQs Do I get dividends? and What about stock splits?. The commodity markets (copper, gold, silver, and oil) reference ETFs rather than futures contracts, so there are no futures rolls to pass through. To see what is coming, GET /v1/corporateActions lists every market’s splits, reverse splits, stock dividends, and cash dividends, from announcement until 60 days after they take effect, with the ex-date, effective time, ratio or amount, and status. GET /v1/corporateActions/{market_id} returns one market’s list, and upcomingCorporateActions on GET /v1/markets carries the actions still ahead.

Regular trading hours (RTH)

Each RWA market has a regular trading hours (RTH) window: 04:00–20:00 ET on US trading days, which spans the premarket, the regular session, and after-hours. Exchange holidays are off-hours all day, and early-close days end the window early. The window is published per market as regularTradingHours on GET /v1/markets, and isOutsideRth tells you which side of it the market is on right now. Everything outside that window — overnight, weekends, and holidays — is off-hours, and the guardrails below apply. Crypto perps have no RTH window (regularTradingHours is null) and never enter the off-hours regime.

Trading when the underlying is closed

Outside RTH, liquidity is thin and there’s no reliable external price to anchor to. Arcus keeps the market open but adds guardrails so off-hours trading stays orderly and positions are not easily liquidated purely because of thin overnight or weekend liquidity:

How price bands widen

When a market leaves RTH, the engine seals a settlement anchor — currentSettlementPrice, a 5-minute EWMA of the mark price, captured as the market leaves RTH — and centers the band on it. The band starts narrow and can only widen in fixed steps, a 0.5x → 1x → 2x → 4x multiplier ladder, under sustained one-directional pressure. Each edge sits at:
Because the width scales with initialMarginFraction, how far price can travel inside the band scales inversely with leverage — a lower-leverage (better-collateralized) market is allowed a wider move. At the 4x ceiling, for example: The anchor is per session: a fresh anchor seals at each weekday RTH close (normally 20:00 ET, Monday–Friday), where the previous band is discarded and both sides reset to the 0.5x rung around it. There is no weekend re-seal — Friday’s 20:00 ET close carries the whole weekend, until regular hours reopen Monday at 04:00 ET. Within a session the ladder is one-way — an expanded side never contracts, even if price fully recovers; it only resets when the next session’s anchor seals. The upper and lower sides expand independently — each carries its own multiplier and its own clock, so in a one-sided run one edge can reach 4x while the other is still at 0.5x. Each step up is gated by a sustained-pressure clock — one hour on STANDARD markets, 10 minutes on FAST markets (see Mark tiers). A side enters its expansion zone when an EWMA of that side’s impact price, with the same time constant as the clock (1 hour or 10 minutes), reaches or passes 90% of the distance from the anchor to the edge — including prices beyond the edge itself. It is a one-sided threshold, not a bounded strip: the zone is everything at or past the 90% mark, with no upper limit (a price already trading through the edge is still in-zone, driving the clock toward expansion). On a 10x market at the first rung, for example, the upper zone starts at anchor × 1.045 — 90% of the way to the anchor × 1.05 edge — and extends through the edge and beyond. The zone edges are not separate API fields, but derive directly from the formula: anchor × (1 ± 0.9 × initialMarginFraction × bandMultiplier). Entering the zone starts the clock; if the EWMA stays in the zone for the full clock — a continuous hour, or 10 minutes on a FAST market (with resting depth still present) — that side widens one rung. If it eases out of the zone first, the clock resets and no expansion happens. There is no halt state — the market never stops, and trading inside the band is never restricted. The bound is enforced per order: a crossing order fills as far as the boundary allows, and only the portion that would execute at or beyond it is rejected (FILL_WILL_EXCEED_TRADING_BOUND) — so a run can’t blow through every level at once. Orders that would rest on the book are checked against the band when placed: Here is one full off-hours session on a 10x STANDARD market (anchor 65.71, first rung ±5%), showing a single lower-side expansion:
Price chart of one off-hours session: settlement anchor at 65.71 with trading bounds at ±5% and next bounds at ±10%; price drops into the lower expansion zone (at or past 90% of the way to the lower edge), holds for an hour, and the lower bound steps from −5% to −10% while the next lower bound steps to −20%; price then recovers but the widened bounds remain; the upper side is untouched throughout.

The lower side enters its zone, holds for an hour, and widens one rung. The upper side never moves, and the widened bounds stay for the rest of the session — even after price recovers.

The same lifecycle as a state machine — note the two very different ways back from the zone: easing out resets only the clock, never the band; rungs are permanent for the session:
The diagram shows one side. The upper and lower sides run this state machine independently and can be on different rungs at the same time. The whole machine restarts — new anchor, both sides back at 0.5× — only when the next session’s anchor seals.

Mark tiers

Each RWA market has an off-hours mark tier, STANDARD or FAST, which sets how quickly the market reacts outside RTH. A market qualifies for FAST when its daily volume averages more than $2M over the past 14 days, so the busiest markets’ off-hours mark and bands follow the order book more closely: Everything else is the same for both tiers: the anchor, the 0.5x → 4x ladder, the 90% zone threshold and the per-order bound checks. On either tier, a side whose price is pressing against its edge is never frozen: orders that would fill at or beyond the edge are rejected one by one, and the edge moves only when the sustained-pressure clock completes — after 1 hour on a STANDARD market, 10 minutes on a FAST one. During RTH the tier has no effect — the mark price is computed the same way for every market (see Mark price). Read a market’s tier from markTier on GET /v1/markets rather than computing it yourself: tiers are reassigned as volumes change.

Reading the band from the API

The band is fully observable. The markets fields below are read from GET /v1/markets (and the same values ship on the streaming markets channel). Off-hours band state and every off-hours transition stream on the dedicated marketAttributes channel — a per-market snapshot on subscribe, then that market’s full updated block on each event: RTH⇄off-hours crossings (boundEvent: exitRth / enterRth; the anchor seals and band fields populate on the exit, and return to null on the next open), and the finer bound events (a side entering or leaving its zone, or a bound expanding — boundEvent: expansionZoneEntered, expansionZoneExited, tradingBoundExpanded). It supersedes the older per-market marketAttributes entries on the exchangeAttributeUpdates channel.
These fields carry a value only while the underlying is closed. The keys are always present on every RWA market; each holds a real value only when the market is outside RTH with a sealed anchor (isOutsideRth is true), and reads null otherwise — during regular trading hours, and for 24/7 crypto markets, which have no settlement anchor and no band. Decide whether the band applies by checking isOutsideRth (or a non-null currentSettlementPrice) — do not test for the field’s absence, as the key is always there. The four zone-timing fields are null unless their own side’s is…InExpansionZone is true.Bound values are also per session: at every weekday 20:00 ET re-seal, all of them recompute against the fresh anchor. Compare the is…InExpansionZone flags only against bounds read in the same snapshot — against bounds cached from an earlier session they will look wrong, and a flag can legitimately flip true at the boundary itself if price is already inside the new, narrower band’s zone.
There is no single combined currentTradingBound / nextTradingBound in the API: because the two sides move independently, the “current” and “next” bound are reported per side as the upper… / lower… pairs above.

Funding

How funding is calculated, and the off-hours rate.

Prices

The mark price that drives risk, and how the oracle is sourced open vs. closed.

Margin & leverage

Collateral, leverage, and the off-hours margin regime.

Liquidations

What triggers a liquidation and how off-hours bands help.