phasis.
Phasis Docs
Trading Guide

The cross-margin account

How Phasis calculates margin across your entire portfolio using the N-point Black-Scholes stress model.

One account, all positions

Each wallet has a single Account<USDC> on Phasis. That one account holds all of your positions across every series and every underlying (SUI, BTC, ETH) simultaneously. There is no need to manage separate sub-accounts per market.

Account fields

FieldMeaning
balance_quoteFree USDC held in the account (not locked)
locked_marginTotal USDC locked as margin across all assets
quote_lockedUSDC reserved for resting bid orders (the principal for pending buys)
positionsYour signed net positions keyed by series

Each position records: underlying asset, strike, call/put flag, expiry timestamp, net quantity magnitude, and whether the net direction is short.

Free balance

At any moment your free balance is:

free_balance = balance_quote − locked_margin − quote_locked

You can only withdraw free balance. You can only open new short positions if they do not reduce free balance below zero after accounting for the new margin requirement.

How margin is calculated

Phasis uses a portfolio-margin stress model (the N-point Black–Scholes stress grid). Rather than treating each position in isolation, the model evaluates your entire portfolio of positions for a single underlying across a range of hypothetical price scenarios.

The margin requirement for a given asset is the worst-case portfolio loss across N evenly spaced spot price scenarios, where the price range spans ±20% around the current spot (configurable per asset). At each grid point, the protocol computes the Black–Scholes value of every position and sums the portfolio PnL. The margin requirement is the magnitude of the worst loss found.

The actual margin lock applied to your account is:

lock = max(0, requirement − max(0, net_option_value))

Where net_option_value is the net premium you received across your positions (positive if you are a net seller). The idea is that premium you have already collected cushions against potential losses — but only up to the requirement itself.

Long-only and debit spreads: zero margin lock

If your portfolio for an asset consists entirely of long positions, your maximum loss is bounded by the premium you paid. The stress model produces a requirement of zero for long-only portfolios, so lock = 0.

Similarly, a debit spread (e.g., a bull call spread: long ATM call + short OTM call) has a capped maximum loss equal to the net premium paid. The model recognises this and typically locks zero margin, since the long leg offsets the short leg's liability.

Naked shorts: positive margin lock

When you sell options without a fully offsetting long, the downside is unbounded (for calls) or capped at the strike (for puts). The stress model will find a grid point where the loss exceeds any premium received, so lock > 0. You must maintain enough free balance to cover this lock at all times.

Cross-underlying isolation

Margin is computed per underlying. Positions in BTC options do not offset or net against positions in ETH options. Each asset has its own stress calculation and its own lock contribution to locked_margin.

Refreshing margin manually

If a new stress snapshot is published but your account has not been touched since (no trades, deposits, or withdrawals), your stored locked_margin may lag the latest prices. You can force a recompute with:

refreshAssetMargin(tx, {
  registryId,
  accountRegistryId,
  snapshotId,
})

The asset is derived from the snapshot, so it is not passed explicitly.

This is a read-and-update transaction with no fee beyond gas. It is also called automatically whenever you trade.

Withdraw guard

You cannot withdraw USDC if doing so would violate:

balance_quote − withdrawal_amount ≥ locked_margin

This ensures the protocol stays solvent even if prices move adversely after you withdraw.

Continue to Reading the orderbook or jump ahead to Expiry and settlement.

Connect a Wallet

No Sui wallet detected in this browser.

Install Sui Wallet

Phasis supports any wallet that implements the Sui Wallet Standard.