> 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/usa100.md).

# USA100

### Times

Two windows make up for weekday coverage:

* Regular-hours: 6:00 p.m. – 5:00 p.m. ET
* Off-hours: 5:00 p.m. – 6:00 p.m. ET

Weekend coverage starts on Friday 5:00 p.m. ET. and runs continuously until Sunday 6:00 p.m. ET.

### Oracle Price Methodology

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 (Weekdays from 6 PM ET to 5 PM ET)**

We use current contract when deriving the implied spot price as per the roll schedule. To derive the implied spot price we use the standard cost-to-carry model which is described as follows for NQ100:

S = F\*exp(−(r-q)T)

Where:

* F = future price for maturity T
* S = spot price
* r = risk-free interest rate (annual, continuously compounded)
* q = annualized dividend yield
* T = time to maturity in years

For NQ100, we define these values at the time of writing (23rd March) as:

* F = price of NQM26
* r = 4.4%
* q = 0.7%
* T = 88/365

The cost-to-carry model depends on the values of r and q which can change over time as the macro-economic conditions evolve. We will update these values daily so that they stay in line with the actual spot prices and the users get a good trading experience. This calculated implied spot price is then pushed to the oracle price directly approximately every 3 seconds.

**Part 2: Weekday off-hours**&#x20;

Oracle = EMA\_30m(impact\_price)

**Part 3: Weekend off-hours**&#x20;

Oracle = EMA\_4h(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 3 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.5*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 USA100 we will be rolling over 4 times a year. The roll will follow these contracts:

Z → H → M → U → Z and so on.

### Holidays

* Holidays are treated as weekends. Shorter regular sessions due to holidays will transition to weekend status afterwards. Holidays are defined here:<https://www.cmegroup.com/trading-hours.html>
