Skip to content
TECHNICAL NOTES 10 min read

Futures Rollover: Back-Adjusted or Not?

Why the correct setting depends on whether you trade discretionary or algorithmic — and why it's the opposite in each case

Ruben Villahermosa

Ruben Villahermosa

Trader and Educator

Non-adjusted EURUSD future showing rollover gaps

Non-adjusted EURUSD futures chart with visible rollover gaps

Summary

Futures contracts have expirations, which creates gaps between consecutive contracts. The back-adjustment (B-ADJ) option in TradingView and other platforms removes those gaps mathematically but alters historical prices. For discretionary trading you want B-ADJ OFF (real historical prices for technical analysis); for algorithmic backtesting you want B-ADJ ON (continuous series, otherwise the backtest registers artificial TPs and SLs from rollover gaps and pollutes price-based indicators).

There's a setting in TradingView that most traders use wrong without knowing: the contract adjustment button (B-ADJ). The choice between back-adjusted or non-adjusted futures completely changes what you see on the chart — and, more importantly, the results of any backtest you run on futures contracts.

The correct answer isn't unique. It depends on what you're doing: discretionary technical analysis or algorithmic trading.

The problem: continuous or non-adjusted?

Futures markets have a structural peculiarity: the asset's price isn't continuous over time. It's formalized through the union of different contracts with expiration dates. When a contract expires, traders roll into the next one — and that's where the problem starts.

How do we join those contracts to display historical series? There's no consensus. Some defend joining contracts by the most recent price until expiration. Others prefer mathematical adjustment between expirations. Each method has a cost:

Non-adjusted: "artificial gaps" appear between expirations. Holes that aren't the result of real supply/demand interaction, but of the mechanical rollover from one contract to the next.

Back-adjusted (continuous): historical prices no longer match the prices that actually happened. The time series is the result of a mathematical process that alters historical levels.

For short-term analysis this rarely matters — you only work the current contract. The problem appears when you analyze higher timeframes where several contracts come together, or when you run a backtest over years of history.

Visual example on EURUSD

Same asset, three representations. Look at the difference:

EURUSD non-adjusted futures with visible rollover gaps
EURUSD futures non-adjusted. The gaps produced by contract rollover are visible.
Same EURUSD futures with B-ADJ enabled, gaps removed
Same chart with B-ADJ enabled. Gaps are removed, but historical prices are no longer real.
EURUSD spot continuous quotation without gaps
EURUSD spot. Continuous quotation, no adjustments, no gaps. The most real representation.

For discretionary trading: use non-adjusted futures

Although the non-adjusted futures show "artificial" gaps, it's the chart that most closely resembles the spot market. And that's the key: the spot market, free from any artificial adjustment, is the most real representation of price action. If your futures chart looks more like the cash quotation, you're on the right track.

Rule for discretionary trading

For Wyckoff technical analysis on futures, use non-adjusted futures (B-ADJ off). You'll see the rollover gaps, but the levels and price action will be the real ones.

Why does this matter for a Wyckoff trader? Because all structural reading relies on historical levels: the Spring from six months ago, the Creek broken two years ago, the weekly VAH from nine months back. If all those levels have been mathematically moved to "clean up" the gaps, they no longer match what the market actually did. You think you're analyzing real prices but you're analyzing a mathematical fiction.

This adds to other data-fidelity issues platforms expose — like the Forex volume that doesn't reflect total market trading or TradingView's Delta indicator being a price-direction estimate. Small details that, together, separate trading with real data from trading with approximations.

But for algorithmic trading, the opposite

Here comes the flip side. If you're doing algorithmic trading and need to backtest strategies over long futures series, the rule changes: you need the B-ADJ button enabled (back-adjusted, joined contracts).

The reason is purely technical. When you run a backtest on non-adjusted futures, the system encounters real gaps at each expiration. And those gaps corrupt the results in two ways:

Problem 1

Trades crossing expirations = artificial TPs and SLs

Imagine a trade that your system opens in contract A and, by the logic of the system, is still alive when it crosses to contract B. If contract B opens with a huge bullish gap relative to A's close, the backtest will record a giant TP on that trade — a profit that would never have existed in real trading, because that gap wasn't made by the market, it was made by the rollover.

Same in the opposite direction: if the gap is bearish, the system records a loss or violent SL that wouldn't have happened either.

In real trading this can't happen: a trade opened in contract A must close in contract A. The rollover is done manually by closing a position and opening another in the next contract. And when done manually, that artificial gap disappears from P&L. A backtest on non-adjusted series is incapable of simulating this correctly.

Problem 2

Indicators and signals poisoned at every expiration

Any indicator based on price variations (moving averages, ATR, returns, realized volatility) calculates over those gaps as if they were real market moves. Result: the signal that triggers your system is poisoned right around each rollover — false entries because ATR is inflated by the gap, moving averages with steps that don't exist, returns that distort any volatility or Sharpe calculation. If you're also operating a future with volume data, also remember to check the difference between tick volume and real volume so that your volume indicators don't pile on another bias.

The common idea behind both problems is the same: by joining contracts with B-ADJ, historical prices lose their "historical" value — but in exchange you gain operational continuity. And that's exactly what the backtest needs: variations between bars to always be market variations, not rollover artifacts.

Rule for algorithmic trading

For backtesting and algorithmic operation on futures, B-ADJ enabled. Without it, the performance report will show giant TPs and SLs that the market never generated — and the indicators triggering your signals will be contaminated at every expiration.

Summary: two cases, two settings

Discretionary trading
B-ADJ disabled

No adjustment. Levels and price action are real. Technical reading faithful to what actually happened in the market.

Algorithmic trading
B-ADJ enabled

With adjustment. Contracts join without artificial gaps. Faithful backtest without trades closed early or indicators contaminated by non-real jumps.

The intuition that helps: discretionary needs real prices; algorithmic needs continuity of the series. Each operating mode rewards a different thing — and the correct TradingView setting depends on what you're doing at that moment, not on the asset.

Key takeaways

  • • Futures rollover creates "artificial" gaps between expirations that aren't real supply/demand
  • • B-ADJ (back-adjusted) removes those gaps at the cost of altering historical prices
  • Discretionary → B-ADJ off: you need real historical prices for Wyckoff analysis
  • Algorithmic → B-ADJ on: you need series continuity so the backtest doesn't record artificial TPs/SLs or pollute indicators
  • • TradingView has the toggle one click away, but the correct choice depends on the use case — not the asset

If you trade indices or commodities on futures, check right now how you have the B-ADJ button. Are you doing discretionary analysis? Off. Are you backtesting a system? On. It's one click in TradingView, and depending on what you're doing, the correct setting is exactly the opposite.

Advanced Wyckoff Course

Trade futures with criteria, not configuration mistakes

Master the Wyckoff Method + Volume Profile to read futures markets correctly — without falling into the technical traps that pollute most retail traders' analysis.

View the Advanced Wyckoff Course