RWA Pricing Mechanism
RWA pricing is derived from two primary sources: external oracle feeds (e.g., Chainlink, Pyth, Stork, and other exchanges) and internal pricing.
The index price is calculated according to the pricing methodology defined below.
The only change is that the
cexPricescomponent is replaced with the pricing methodology defined below.
Pricing Transition
External oracle feeds are the primary price source. When oracle data becomes stale, the pricing mechanism gradually shifts from oracle-based pricing to internal pricing.
Weights are always normalized across sources. On each update:
Determine the active price source (oracle or internal)
Apply exponential decay to the inactive source
Allocate the remaining weight to the active source
Reweighing Formula:
Where:
Δt: time elapsed since the last update
τ_active: source-specific time constant
Time Constants
The time constant varies by transition direction (internal ↔ external) and by price type (index vs. mark).
τinternalmark=12 minutes
τexternalmark=1 minute
τinternalindex=3 hours
τexternalindex=8 minutes

Internal Pricing
Internal pricing is derived from order book impact prices, smoothed using a time-weighted Exponential Moving Average (EMA).
Time-Weighted EMA
Pₜ — current impact price
τ — smoothing time constant
Δt — time since last update
Index Price
For index price we set:
τ = 2 hours
The internal index price is capped relative to the last oracle price and the leverage of the market:
Indexᵢₙₜₑᵣₙₐₗ ∈ [ P_oracle · (1 − 1/L + 0.5%), P_oracle · (1 + 1/L − 0.5%) ]
Where L is leverage.
Mark Price Component
For mark price we set:
τ = 8 minutes
The mark price is capped relative to the last oracle price and the leverage of the market:
Markᵢₙₜₑᵣₙₐₗ ∈ [ P_oracle · (1 − 1/L), P_oracle · (1 + 1/L) ]
A simulation:

Non-USD* Quoted Perpetual Contracts
Future improvements
The EMA values used for the internal index and mark prices will be initialized using the most recent oracle price.
Last updated