Margin
Parcl V4 supports two margin modes. Cross margin is the default: all your positions share one collateral pool. Isolated margin gives each position its own dedicated collateral bucket, so a position that blows up can only lose what's in its bucket. The rest of your account stays intact.
Cross margin
Your account has one collateral balance in USDC. Every cross position draws from and contributes to that single pool. If one position is up and another is down, the profit offsets the loss before any liquidation check runs.
This is more capital-efficient than isolated. A $10,000 balance backs every cross position you have open, and unrealized gains on one can keep another out of liquidation.
account_value = collateral + sum(unrealized PnL across all cross positions)Your account is healthy as long as account_value >= maintenance_margin_required, where the requirement is the sum of notional * MMR across cross positions.
Isolated margin
An isolated position has its own collateral bucket, separate from your cross collateral. The engine sizes the bucket at fill time:
bucket = notional / leverageIf you open a $10,000 isolated position at 10x leverage, the bucket starts at $1,000. The other $9,000 of your collateral stays in the cross pool. Nothing that happens to the isolated position affects it.
If the position loses money, the loss comes out of the bucket. If the loss exceeds the bucket, the engine liquidates the position. You lose only what was in the bucket. An isolated position's losses never touch your cross collateral.
The trade is that the bucket is all you've got for that position. A 2% adverse move at 10x leverage burns through 20% of the bucket, with no help from the rest of your account.
Selecting leverage
Cross orders also have a leverage parameter, but it works as a sizing guardrail. The validator caps order size so a fresh position at that leverage would fit your free collateral. It doesn't change anything once the order fills.
Isolated orders use leverage to size the bucket. A 10x isolated order on $10,000 of notional puts $1,000 into the bucket. A 5x isolated order on the same notional puts $2,000 in.
Each market caps leverage at floor(10000 / IMR_bps). A market with a 2% IMR (real estate) caps at 50x. Live markets also apply size-based margin tiers that lower this cap further as a position grows. See Margin tiers.
Add and remove margin
You can move collateral into or out of an isolated bucket while the position is open. Send an AdjustIsolatedMargin transaction:
positive delta → cross collateral moves into the bucket (lowers effective leverage)
negative delta → bucket collateral moves back to cross (raises effective leverage)Removing margin has a floor. The bucket has to stay at or above the position's initial-margin requirement at the selected leverage. The validator rejects a remove that would drop below that floor.
Mode is locked while a position is open
A market holds at most one position per account. The position's mode stays fixed for its life. If you have an open isolated long on NYC, you can't switch that position to cross. Any new order on NYC has to be on the same isolated position, which adds to it, or a reduce-only order to close it.
If you want to flip a position from isolated to cross, you have to close it first and open a fresh one.
Margin requirements
Each market has two thresholds. See margin in finance for general background on initial and maintenance margin.
| Threshold | Real estate | What it means |
|---|---|---|
| Initial margin | 2% (200 bps) | Required to open or increase a position |
| Maintenance margin | 1% (100 bps) | Below this, the position is liquidated |
Margin requirements are a percentage of position notional. A $50,000 notional position on a real estate market needs $1,000 to open and $500 to stay alive.
The rates above are the base (smallest-size) requirements. Every live market also applies margin tiers: a larger position carries a higher maintenance margin and a lower max leverage.
Margin tiers
Large positions are riskier to unwind than small ones. A forced liquidation moves the book more, and the venue carries that risk. To price it, a market can require more margin as your position grows. Max leverage steps down and maintenance margin steps up across a series of notional brackets.
A tier table is a step function on position notional. Example:
| Tier | Position notional | Max leverage | Maintenance margin |
|---|---|---|---|
| 1 | up to $250k | 20x | 5.0% |
| 2 | $250k – $1M | 10x | 7.5% |
| 3 | above $1M | 5x | 10.0% |
Your position's notional determines which tier applies. A $400,000 position on this market sits in tier 2. It can run at most 10x leverage, and its maintenance margin is 7.5% of notional. The engine evaluates the maintenance tier at your liquidation price, the price at which the maintenance check would trigger. So the number you see is the requirement that actually governs your liquidation.
The protocol also allows flat, un-tiered markets, which use the base rates from the section above at any size. Every current live market, though, uses tiers.
No jump at a boundary
Maintenance margin is continuous across tier boundaries. A position that crosses from one tier into the next does not suddenly owe a large step of extra margin on its entire notional. Each tier above the first carries a fixed credit so that the requirement rises smoothly:
maintenance_margin = notional * tier_MMR - tier_deductionThe protocol calibrates the deduction so that, exactly at a boundary, the requirement computed with the lower tier's rate and the higher tier's rate agree. You never self-liquidate by adding a single unit that tips you into the next bracket.
Grandfathering
When the protocol adds or changes a market's tier table, it grandfathers every position already open on that market. A grandfathered position:
- Keeps its original margin terms. The tier change itself never liquidates it. Its maintenance margin continues to use the flat base rate, not the new tiered schedule.
- Becomes reduce-only. You can hold the position or reduce it, but you cannot increase it (or add to it in the same direction). New exposure has to clear the current tiers.
This means a rule change never force-deleverages an existing position. You decide when to unwind it. To trade the market at the new tiers, close the grandfathered position and open a fresh one. The engine sizes and margins the fresh position under the current table.
Liquidation by mode
Cross liquidation is account-level. When account_value < maintenance_margin_required across the whole cross pool, every cross position is at risk. The exact close path depends on what the account holds. See Liquidations and ADL.
Isolated liquidation is per-position. The check runs against the bucket alone:
bucket + unrealized_pnl_at_trigger < notional * MMR → liquidate this one positionThe liquidation does not touch other isolated positions on the account. It does not touch the cross pool. It consumes only the bucket.
Isolated liquidations follow the same waterfall as cross, scoped to the bucket. The position closes on the orderbook first. If the book can't absorb it, the same block it escalates to the backstop (the Liquidator Vault) and then to auto-deleveraging. The protocol absorbs any loss beyond the bucket, never your cross collateral or your other positions.
Why a voluntary close can be rejected
If your isolated position is far enough underwater, a close at the current book price would lose more than the bucket holds. The validator rejects that close. The protocol walls off your cross collateral, so the shortfall can't come from there. It would instead land on the protocol as bad debt. A voluntary order shouldn't hand the protocol a loss, so the engine leaves a position that far underwater to the liquidation sweep. The sweep is the sanctioned path for routing any past-bucket deficit to the protocol Treasury.
In practice you'll see this if you try a pure market close (no slippage cap) on an isolated position. You'll also see it if your limit price is below the bucket-survival point. Set a tighter limit, or let the liquidation handle it.
Liquidation price
The liquidation price depends on your entry, size, and the margin behind the position. For an isolated long:
liq_price = entry - (bucket - notional * MMR) / sizeA $10,000 long at $100/unit with a $1,000 bucket (10x leverage) and 1% MMR liquidates at roughly $90.10.
The formula is an approximation for intuition. The exact trigger price comes from an iterative check, because the maintenance requirement itself moves with price. Expect the app's displayed liquidation price to differ by a small amount.
Liquidation fills charge the account's ordinary taker fee, folded into the bankruptcy-price bound. The fee changes only which fill prices are acceptable once liquidation starts. It is not part of this formula and does not move your liquidation price.
For cross positions, the calculation is the same formula. It uses the cross pool's contribution to that position's margin instead of a dedicated bucket. Other positions' PnL can move the trigger.
Every live market uses tiers. MMR in this formula is therefore your position's tier rate (with the tier credit folded in), not the flat base rate. A larger position sits in a higher tier and so liquidates at a price closer to entry than the base rate alone implies. But you post that higher margin up front when you open or add to the position, so it isn't a hidden penalty.
The liquidation trigger uses the oracle price on real-estate markets and the median-of-3 mark on every other asset class. See Mark price for why.
Adding and removing collateral (account level)
Independent of margin mode, you can move collateral into and out of the account.
Adding: on devnet, claim test USDC from the faucet, then deposit it through the bridge. Bridge-signer attestations credit the deposit to your margin account after quorum.
Removing: submit RequestWithdrawal. The validator rejects the withdrawal if the remaining collateral would put any cross position below its initial-margin requirement or fail to cover any open isolated position's reserved margin.
Unrealized PnL as margin
Unrealized PnL on cross positions counts toward your account value and can back new cross orders. You don't need to close a winning position to use those gains as margin somewhere else.
Isolated PnL stays in the bucket. A winning isolated position's profit isn't available as cross margin until you either close the position or remove margin from the bucket via AdjustIsolatedMargin.