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:
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.
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:
< 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:
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.
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).
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.
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:
Oracle price
Oracle price + 150s EMA of difference between oracle price and the perp's mid-price
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