Futures research guide

Continuous Futures Contracts: Rolls, Gaps, and Back-Adjustment

Learn why continuous futures have roll gaps, how volume-based rolls and additive back-adjustment work, and how to validate returns around expiries.

Published · 1,514 words

Why one futures market becomes many contracts

A futures contract is a dated instrument. A trader using the March E-mini S&P 500 contract must eventually exit, roll to another expiry, or manage delivery-related obligations; the March stream does not become an April stream automatically. Each listed expiry therefore has its own prices, liquidity, and final trading date. The contract months and expiration guide explains those conventions in more detail.

This creates a practical problem for research. A three-month history may fit inside one liquid contract, but a five-year study cannot treat a single expiry as the whole market. A continuous futures series joins selected contract segments into one chronological series so that trend tests, volatility estimates, and bar construction can span many expiries.

“Continuous” describes the assembled research series, not a tradable security. At every timestamp, the observations still belong to a particular contract. Preserving that distinction is essential: the long-run chart is useful precisely because it hides contract boundaries visually, while sound analysis must make those boundaries explicit again.

Why stitching contracts creates gaps

Suppose the outgoing contract trades at 5,000.00 when the next contract trades at 5,020.00. Both quotes can be normal. The difference may reflect financing, expected dividends, carrying costs, or the market’s different assessment of the two expiry dates. Switching the series from one to the other adds an artificial 20-point jump even if neither market moved at the roll instant.

A naive splice would interpret that jump as an overnight return. It would contaminate momentum signals, inflate realized volatility, move stop levels, and distort indicators whose lookback windows cross the boundary. Simply deleting the roll day is not a solution: it removes genuine market information and leaves adjacent segments on incompatible price scales.

The gap is a change in instrument scale, not necessarily a market event. Adjustment methods attempt to separate those two effects. They cannot recover a single “true” price across all expiries, because contracts on different dates genuinely are different instruments. They can, however, create a consistent scale for particular calculations.

Using volume to choose the roll

A volume-based roll selects the next contract when its activity becomes more representative of the liquid market than activity in the outgoing contract. A common rule compares daily volume and rolls after the next expiry exceeds the current expiry. The decision should use information available at that point, with an effective timestamp stated clearly, rather than selecting whichever boundary makes a later chart look smoother.

Define the boundary before inspecting results

  • Rule: define the comparison, such as full-session volume on two consecutive sessions.
  • Effective time: specify whether the new segment begins at the next session or after a particular observation.
  • Reference: record the prices used to measure the difference between contracts.
  • Exceptions: treat holidays, missing sessions, and unusual volume as cases to inspect, not silently repair.

Volume leadership is a liquidity heuristic, not an instruction to trade. It can differ from open-interest leadership, a fixed calendar roll, or the timing used by a particular strategy. Around expiration, volume may also migrate unevenly during the session. Researchers should keep the selected contract identity alongside the continuous series so another roll policy can be tested without confusing it with a data error.

The arithmetic of additive back-adjustment

The derived continuous ticks retain price_raw, the observed contract price, and add back_adjustment. The adjusted field follows the identity price = price_raw + back_adjustment. The newest contract is anchored with a zero adjustment. Moving backward, each earlier segment receives an additive offset based on the observed roll-reference difference; offsets accumulate when a segment crosses more than one earlier boundary.

Consider a simplified example with three segments. At the newest roll, the old contract’s reference price is 5,000.00 and the new contract’s is 5,020.00. To place the older segment on the newer segment’s scale, subtract 20.00 from older prices. At the preceding roll, references of 4,800.00 and 4,825.00 imply a 25.00 subtraction. Prices before that earlier boundary receive both offsets:

Segment              Raw price    Accumulated adjustment    Adjusted price
Newest                 5,040.00                  0.00             5,040.00
Middle                 5,000.00                -20.00             4,980.00
Oldest                 4,790.00                -45.00             4,745.00

