Futures Rollover Rules
Kibot's Continuous futures series are built with a fixed, calendar-based rollover rule per product. The rollover date is computed from a published offset, expressed in trading days, against a known reference date (either the contract's own expiration, or the end of the month prior to expiration). There is no volume-crossover heuristic, no open-interest swap, and no back-adjustment of historical prices. Once a rule is set, the same date is used every cycle. The full per-contract table below is the same one Kibot's support team refers customers to, and is the authoritative source for reproducing or auditing every rollover in the continuous archive.
Why Fixed Calendar Rules
Two reasons. First, predictability: a calendar rule is reproducible from the public expiration schedule with no reliance on private volume or open-interest snapshots. A customer can rebuild Kibot's exact continuous series from the individual contract files plus this table. Second, consistency: the same rule applied across decades of history means the gluing logic does not silently change shape between 2002 and 2024. Volume-based and open-interest-based rollover heuristics drift as products mature, exchanges add overnight sessions, and algorithmic flow reshapes liquidity. A fixed offset does not.
The trade-off is that the rollover may occasionally fire a day or two before liquidity actually shifts to the back month, or a day or two after. For most products and most cycles, the offset is close enough that the practical difference is small. When the difference matters (long-horizon backtests, exact replay of a single rollover) customers can apply their own roll date on top of Kibot's individual contract files. See the Adjusted vs unadjusted data page for the broader rationale.
The Two Offset Conventions
Every rule in the table uses one of two phrasings.
"N trading days before contract expiration" means the roll fires N trading days before the contract's own expiration date. For ES (E-mini S&P 500), the offset is 5 trading days before the third-Friday expiration. For ESH26 (March 2026, expiring March 20, 2026), that places the roll on approximately March 13, 2026. Equity index, currency, energy, and most crypto futures use this form.
"N trading days from the end of the month prior to expiration" means the roll fires N trading days before the last business day of the calendar month preceding the delivery month. For grains and most metals, this typically places the roll well in advance of the contract's actual last-trading day, reflecting the long delivery notice periods on those products. For Gold (GC), the offset is 2 trading days from the end of the prior month: a June 2026 Gold contract (GCM26), with May 2026 ending on Friday May 29, rolls 2 trading days earlier, approximately Wednesday May 27.
The Futures expirations page lists the expiration rule per contract group and supplies pre-calculated expiration dates through 2030, so the two pages together let a customer compute every roll date without further reference material.
Per-Contract Rollover Rules
Every continuous-futures contract Kibot carries appears below, grouped by asset class. The "Offset" column is the published rule. The "Reference" column states which date the offset is measured against.
Equity Index
| Symbol | Description | Offset | Reference |
|---|---|---|---|
| ES | E-mini S&P 500 | 5 trading days | Before expiration |
| NQ | E-mini Nasdaq 100 | 5 trading days | Before expiration |
| YM | E-mini Dow Jones $5 | 5 trading days | Before expiration |
| RTY | E-mini Russell 2000 | 5 trading days | Before expiration |
| EMD | E-mini S&P MidCap 400 | 5 trading days | Before expiration |
| NKD | Nikkei 225 Dollar Index | 5 trading days | Before expiration |
| NIY | Nikkei 225 Yen Index | 0 trading days | On expiration |
| NN | Nikkei 225 Yen Index | 0 trading days | On expiration |
| VX | CBOE Volatility Index | 1 trading day | Before expiration |
Equity Index Sector and Micro
| Symbol | Description | Offset | Reference |
|---|---|---|---|
| XAB | E-mini S&P 500 Materials Sector | 1 trading day | Before expiration |
| XAE | E-mini S&P 500 Energy Sector | 1 trading day | Before expiration |
| XAF | E-mini S&P 500 Financial Sector | 1 trading day | Before expiration |
| XAI | E-mini S&P 500 Industrial Sector | 1 trading day | Before expiration |
| XAK | E-mini S&P 500 Technology Sector | 1 trading day | Before expiration |
| XAP | E-mini S&P 500 Consumer Staples | 1 trading day | Before expiration |
| XAU | E-mini S&P 500 Utilities Sector | 1 trading day | Before expiration |
| XAV | E-mini S&P 500 Health Care Sector | 1 trading day | Before expiration |
| XAY | E-mini S&P 500 Consumer Discretionary | 1 trading day | Before expiration |
Currencies
| Symbol | Description | Offset | Reference |
|---|---|---|---|
| EU | Euro FX | 2 trading days | Before expiration |
| BP | British Pound | 2 trading days | Before expiration |
| JY | Japanese Yen | 2 trading days | Before expiration |
| CD | Canadian Dollar | 3 trading days | Before expiration |
| AD | Australian Dollar | 2 trading days | Before expiration |
| SF | Swiss Franc | 2 trading days | Before expiration |
| NE | New Zealand Dollar | 2 trading days | Before expiration |
| PX | Mexican Peso | 2 trading days | Before expiration |
| BR | Brazilian Real | 2 trading days | Before expiration |
| RA | South African Rand | 2 trading days | Before expiration |
| SEK | Swedish Krona | 2 trading days | Before expiration |
| SIR | INR/USD Standard | 2 trading days | Before expiration |
| RP | Euro FX / British Pound | 2 trading days | Before expiration |
| RY | Euro FX / Japanese Yen | 2 trading days | Before expiration |
| RF | Euro FX / Swiss Franc | 2 trading days | Before expiration |
| EAD | Euro FX / Australian Dollar | 2 trading days | Before expiration |
| ECD | Euro FX / Canadian Dollar | 2 trading days | Before expiration |
| AJY | Australian Dollar / Japanese Yen | 2 trading days | Before expiration |
| PJY | British Pound / Japanese Yen | 2 trading days | Before expiration |
| M6E | E-micro EUR/USD | 2 trading days | Before expiration |
| M6A | E-micro AUD/USD | 2 trading days | Before expiration |
| M6B | E-micro GBP/USD | 2 trading days | Before expiration |
| MCD | E-micro CAD/USD | 2 trading days | Before expiration |
| MSF | E-micro CHF/USD | 2 trading days | Before expiration |
| ME | E-mini Euro FX | 4 trading days | Before expiration |
| JE | E-mini Japanese Yen | 4 trading days | Before expiration |
Energy
| Symbol | Description | Offset | Reference |
|---|---|---|---|
| CL | Crude Oil | 3 trading days | Before expiration |
| QM | Micro WTI Crude Oil | 3 trading days | Before expiration |
| BZ | Brent Crude Oil Last Day | 1 trading day | Before expiration |
| NG | Natural Gas | 3 trading days | Before expiration |
| QG | Natural Gas (E-mini) | 3 trading days | Before expiration |
| HO | New York Harbor ULSD | 3 trading days | Before expiration |
| RB | RBOB Gasoline | 3 trading days | Before expiration |
Metals
| Symbol | Description | Offset | Reference |
|---|---|---|---|
| GC | Gold | 2 trading days | End of prior month |
| MGC | Micro Gold | 2 trading days | End of prior month |
| QO | E-mini Gold | 1 trading day | Before expiration |
| SI | Silver | 2 trading days | End of prior month |
| SIL | Micro Silver | 2 trading days | End of prior month |
| QI | E-mini Silver | 1 trading day | Before expiration |
| HG | Copper | 2 trading days | End of prior month |
| PL | Platinum | 2 trading days | End of prior month |
| PA | Palladium | 2 trading days | End of prior month |
Grains and Oilseeds
| Symbol | Description | Offset | Reference |
|---|---|---|---|
| C | Corn | 8 trading days | End of prior month |
| W | Wheat | 8 trading days | End of prior month |
| S | Soybeans | 8 trading days | End of prior month |
| O | Oats | 8 trading days | End of prior month |
| BO | Soybean Oil | 8 trading days | End of prior month |
| SM | Soybean Meal | 8 trading days | End of prior month |
| RR | Rough Rice | 8 trading days | End of prior month |
| YC | Mini Corn | 8 trading days | Before expiration |
| YK | Mini Soybean | 8 trading days | Before expiration |
| YW | Mini Wheat | 8 trading days | Before expiration |
Livestock
| Symbol | Description | Offset | Reference |
|---|---|---|---|
| LE | Live Cattle | 10 trading days | End of prior month |
| GF | Feeder Cattle | 10 trading days | End of prior month |
| HE | Lean Hogs | 6 trading days | End of prior month |
US Treasuries and Rates
| Symbol | Description | Offset | Reference |
|---|---|---|---|
| TY | 10-Year US Treasury Note | 1 trading day | End of prior month |
| FV | 5-Year US Treasury Note | 1 trading day | End of prior month |
| TU | 2-Year US Treasury Note | 1 trading day | End of prior month |
| US | US Treasury Bond | 1 trading day | End of prior month |
| UB | Ultra US Treasury Bond | 1 trading day | End of prior month |
| TN | Ultra 10-Year US Treasury Note | 0 trading days | End of prior month |
| FF | 30-Day Fed Fund | 0 trading days | On expiration |
Crypto
| Symbol | Description | Offset | Reference |
|---|---|---|---|
| BTC | Bitcoin Futures | 1 trading day | Before expiration |
Worked Example: An ES Rollover
ES rolls 5 trading days before the contract's own expiration. The March 2026 contract (ESH26) expires on Friday, March 20, 2026 (third Friday of March, per the Futures expirations calendar). Counting back 5 trading days from March 20:
| Step | Date | Notes |
|---|---|---|
| Expiration | Fri, Mar 20, 2026 | ESH26 last trading day |
| 1 day back | Thu, Mar 19, 2026 | |
| 2 days back | Wed, Mar 18, 2026 | |
| 3 days back | Tue, Mar 17, 2026 | |
| 4 days back | Mon, Mar 16, 2026 | |
| 5 days back | Fri, Mar 13, 2026 | Rollover date |
On Friday March 13, 2026 the continuous series stops using ESH26 and begins using ESM26 (June 2026). Bars dated March 13 forward are real ESM26 trades. Bars dated March 12 and earlier are real ESH26 trades. There is no scaling, blending, or back-adjustment applied across the seam, so a small price discontinuity at the rollover is expected, not a data error.
Auditing a Roll in a Downloaded File
To verify a specific roll in a continuous file:
- Find the contract's expiration date from Futures expirations.
- Look up the offset from this page.
- Count back the offset in trading days. Use the Market holidays calendar to skip holiday closures.
- The resulting date is the rollover date. Bars on and after that date come from the next contract month.
The two-month rolling chain (continuous file, plus individual contracts for the front and back month at the roll) is enough to reconstruct any adjustment method. Kibot's support team has confirmed in archived correspondence that customers who need ratio or constant back-adjustment on top of the unadjusted series can compute the adjustment factors directly from the individual contract files at the rollover dates listed here.
Key Takeaways
- Every continuous futures contract Kibot carries rolls on a fixed, published offset of trading days from a known reference date (either contract expiration or end of the prior calendar month).
- Equity index futures (ES, NQ, YM, RTY, EMD, NKD) all roll 5 trading days before expiration. Sector and E-micro index futures roll 1 trading day before expiration.
- Currencies are uniformly 2 trading days before expiration; CD is the exception at 3. The two E-mini currency contracts (ME, JE) use 4 trading days.
- Energy contracts (CL, BZ, NG, HO, RB) use trading-days-before-expiration offsets in the 1 to 3 range.
- Grains, metals, livestock, and most treasuries use the "end of prior month" reference, reflecting the longer delivery notice periods on those products.
- Kibot applies no back-adjustment. Customers who need a smooth series compute it themselves from the individual contract files; this page is the index that makes that reconstruction reproducible.
Related
- Continuous futures, How the rollover offsets feed Kibot's continuous series, plus the three back-adjustment methods customers commonly layer on top.
- Identifying the front month, Compute the active contract on any date and verify it against the continuous file price.
- Futures expirations, Per-group expiration rules and pre-computed expiration dates through 2030.
- Futures specifications, Per-contract trading months, tick sizes, and contract sizes.
- Futures symbols, Month codes and contract-naming conventions.
- Adjusted vs unadjusted data, Broader rationale for shipping unadjusted data and letting the customer pick the adjustment.
- Market holidays, Trading-day counts must skip holidays; this calendar is the reference.