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

SymbolDescriptionOffsetReference
ESE-mini S&P 5005 trading daysBefore expiration
NQE-mini Nasdaq 1005 trading daysBefore expiration
YME-mini Dow Jones $55 trading daysBefore expiration
RTYE-mini Russell 20005 trading daysBefore expiration
EMDE-mini S&P MidCap 4005 trading daysBefore expiration
NKDNikkei 225 Dollar Index5 trading daysBefore expiration
NIYNikkei 225 Yen Index0 trading daysOn expiration
NNNikkei 225 Yen Index0 trading daysOn expiration
VXCBOE Volatility Index1 trading dayBefore expiration

Equity Index Sector and Micro

SymbolDescriptionOffsetReference
XABE-mini S&P 500 Materials Sector1 trading dayBefore expiration
XAEE-mini S&P 500 Energy Sector1 trading dayBefore expiration
XAFE-mini S&P 500 Financial Sector1 trading dayBefore expiration
XAIE-mini S&P 500 Industrial Sector1 trading dayBefore expiration
XAKE-mini S&P 500 Technology Sector1 trading dayBefore expiration
XAPE-mini S&P 500 Consumer Staples1 trading dayBefore expiration
XAUE-mini S&P 500 Utilities Sector1 trading dayBefore expiration
XAVE-mini S&P 500 Health Care Sector1 trading dayBefore expiration
XAYE-mini S&P 500 Consumer Discretionary1 trading dayBefore expiration

Currencies

SymbolDescriptionOffsetReference
EUEuro FX2 trading daysBefore expiration
BPBritish Pound2 trading daysBefore expiration
JYJapanese Yen2 trading daysBefore expiration
CDCanadian Dollar3 trading daysBefore expiration
ADAustralian Dollar2 trading daysBefore expiration
SFSwiss Franc2 trading daysBefore expiration
NENew Zealand Dollar2 trading daysBefore expiration
PXMexican Peso2 trading daysBefore expiration
BRBrazilian Real2 trading daysBefore expiration
RASouth African Rand2 trading daysBefore expiration
SEKSwedish Krona2 trading daysBefore expiration
SIRINR/USD Standard2 trading daysBefore expiration
RPEuro FX / British Pound2 trading daysBefore expiration
RYEuro FX / Japanese Yen2 trading daysBefore expiration
RFEuro FX / Swiss Franc2 trading daysBefore expiration
EADEuro FX / Australian Dollar2 trading daysBefore expiration
ECDEuro FX / Canadian Dollar2 trading daysBefore expiration
AJYAustralian Dollar / Japanese Yen2 trading daysBefore expiration
PJYBritish Pound / Japanese Yen2 trading daysBefore expiration
M6EE-micro EUR/USD2 trading daysBefore expiration
M6AE-micro AUD/USD2 trading daysBefore expiration
M6BE-micro GBP/USD2 trading daysBefore expiration
MCDE-micro CAD/USD2 trading daysBefore expiration
MSFE-micro CHF/USD2 trading daysBefore expiration
MEE-mini Euro FX4 trading daysBefore expiration
JEE-mini Japanese Yen4 trading daysBefore expiration

Energy

SymbolDescriptionOffsetReference
CLCrude Oil3 trading daysBefore expiration
QMMicro WTI Crude Oil3 trading daysBefore expiration
BZBrent Crude Oil Last Day1 trading dayBefore expiration
NGNatural Gas3 trading daysBefore expiration
QGNatural Gas (E-mini)3 trading daysBefore expiration
HONew York Harbor ULSD3 trading daysBefore expiration
RBRBOB Gasoline3 trading daysBefore expiration

Metals

SymbolDescriptionOffsetReference
GCGold2 trading daysEnd of prior month
MGCMicro Gold2 trading daysEnd of prior month
QOE-mini Gold1 trading dayBefore expiration
SISilver2 trading daysEnd of prior month
SILMicro Silver2 trading daysEnd of prior month
QIE-mini Silver1 trading dayBefore expiration
HGCopper2 trading daysEnd of prior month
PLPlatinum2 trading daysEnd of prior month
PAPalladium2 trading daysEnd of prior month

Grains and Oilseeds

SymbolDescriptionOffsetReference
CCorn8 trading daysEnd of prior month
WWheat8 trading daysEnd of prior month
SSoybeans8 trading daysEnd of prior month
OOats8 trading daysEnd of prior month
BOSoybean Oil8 trading daysEnd of prior month
SMSoybean Meal8 trading daysEnd of prior month
RRRough Rice8 trading daysEnd of prior month
YCMini Corn8 trading daysBefore expiration
YKMini Soybean8 trading daysBefore expiration
YWMini Wheat8 trading daysBefore expiration

Livestock

SymbolDescriptionOffsetReference
LELive Cattle10 trading daysEnd of prior month
GFFeeder Cattle10 trading daysEnd of prior month
HELean Hogs6 trading daysEnd of prior month

US Treasuries and Rates

SymbolDescriptionOffsetReference
TY10-Year US Treasury Note1 trading dayEnd of prior month
FV5-Year US Treasury Note1 trading dayEnd of prior month
TU2-Year US Treasury Note1 trading dayEnd of prior month
USUS Treasury Bond1 trading dayEnd of prior month
UBUltra US Treasury Bond1 trading dayEnd of prior month
TNUltra 10-Year US Treasury Note0 trading daysEnd of prior month
FF30-Day Fed Fund0 trading daysOn expiration

Crypto

SymbolDescriptionOffsetReference
BTCBitcoin Futures1 trading dayBefore 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:

StepDateNotes
ExpirationFri, Mar 20, 2026ESH26 last trading day
1 day backThu, Mar 19, 2026
2 days backWed, Mar 18, 2026
3 days backTue, Mar 17, 2026
4 days backMon, Mar 16, 2026
5 days backFri, Mar 13, 2026Rollover 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:

  1. Find the contract's expiration date from Futures expirations.
  2. Look up the offset from this page.
  3. Count back the offset in trading days. Use the Market holidays calendar to skip holiday closures.
  4. 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.
  • 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.