Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

Mark price

Parcl V4 uses multiple price references for different purposes. The price shown in the UI ("mark price") may not match the price used for liquidation checks. The price used for funding rate calculation may differ from both. This separation prevents orderbook manipulation from triggering forced liquidations or distorting funding.

The exact routing depends on asset class because the threats and tradeoffs are different for daily-cadence real estate indices vs. continuously-traded markets.

Price references

NameDefinitionAlways available?
Oracle priceLatest signed price from the external oracle feedWhen fresh; may go Stale during venue closures
Impact midDepth-weighted VWAP midpoint of the orderbookWhen the book has sufficient depth
Last tradeMost recent trade price on this marketWhen recent trades exist
Median markmedian(oracle, impact mid, last trade) โ€” robust to one bad sourceWhenever any two of the three are valid

Mark price by asset class

Asset classMark price methodWhy
Real estateImpact midDaily oracle has no intraday signal; orderbook is the only intraday reference
Continuous marketsMedian markMedian is robust to single-source failure (stale oracle, manipulated book, weird trade)

Why the median for continuous markets

The median property requires two of three sources to be wrong before an attacker can push it. Concrete examples:

Normal trading. Oracle $102.30, impact mid $102.32, last trade $102.31 โ†’ median $102.31. Tracks oracle, which tracks the real market.

Manipulation attempt. Attacker pushes orderbook to skew impact mid to $115. Oracle $102.30, impact mid $115, last trade $102.30 โ†’ median $102.30. Manipulation rejected.

Stale oracle. Oracle frozen at $102.20 (external feed stopped publishing), impact mid $103.05 (orderbook drifted), last trade $103.10 (recent fills moved). Median $103.05. It tracks reality and ignores the stale oracle. Liquidations and stops still fire correctly.

If the external feed stalls, the two orderbook-derived inputs remain current, so the median keeps tracking the market. Triggers and liquidations on continuous markets stay enforceable through the outage. That feed is outside our control, so this fallback is what holds the market together without depending on the source.

Why real estate is different

Real estate uses the impact mid for display, unrealized PnL, and margin, and the Parcl price feed for triggers and liquidations.

The median is not used on real estate. It combines the feed, the impact mid, and the last trade, but on real estate the last trade adds little. Real estate is slow-moving: markets can go days without a trade, as observed on Parcl V3. The last trade is therefore often stale, and a stale last trade falls back to the impact mid. A fresh last trade is itself a book price. Either way the third input reduces to the book, which leaves the median resting on the feed and the book. With the feed on a daily cadence, the median tracks the book, the same value as the impact mid. We use the impact mid directly rather than a median that reduces to it.

Triggers and liquidations use the price feed rather than the impact mid. The feed is exogenous, and order flow cannot move it. Order flow can move the impact mid on a thin book. Triggers and liquidations execute automatically at the referenced price, so they use the reference that order flow cannot move. They fire only on a feed update. The tradeoff is that the displayed mark and the trigger reference differ. A real estate stop fires on the daily feed update, not on intraday book movement.

Impact mid

The impact mid is a depth-weighted midpoint that resists manipulation by small orders. Instead of taking the simple midpoint of best bid and best ask, it walks each side of the orderbook. It accumulates notional value up to a configured threshold and computes the volume-weighted average price (VWAP) for each side. The impact mid is the midpoint of the two VWAPs.

Depth threshold: $25,000 on all markets.

A single dust order at the top of book cannot move the impact mid. Moving it by 1% requires roughly $25,000 of resting depth on the pushed side.

Fallback behavior:
  • If either side of the book has insufficient depth to reach the threshold, impact mid falls back to the oracle price.
  • If the depth threshold is 0, impact mid degrades to the simple midpoint (best bid + best ask) / 2.

Which price is used where

For how the liquidation reference price plugs into the margin inequality, see Liquidations.

Real estate markets

PurposePrice referenceWhy
Displayed mark priceImpact midOnly intraday signal on daily-oracle markets
Unrealized PnLImpact midMatches displayed mark
Margin check (initial/maintenance)Impact mid
Liquidation checkOracle priceCannot be moved by order flow
TP/SL trigger evaluationOracle pricePrevents stop-hunting via orderbook manipulation
Funding rateImpact midFunding cares about book imbalance

TP/SL triggers and liquidations fire on the oracle price, not the displayed mark. Your stop-loss fires only when the underlying real estate index actually moves (once daily at the oracle update), not when someone moves the orderbook intraday. On thin real estate books, orderbook-based triggers are vulnerable to manipulation.

Continuous markets

PurposePrice referenceWhy
Displayed mark priceMedian markRobust real-time reference
Unrealized PnLMedian markMatches displayed mark
Margin check (initial/maintenance)Median mark
Liquidation checkMedian markStays enforceable 24/7 (falls back to orderbook when oracle stale)
TP/SL trigger evaluationMedian markMatches what traders see; resistant to single-source manipulation
Funding rateImpact midFunding cares about book imbalance

TP/SL triggers and liquidations on continuous markets fire when the median mark crosses the threshold, not when any single source crosses. Your stop fires when our chain's median price hits your trigger. The median closely tracks the actual market price, even when the oracle goes stale.

Funding rate premium

The funding rate uses the impact mid as its input regardless of asset class:

premium = (impact_mid - oracle_price) / oracle_price

The funding rate responds to real-time orderbook imbalance regardless of what the oracle says. This is the same on every asset class because funding's job is to anchor the book to the index. Its job is not to anchor the book to the reference that triggers and liquidations fire on.