Crude Oil (WTI)
Two windows make up for weekday coverage:
Regular-hours: 6:00 p.m. – 4:30 p.m. ET
Off-hours: 4:30 p.m. – 6:00 p.m. ET
Weekend coverage starts on Friday 4:30 p.m. ET. and runs continuously until Sunday 6:00 p.m. ET.
Oracle Pricing
Oracle pricing is used to calculate funding rates which anchor perpetual contract price to underlying commodity price. For the 24/7 markets we divide the oracle price into three segments (weekday on-hours, weekday off-hours, weekend off-hours). Pricing infrastructure is handled by Redstone.
Each oracle update (every 2.5s) can change oraclePx by at most 1%.
EMA Definition (used below)
Let xtbe the input series sampled every Δt=1s, and let St be the EMA with time constant τ (e.g., 1h,8h,150s). We use:
Part 1: Weekday on-hours
Oracle = We use the current contract and a blended contract during contract rolls - contract roll schedule can be viewed in the section below.
Part 2: Weekday off-hours
Oracle = EMA_1h(impact_price)
Part 3: Weekend off-hours
Oracle = EMA_8h(impact_price)
Mark Pricing
This section details our methodology for calculating the mark price, which serves as the reference for margin, liquidations, take-profit and stop-loss triggers, and unrealized profit and loss computations. Pricing infrastructure is handled by Redstone.
Each oracle update (every 2.5s) can change markPx by at most 1%.
Mark Price is calculated as the median of the following 3 values:
MarkPx0: Oracle Price
MarkPx1: Oracle Price
MarkPx2: The median of best bid, best ask, last trade on Hyperliquid (added as default by HL)
ExternalPerpPx Pricing
This limits a perp market's mark price movement to the given band of +/- min(1/max_leverage, 20%) from the externalPerpPx value.
Part 1: Weekday on-hours
Oracle Price
Part 2: Weekday off-hours
Last Close from Weekday On Hour period
Part 3: Weekend off-hours
Last Close on Weekday On Hour
Roll Over Methodology
There will be 4 updates when going from previous contract to the next as per the following schedule:
15 business days before the expiry of current contract, we will define the oracle price to be: 0.75current_contract + 0.25next_contract
14 business days before expiry, we will define the oracle price to be: 0.5current_contract + 0.5next_contract
13 business days before expiry, we will define the oracle price to be: 0.25current_contract + 0.75next_contract
12 business days before expiry, the oracle price will fully represent the next_contract
Each of the above update should be made at 4:30 PM ET of the specified day.
For Crude Oil we will be rolling over on a monthly basis. The roll will look like this every year:
G → H → J → K → M → N → Q → U → V → X → Z → F → G and so on.
During rollover periods, funding rates will stay on during off hours as well (both for weekdays and weekends), as a broader mechanism for allowing funding rate payments to offset rollover gap costs. No changes are made to the funding rate multiplier.
Holidays & Misc.
Holidays are treated as weekends. Shorter regular sessions due to holidays will transition to weekend status afterwards. Holidays are defined here: https://www.lmax.com/global/holiday-calendar and https://www.cmegroup.com/trading-hours.html
Last updated