For the complete documentation index, see llms.txt. This page is also available as Markdown.

Commodities

Commodities

Overview

Ventuals commodity perps provide synthetic exposure to physical commodity futures benchmarks. Unlike equity index perps which track ETF spot prices, commodity perps reference designated futures contracts on major exchanges and implement a deterministic roll schedule to maintain continuous exposure.

The perp tracks a rolling futures benchmark — not a physical delivery price, not a generic spot price, and not all grades or varieties of a commodity.


Oracle Price

External pricing

Ventuals derives external prices for commodity perps from CBOT futures settlement data. External pricing is available during CBOT Globex trading hours, which differ from the near-continuous sessions available for energy or metals contracts.

CBOT wheat and soy futures trade on CME Globex in two sessions with a multi-hour daily close:

Session
Days
Hours (ET)

Evening

Sunday–Friday

8:00 PM – 8:45 AM

Day

Monday–Friday

9:30 AM – 2:20 PM

Daily close (no external data)

Monday–Friday

2:20 PM – 8:00 PM

Total external coverage is approximately 17.5 hours per weekday. When fresh external pricing data is available, it is used directly as the oracle price.

Internal pricing

When external pricing is unavailable, the oracle switches to an internal pricing mechanism which initializes on the last available external price.

The switchover to internal pricing happens when external pricing is unavailable for more than 30 seconds; for example during the daily CBOT close window, weekends, or holidays.

Session
Start
End

Daily close

Monday–Friday 2:20 PM ET

Monday–Friday 8:00 PM ET

Weekend

Friday 2:20 PM ET

Sunday 8:00 PM ET

The daily close gap is approximately 5.5 hours each weekday afternoon/evening. Traders should be aware that the oracle operates in internal pricing mode during this window.

If external pricing becomes stale during active exchange hours (e.g., due to exchange price limits, data feed interruptions, or exchange outages), the oracle transitions to internal pricing using the same mechanism. When fresh external data resumes, the oracle snaps back to external pricing on the next tick.

Internal oracle price formula

The oracle for internal pricing initializes on the last available external price, and is defined as:

Where:

  • ImpactPx = median(impactBidPx, impactAskPx)

  • k = dynamic adjustment coefficient

Dynamic Adjustment Coefficient (k)

The coefficient k controls the sensitivity at which impact price adjusts the oracle price. It adapts based on the short-term deviation between the current impact price and its 1-hour EMA:

Δ (ImpactPx vs EMA)
k value

< 0.02%

0.7

[0.02, 0.05)%

0.5

[0.05, 0.1)%

0.3

[0.1, 0.2)%

0.2

[0.2, 0.4)%

0.1

≥ 0.4%

0.0

When external pricing resumes, the oracle snaps to the external pricing mechanism on the next tick.


Futures Reference & Roll Schedule

Designated contract schedule

Commodity perps reference a specific futures contract at any given time. The following schedule defines the active (front) contract at the start of each calendar month:

Asset
Underlying
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec

WHEAT

1 bushel of CBOT Chicago SRW Wheat (ZW)

H

H

K

K

N

N

U

U

Z

Z

Z

H

SOY

1 bushel of CBOT Soybeans (ZS)

H

H

K

K

N

N

X

X

X

X

F

F

Contract month codes: F = Jan, H = Mar, K = May, N = Jul, U = Sep, X = Nov, Z = Dec.

Wheat has 5 contract months per year (Mar, May, Jul, Sep, Dec).

Soy has 5 active contract months (Mar, May, Jul, Nov, Jan), skipping the less liquid August and September contracts.

Roll mechanics

The oracle transitions from the expiring front contract to the next contract over a deterministic 5-business-day roll period. The roll runs from the 6th to the 10th business day of each roll month, with the 5th business day being the last day of 100% front-contract pricing.

Oracle transitions happen on roll days at 5:30 PM ET.

Business Day of Month
Front Contract Weight
Next Contract Weight

5th (last pure front)

100%

0%

6th (roll begins)

80%

20%

7th

60%

40%

8th

40%

60%

9th

20%

80%

10th (roll complete)

0%

100%

During the roll window, the oracle price is computed as:

Roll calendar

WHEAT

Rolls occur 5 times per year, in the months preceding each contract's First Notice Day (FND).

Roll Month
From → To
Roll Period (BD)
First Notice Day

February

H (Mar) → K (May)

BD 6 – BD 10

Feb 27

April

K (May) → N (Jul)

BD 6 – BD 10

Apr 30

June

N (Jul) → U (Sep)

BD 6 – BD 10

Jun 30

August

U (Sep) → Z (Dec)

BD 6 – BD 10

Aug 31

November

Z (Dec) → H (Mar+1)

BD 6 – BD 10

Nov 30

SOY

Rolls occur 5 times per year. The June roll (N → X) spans a longer calendar period as the oracle transitions from the July contract directly to November, skipping the less liquid August and September contracts.

Roll Month
From → To
Roll Period (BD)
First Notice Day

February

H (Mar) → K (May)

BD 6 – BD 10

Feb 27

April

K (May) → N (Jul)

BD 6 – BD 10

Apr 30

June

N (Jul) → X (Nov)

BD 6 – BD 10

Jun 30

October

X (Nov) → F (Jan+1)

BD 6 – BD 10

Oct 31

December

F (Jan+1) → H (Mar+1)

BD 6 – BD 10

Dec 31


Mark Price

Mark price is the fair price of the perpetual contract, used for margining, liquidations, stop/limit triggers, funding rates, and computing unrealized PnL.

Mark prices, along with oracle prices, are updated approximately every 3 seconds.

Ventuals calculates the mark price as the median of:

  1. Oracle price

  2. Oracle price + 150s EMA of difference between oracle price and the perp's mid-price

  3. The median of best bid, best ask, last trade on Hyperliquid

Mark price bands

The mark price is constrained to remain within a price band relative to its oracle price. This band is defined as ±(1 / max_leverage) of the last external-pricing oracle price, and remains in effect during all trading sessions.


Velocity Limit

Mark and oracle price movements are limited to a max 0.50% move every 3 second update. This prevents overly large price moves over a short period of time.


Funding Rate

For Ventuals commodity markets, a multiplier of 0.5 is applied to Hyperliquid's funding rate formula. This results in a baseline funding rate of ~5.5% annualized, which brings borrow rates closer to industry standards for traditional asset classes.

Last updated