# 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 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 for wheat 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:

```
Oracle_t = (1 - k) · Oracle_{t-1} + k · ImpactPx_t
```

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   |

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

Wheat has 5 contract months per year (Mar, May, Jul, Sep, Dec). Each contract covers approximately 2 months of exposure.

#### 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:30PM 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:

```
oracle = (front_weight × front_settlement) + (next_weight × next_settlement)
```

#### Roll calendar

Rolls occur 5 times per year for wheat, in the months preceding each contract's First Notice Day (FND). No roll occurs in January, March, May, July, September, October, or December.

| 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           |

***

### 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.

For WHEAT at 10× max leverage, the mark price band is ±10% of the last external price.

***

### 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.

```
Funding Rate (F) = 0.5 × [Average Premium Index (P) + clamp(interest rate - Premium Index (P), -0.0005, 0.0005)]
```

***

### Specification Summary

| Parameter                      | WHEAT                                                  |
| ------------------------------ | ------------------------------------------------------ |
| Description                    | Tracks the value of 1 bushel of CBOT Chicago SRW Wheat |
| Underlying exchange            | CBOT (CME Group)                                       |
| Quote convention               | USD per bushel                                         |
| Contract months                | H (Mar), K (May), N (Jul), U (Sep), Z (Dec)            |
| Max leverage                   | 10x                                                    |
| Mark price band                | ±10%                                                   |
| OI cap                         | TBD                                                    |
| External session (evening)     | Sunday–Friday, 8:00 PM – 8:45 AM ET                    |
| External session (day)         | Monday–Friday, 9:30 AM – 2:20 PM ET                    |
| Daily close (internal pricing) | Monday–Friday, 2:20 PM – 8:00 PM ET                    |
| Holiday closures               | Follows CME holiday calendar                           |

#### Oracle data feed

| Ticker | Data Feed                                          |
| ------ | -------------------------------------------------- |
| WHEAT  | CBOT ZW front/next contract settlement (CME Group) |

> **What WHEAT tracks:** The perp tracks rolling CBOT Chicago Soft Red Winter wheat futures — not cash wheat, not a global spot wheat price, and not all wheat types (e.g., not Hard Red Winter, not Spring Wheat, not Paris Milling Wheat). The perp's price behavior reflects the CBOT futures curve, including contango/backwardation dynamics and roll-related price movements.