Within the oldest segment, a raw move from 4,790.00 to 4,810.00 becomes an adjusted move from 4,745.00 to 4,765.00. The 20-point change is unchanged. At a boundary, the adjustment absorbs the measured reference gap instead of presenting it as a trading return. Because the anchor is the newest contract, extending the history through another roll can change adjusted historical levels while leaving their within-segment differences intact.

Additive adjustment preserves point differences, which suits instruments whose P&L is linear in points. It does not preserve ratios or percentage changes. Adjusted prices can also become zero or negative far enough back; that is a scale property, not a forecast about the underlying market.

Calculating returns without mixing scales

Choose the return definition before choosing the field. For point changes, use differences of adjusted prices: price[t] - price[t-1]. Multiplying by the appropriate contract multiplier gives a theoretical point-based P&L change before costs. Do not subtract prices from different raw contracts across a roll and call the result a market move.

For simple percentage returns, the usual expression P[t] / P[t-1] - 1 is problematic on an additively adjusted scale. Subtracting a constant changes the denominator, and a shifted series does not retain the original asset’s percentage return. Log returns have the same issue. If percentage returns are economically important, calculate them from a consistent unadjusted contract segment, or construct a return series separately and chain its growth factors with an explicitly documented roll treatment.

A robust workflow keeps three ideas separate: raw prices for contract-specific values, adjusted prices for continuous point differences and indicators, and roll metadata for identifying boundaries. Derived bars are built from back-adjusted continuous ticks, so their open, high, low, close, and derived signals inherit the same adjustment convention.

What a continuous series cannot tell you

Back-adjustment is not an execution model. It does not identify the bid and ask available when a strategy rolls, include commissions or exchange fees, model slippage, or establish that both reference prices were simultaneously executable. A strategy trading the outgoing and incoming contracts incurs two legs, and their liquidity can differ substantially from the later continuous chart’s appearance.

Neither does the series define an optimal roll date. A volume rule is designed to follow activity, whereas a portfolio may roll earlier to reduce concentration risk or later because of its mandate. Testing those choices requires contract-level observations, timestamps, and explicit cost assumptions. Continuous adjusted closes alone are insufficient.

Finally, avoid treating adjusted historical levels as quoted prices that once existed. They are transformed research values. Limit triggers, margin calculations, contract valuations, and comparisons with historical news should use raw contract prices. The continuous series answers questions about connected market movement; it does not replace the records needed for contract-specific accounting.

Checks to run around every roll date

Roll boundaries deserve targeted tests rather than a visual glance at a long chart. Start with the row-level identity and then inspect the economic behavior on each side of the transition.

  1. Verify price = price_raw + back_adjustment within floating-point tolerance, and confirm that the newest segment has zero adjustment.
  2. Confirm that timestamps are ordered and that the contract identity changes exactly where the roll metadata says it does.
  3. Check that adjustment is constant within each contract segment and changes only at documented boundaries.
  4. Recompute the reference difference from the stated roll observations, including accumulated offsets for older segments.
  5. Compare within-segment raw and adjusted point differences; they should match.
  6. Inspect volume in both contracts, duplicate timestamps, missing observations, and unusually large returns near the boundary.
  7. Recalculate indicators whose windows span the roll, since a correct price series can still expose lookback-sensitive behavior.

A large adjusted move near a roll is not automatically wrong. The underlying market may genuinely have moved. The useful test is whether the move remains after the reference gap is applied correctly, not whether every boundary looks quiet.

A repeatable research workflow

Begin in the dataset browser by selecting the market and history appropriate to the question. Use contract-level derived ticks to examine liquidity and roll references; use continuous derived ticks or bars for calculations that need a common point scale. Keep the roll rule and effective dates in the experiment configuration rather than embedding them informally in a notebook.

For each result, record the roll policy, adjustment method, return definition, timezone, and sample end date. The sample end matters because a newest-contract anchor can revise adjusted levels when history is extended. Re-running the same input snapshot should reproduce both prices and signals.

The dataset documentation is the reference for available fields and derived bar intervals. A concise validation report should include boundary counts, failed identity checks, and any anomalous sessions reviewed. Those details make a continuous-series result auditable and prevent a convenient chart from becoming an unexamined assumption.