coefficient: the k value of the “x*y” formula, set by the market creator

reserve0: the initial value of the USD virtual liquidity, set by the market creator

reserve: the latest value of the USD virtual liquidity

decayPerSecond: exponential TWAP decay for markPrice, with 99.8% as default value

timeElapsed: the seconds elapsed since the last time when poke function is triggered

maxPokeElapsed: the max time cap for the timeElapsed, with default value as 1 hour(3600 seconds)

markPrice: exponential TWAP of spot price. It is used to calculate unrealized PNL and determine liquidations on the position.

markPrice = previousMarkPrice * decay + spotPrice * (1 - decay), where

decay = decayPerSecond ^ timeElapsed

indexPrice: price from external exchanges, provided by a Chainlink oracle

spotPrice: AMM price + shift, where AMM price = (coefficient / reserve) / reserve

fundingAdjustThreshold: if the difference of markPrice and indexPrice is above this threshold, funding will be adjusted. With default value as 0.5%.

shift: funding adjustment

markIndexDiff = abs(markPrice - indexPrice) / indexPrice

if markIndexDiff > fundingAdjustThreshold:

shift = previousShift + timeElapsed * markIndexDiff / secondsInADay


shift = previousShift

strikePrice: the price at which the leverage position is worth 0

strikePrice of long position = markPrice + markPrice / leverage

strikePrice of short position = markPrice - markPrice / leverage

safeThreshold: buffer for liquidation, with default value as 93%

Long positions get liquidated when strikePrice / markPrice <= safeThreshold

Short positions get liquidated when markPrice / strikePrice >= safeThreshold

spotMarkThreshold: (spotPrice / markPrice) or (markPrice / spotPrice) must not exceed this value for a trade to be executed. Default value is 105%. This is a protection against price manipulation.

liquidationPerSec: the maximum amount of opposite trade the protocol will do per second to offset the liquidations. This is useful to prevent the flash crash of the price during big liquidation events.

liquidityChangePerSec: the maximum liquidity change per second, with default value as 0.5% per day cap

smallDecayTwapOI:exponential TWAP open interest for a shorter period

largeDecayTwapOI:exponential TWAP open interest for a longer period

smallOIDecayPerSecond: a faster exponential TWAP decay value to calculate smallDecayTwapOI, with default value as 99.999%

largeOIDecayPerSecond: a slower exponential TWAP decay value to calculate largeDecayTwapOI, with default value as 99.9999%

volumeChangeThreshold: If the difference between dailyVolume and prevDailyVolume is larger than this value, liquidity will be dynamically updated. Default value is 120%.

OIChangeThreshold: if (smallDecayTwapOI / largeDecayTwapOI) or (smallDecayTwapOI / largeDecayTwapOI) exceeds this value, the liquidity will be dynamically adjusted

isLiquidityDynamicByOI: boolean flag to turn on/off the liquidity adjustment based on open interest movement

isLiquidityDynamicByVolume: boolean flag to turn on/off the liquidity adjustment based on trading value trend

Last updated