Public Baskets

Oracle Price

Price oracles are data feeds that provide a reliable reference price for a perp asset. Combined with funding rates, they serve to align the perp price with the reference price of the asset.

External pricing

Ventuals uses Pyth data feeds as the price oracle for public basket perps, which can provide external pricing with up to 24 hour coverage on normal weekdays.

Pyth data feeds source executable quotes from institutional liquidity providers during US trading sessions. For overnight sessions when traditional markets are closed, Pyth sources price data from Alternative Trading Systems (ATS).

When fresh external pricing data is available, it is used directly as the oracle price.

Session
Days
Hours

Pre-market hours

Monday – Friday

4am – 9:30am ET

Normal hours

Monday – Friday

9:30am – 4pm ET

After-market hours

Monday – Friday

4pm – 8pm ET

Overnight

Sunday – Thursday

8pm – 4am ET

Internal pricing

When external pricing is unavailable, the oracle switches to an internal pricing mechanism which initializes on the last available external price.

Oracle=EMA1h ⁣(median(impact_bid_price,impact_ask_price))\text{Oracle} = \mathrm{EMA}_{1\text{h}}\!\left( \mathrm{median}(\text{impact\_bid\_price},\, \text{impact\_ask\_price}) \right)

When external pricing resumes, the oracle snaps to the external pricing mechanism on the next tick.

Session
Session Start
Session End

Weekend

Friday 8pm ET

Sunday 8pm ET

Oracle data feed

External pricing data is sourced from Pyth price feeds, for all trading sessions (pre-market, normal market, after-market, and overnight trading).

Ticker
Data Feed

Mark Price

Mark price is the fair price of a perpetual contract, and is used for margining, liquidations, stop/limit triggers, funding rates, and computing unrealized PnL.

For public basket perps, Ventuals calculates the mark price as the median of:

  1. Oracle price

  2. Oracle price + 150s EMA of difference between oracle price and the perp's mid-price

  3. The median of best bid, best ask, last trade on Hyperliquid

Mark prices, along with oracle prices, are updated approximately every 3 seconds.

Mark price bands

To protect against price manipulation during periods of thin liquidity, the mark price for each market is constrained to remain within a price band relative to its oracle price.

This mark price band is defined as ±(1 / max_leverage) of the last external-pricing oracle price, and this band is in effect during all trading sessions (e.g. both external pricing and internal pricing).

For example, if the MAG7 oracle price is $70 from the last external price on Friday, then the mark price is range bound between ($63, $77) until external pricing resumes on Sunday evening ET.

Mark price velocity limit

There is an additional limit to mark price movements of a max 0.50% move every 3 second update. This prevents overly large price moves over a short period of time, further protecting against manipulation.

Last updated