> For the complete documentation index, see [llms.txt](https://usefelix.gitbook.io/perps/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://usefelix.gitbook.io/perps/getting-started/perp-specifications/copper.md).

# Copper

### Times

Two windows make up for weekday coverage:

* Regular-hours: 8:00 p.m. – 1:30 p.m. ET
* Off-hours: 1:30 p.m. – 8:00 p.m. ET

Weekend coverage starts on Friday 1:30 p.m. ET. and runs continuously until Sunday 8: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\_2h(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 (assuming current contract expires on 27th of Feb (Friday)):

* 20 business days before the expiry of current contract (30th Jan Friday) we will define the oracle price to be: 0.75*current\_contract + 0.25*next\_contract
* On 2nd Feb (Monday; next business day) we will define the oracle price to be: 0.50*current\_contract + 0.50*next\_contract
* On 3rd Feb (Tuesday) we will define the oracle price to be: 0.25*current\_contract + 0.75*next\_contract
* On 4th Feb (Wednesday) the oracle price will represent the next\_contract fully

Each of the above update should be made at 4:30 PM ET of the specified day.

For Copper we will be rolling over 5 times a year. The roll will follow these contracts:

Z → H → K → N → U → Z and so on.

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