Skip to main content

What are QFEX Perpetual Futures?

A perpetual future is a derivative contract that allows you to speculate on the price of an underlying asset without ever having to physically own it. Unlike traditional futures contracts, perpetuals do not have an expiry date. You can hold a position for as long as you like, provided you maintain sufficient margin. Perps are the end state of leveraged finance. They are the most efficient and user-friendly way of trading all manner of assets classes. To ensure the price of the perpetual contract (Mark Price) stays close to the spot price of the underlying asset (Index Price), a mechanism called Funding is used. All QFEX Perptual Futures are margined in USDC on Arbitrum. USDC is compliant with US Law and backed by US Treasuries.

Index Price Sources

The Index Price is the reference spot price for the asset. We aggregate data from high-quality sources:
  • Equities: Real-time feeds from US stock exchanges and Blue Ocean ATS (for overnight trading).
  • Indices: Derived from CME futures data.
  • FX & Precious Metals: An aggregate of the most liquid ECNs.

Equity Index Price Calculation

To ensure maximum coverage for equity indices (such as US 500, US 100, etc.), QFEX computes the Index Price as follows:

Real-Time Calculation

At any moment during trading hours, the live Index Price for equity indices is determined via: Index Price=Last Official Index Close×Current Index Future PriceLast Index Future Settlement Price\text{Index Price} = \text{Last Official Index Close} \times \frac{\text{Current Index Future Price}}{\text{Last Index Future Settlement Price}}
  • Last Official Index Close: The most recent official closing price of the index (e.g., from the primary exchange close).
  • Current Index Future Price: The latest traded price of the nearest (“front month”) futures contract for that index.
  • Last Index Future Settlement Price: The official futures settlement price at the last futures market close.
This formula tracks the official cash close during the day, but seamlessly switches to using futures prices outside of cash market hours, ensuring continuous and fair pricing.

Close Update at 4:30pm CT (Chicago Time)

Every trading day at 4:30pm CT, we fetch the previous day’s Official Index Close and Last Index Future Settlement Price. That ratio is used for the next 24 hours to ensure the computed Index Price always references the most recent official information.

Oracle Pricing

Our default pricing is: Ptoracle={Ptindex,if not an equity index,Plast closeequity index+ΔFt,if equity index.P_t^{\text{oracle}} = \begin{cases} P_t^{\text{index}}, & \text{if not an equity index,} \\ P_{\text{last close}}^{\text{equity index}} + \Delta F_t, & \text{if equity index.} \end{cases} where ΔFt\Delta F_t is the corresponding change in the equity index future. If the last known Index Price is stale (ie, the market is closed or otherwise down), we do the following:

1. Impact Notional Calculation

The system calculates the Volume-Weighted Average Price (VWAP) to fill a specific “Impact Notional” amount (defined below) from the top of the order book.
  • Impact Bid: The average price to sell the impact notional amount into the bids.
  • Impact Ask: The average price to buy the impact notional amount from the asks.

2. Impact Price Deviation (IPD)

IPD measures the pressure on the price relative to the last traded price (or last calculated price). It is calculated as: IPD=max(ImpactBidPlast,0)max(PlastImpactAsk,0)IPD = \max(ImpactBid - P_{last}, 0) - \max(P_{last} - ImpactAsk, 0) Where:
  • PlastP_{last} is the latest Index price.
  • Only “improving” deviations contribute to the IPD (i.e., if the Impact Bid is higher than current price, it pushes price up; if Impact Ask is lower, it pushes price down).

3. Price Update

The price is updated using an Exponential Moving Average (EMA) model to smooth out volatility while drifting towards the order book pressure. The formula used is: St=βtSt1+(1βt)xtS_t = \beta_t \cdot S_{t-1} + (1 - \beta_t) \cdot x_t Where:
  • StS_t: New price.
  • St1S_{t-1}: Previous price.
  • xtx_t: Target price based on IPD, defined as xt=St1+IPDtx_t = S_{t-1} + IPD_t.
  • βt\beta_t: Decay factor, defined as βt=eΔt/τ\beta_t = e^{-\Delta t^* / \tau}.

Time and Constants

  • τ\tau (Tau): Time constant, set to 8 hours (28,800 seconds). This controls the “inertia” of the price.
  • Δt\Delta t: Time elapsed since the last update.
  • cc (Clamp Factor): Set to 0.1.
  • Δt\Delta t^*: Clamped time delta, defined as min(Δt,cτ)\min(\Delta t, c \cdot \tau). This prevents large jumps if updates are sparse.