# 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 $$x\_t$$be the input series sampled every $$\Delta t = 1\mathrm{s}$$, and let $$S\_t$$ be the EMA with time constant $$\tau\ (\text{e.g., }1\mathrm{h},8\mathrm{h},150\mathrm{s}).$$ We use:

$$
% EMA recursion + smoothing factor
S\_t = \beta S\_{t-1} + (1-\beta),x\_t,
\qquad
\beta = \exp!\left(-\frac{\Delta t}{\tau}\right)
$$

**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.75*current\_contract + 0.25*next\_contract
* 14 business days before expiry, we will define the oracle price to be: 0.5*current\_contract + 0.5*next\_contract
* 13 business days before expiry, we will define the oracle price to be: 0.25*current\_contract + 0.75*next\_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.&#x20;

* 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](https://www.cmegroup.com/trading-hours.html)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://usefelix.gitbook.io/perps/getting-started/perp-specifications/crude-oil-wti.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
