Comment on page

Protocol Overview

Parcl v3 is a perpetuals dex that offers real estate index markets for speculating or hedging. Core features and improvements on previous iterations include more scalable liquidity provision, flexible governance, and risk management features that protect LPs and traders from excessive market imbalance. The design is heavily influenced by Synthetix perps.


The protocol can support many exchanges where each exchange has a single collateral and a single LP pool.
Markets belong to a single exchange. Each market's counterparty for trading is its associated exchange's LP pool. LPs underwrite and clear all trades, collect the majority of trading fees that they split with the protocol, and act as that particular exchange's insurance fund. It is as if the LP pool has a monopoly market making privilege on that exchange's markets.
The protocol's risk management features promote a delta neutral LP experience by creating incentives to decrease market skew and levying penalties on trader who increase market skew.
If risk management params are insufficient, then governance adjusts them and fine tunes over time.

Flexible Governance

Exchange settings and market settings are configurable by the protocol admin, which can be migrated to a DAO. This allows the protocol admin to adjust and respond to changing market conditions and user behaviors.
Risk management settings on the exchange and markets are a crucial subset of the total settings that the protocol admin can configure to better align LP and trader incentives.

Risk Management

Key Risk Management Settings

Skew Scale

Skew scale is used to normalize market skew for use in risk management calculations. Each market has its own skew scale.
premium/discount=skewskewScalepremium/discount = \frac {skew}{skewScale}
Skew scale determines how sensitive premiums/discounts are to marginal changes in skew, which is used in risk management calculations.

Max Funding Velocity

Max funding velocity is a market's maximum rate the funding rate increases by per day. Each market has its own max funding velocity.

Max Side Size

Max side size is a market's maximum open interest measured in base asset units that can be opened per side of the market. Each market has its own max side size.
For example, if max side size is 100 sqft, then the max long open interest available is 100 sqft and the max short open interest available is 100 sqft.

Price Impact

Each trade’s fill price is adjusted linearly by the trade’s impact on the market’s premium/discount. It produces a symmetrical high frequency rebalancing opportunity since any trade that reduces skew will receive a discounted price and any trade that widens skew will receive a price premium.
The purpose of the dynamic fill price is to disincentivize volume that increases skew and promote volume that contracts skew by directly adjusting entry prices similar to how a perps market maker might widen or tighten spreads on a perps clob in response to price drift or net exposure to funding.
fillPrice=indexPrice(1+skewskewScale)+indexPrice(1+skew+tradeSizeskewScale)2\small {fillPrice} = \frac{{indexPrice}(1 + \frac{{skew}}{{skewScale}}) + {indexPrice} (1 + \frac{{skew}+{tradeSize}}{{skewScale}})}{2}


Funding keeps markets balanced by taxing the majority side of a market and paying that tax to the minority side of the market. Funding flows through the LP pool, so it can be a short term risk to LPs.
The funding rate uses a velocity model where the premium/discount clamped to 1 is multiplied by the market's max funding velocity and time elapsed in days. This means the effective rate increase for markets that are not maximally skewed is a fraction of max velocity multiplied by time elapsed.
Δrate=max(1,min(1,skewskewScale))maxFundingVelocitydaysElapsed\small \Delta rate = max(-1, min(1, \frac{skew}{skewScale})) \cdot maxFundingVelocity \cdot daysElapsed
Funding per unit is the collateral denominated accumulation of the funding rate over time. It is the average funding rate over the elapsed time period multiplied by the index price and the time elapsed in days. This value is what is used to determine a position's accrued funding by finding the position's net funding per unit, which is current funding per unit less the position's last interaction funding per unit.
ΔfundingPerUnit=averageFundingRateindexPricedaysElapsed\Delta fundingPerUnit = averageFundingRate * indexPrice * daysElapsed
netFundingPerUnit=currentFundingPerUnitpositionFundingPerUnitaccruedFunding=positionSizenetFundingPerUnitnetFundingPerUnit = currentFundingPerUnit - positionFundingPerUnit \\ [5mm] \newline accruedFunding = positionSize * netFundingPerUnit

Margin System

The protocol uses a cross margin system. Margin accounts can have a maximum of 12 positions. If an account falls below its total required margin, then it is fully liquidated. All usdc margin backing the account is sent to the LP pool. Total required margin is the account's maintenance requirement plus a liquidation fee buffer. The account's maintenance margin is the sum of the account's positions' maintenance margins.
totalRequiredMargin=accountMaintenance+liquidationFeeBuffertotalRequiredMargin = accountMaintenance + liquidationFeeBuffer
The protocol uses a dynamic initial margin ratio, a constant minimum initial margin ratio, and a maintenance margin proportion of the computed initial ratio.
The dynamic initial margin ratio scales linearly with position size normalized by skew scale. The total computed initial margin ratio sums the dynamic ratio and the minimum initial ratio. The minimum initial ratio is used to set the lowest possible requirement.
The maintenance ratio is the product of the total initial ratio and the market's maintenance proportion.
initialRatio=initialRatio  positionSizeskewScale+minimumInitialmaintenanceRatio=initialRatio  maintenanceProportioninitialRatio = initialRatio \ \cdot \ \frac{positionSize}{skewScale} + minimumInitial \\ [5 mm] maintenanceRatio = initialRatio \ \cdot \ maintenanceProportion

Trading Fees

The trade fee is determined by the trade's notional size multiplied by the calculated trade fee rate.
It is a risk management feature in the sense that the trade fee rate is a blend of the market's maker fee rate and the market's taker fee rate. "Maker" is the v3 parlance for traders who widen skew and "takers" is the v3 parlance for traders who decrease skew.
fee=(makerPercentnotionalmakerFeeRate)+(takerPercentnotionaltakerFeeRate)\small fee = (makerPercent \cdot notional \cdot makerFeeRate) + (takerPercent \cdot notional \cdot takerFeeRate)
Trades that only increase skew use the taker fee rate. Trades that only decrease skew use the lower maker fee rate. Trades that flip skew are the only trades that receive a blended fee rate between the maker and taker rates weighted by the proportion of their trade that increased and decreased skew.
Last modified 19d ago