TradingView B-ADJ: Why I Keep Back-Adjustment OFF for Technical Analysis


TradingView B-ADJ: Why I Keep Back-Adjustment OFF for Technical Analysis

The small button that can change your historical price levels

If you trade futures or do your TA on TradingView, there is a small button in the bottom-right corner of the chart that is very easy to overlook:
B-ADJ
It stands for Back-Adjustment, and it changes something much more important than the appearance of your chart.
It changes the historical prices themselves.
And this is exactly why I believe traders should be very careful when using B-ADJ for technical analysis.
For me, the key question is simple:
Do I want to analyze the price that actually traded, or a price series that has been mathematically adjusted to remove futures rollover differences?
For technical analysis, I prefer the first option.

What exactly does B-ADJ do?

A continuous futures contract such as CL1! is not one single futures contract.
It is a synthetic series created by connecting individual contracts together.
For WTI crude oil, for example, the series moves from one monthly contract to the next.
The September contract eventually gives way to the October contract. The October contract gives way to November, and so on.
These contracts can trade at different prices.
For example:
Old contract: $90.00
New contract: $91.50
When TradingView switches the continuous series from the old contract to the new one, there can therefore be a $1.50 difference.
That difference is not necessarily a $1.50 move in the underlying market.
It is a difference between two different futures contracts.
TradingView's B-ADJ feature is designed to remove this difference. When enabled, TradingView adjusts previous contracts using a coefficient based on the difference between the old and new contract prices around the rollover.
In other words:
TradingView moves the historical price.
And that is where the problem begins.

The price on the chart is no longer the price that traded

This is the most important point.
When B-ADJ is enabled, the historical price displayed on the chart is no longer necessarily the actual price at which the historical futures contract traded.
The adjustment is intentional.
TradingView is creating a continuous price series without rollover gaps.
That can make the chart look cleaner.
But a cleaner chart does not automatically mean a more accurate chart for technical analysis.
The continuous contract itself is already a synthetic instrument created by linking multiple individual futures contracts.
And once you additionally back-adjust the historical data, you are no longer looking at the original historical price levels.

Look at the difference on CL1!

Here is a real example using WTI crude oil futures.

CL1! Daily — B-ADJ OFF


This is the unadjusted continuous CL1! chart.
The historical prices remain based on the prices of the individual contracts that were actually traded.
You can see the rollover differences between contracts.

CL1! Daily — B-ADJ ON



Now look at the same chart with B-ADJ enabled.
The current price is essentially the same.
But look at the historical price structure. For example the highest peak on oil when war started was around 119. But not here on adjusted chart...
It has moved.
And that means that everything calculated from that historical price has moved as well.

Look at the 200-day moving average

This is probably the easiest way to understand the problem.
The SMA200 is calculated from historical prices.
If you change the historical prices, you change the SMA200.
So with B-ADJ OFF, you can have one SMA200 level.
Turn B-ADJ ON, and you can get a significantly different SMA200 level.
But there was obviously only one actual market history.
The market did not trade both versions.
One is the actual historical price series.
The other is a mathematically adjusted version designed to eliminate rollover differences.
That is why I personally don't want to base my technical analysis on the adjusted version.

The same problem applies to trendlines

Now take a trendline.
Imagine that you draw a long-term trendline through several historical lows.
Those lows represent actual prices that were traded.
Now turn B-ADJ ON.
The historical prices are shifted.
Your trendline can now be sitting at a completely different relationship to the price structure.
The same applies to:

  • Support and resistance
  • Trendlines
  • Channels
  • Swing highs and lows
  • Fibonacci levels
  • Moving averages
  • Market structure
  • Supply and demand zones
  • Premium and discount zones
  • Breakouts
  • Historical highs and lows
    If the historical price changes, your entire technical analysis changes with it.

But isn't removing the rollover gap a good thing?

Yes — for some purposes.
And this is where I think the distinction is important.
The rollover gap is not necessarily a real market move.
When the continuous contract switches from one futures contract to another, the new contract can have a different price.
TradingView's reason for back-adjustment is therefore perfectly understandable: remove that artificial discontinuity and create a smoother historical series.
The problem is what happens after you remove it.
You have to change historical prices to achieve that smoothness.
So you solve one problem by creating another.
You get a continuous chart, but you lose the original historical price levels.
For me, that is a bad trade-off when the purpose of the chart is price-based technical analysis.

A rollover gap is not necessarily something that should be erased

There is an important distinction here.
A rollover gap may not represent a move in the underlying market.
But it does represent a difference between two futures contracts.
And that is real information.
The new contract can trade at a premium or discount to the old contract because of factors such as:

  • Interest rates
  • Storage costs
  • Financing
  • Expectations
  • Supply and demand
  • Time to expiration
  • The structure of the futures curve
    So when CL1! moves from one contract to another, the difference between those contracts is not simply "bad data."
    It tells you something about the futures market.
    Removing it makes the chart prettier.
    It does not necessarily make the underlying market information more useful.

What happens when you use indicators?

This becomes even more interesting.
Imagine that you use:
SMA200
The indicator is calculated from the historical prices displayed on your chart.
Now switch B-ADJ.
The historical prices change.
Therefore:
SMA200 changes.
The same principle applies to many other indicators.
For example:
RSI
ATR
Moving averages
Bollinger Bands
and many other indicators that depend on historical price data.
You can therefore get different technical signals simply by changing one small button at the bottom of TradingView.
That is something every futures trader should know.

So is B-ADJ useless?

No.
I wouldn't say that.
B-ADJ has a legitimate purpose.
If your objective is to study long-term price trends and you don't want rollover differences to create discontinuities in the series, a back-adjusted chart can be useful.
It can also be useful for certain types of quantitative analysis where maintaining a continuous series is more important than preserving the original historical prices.
But that is different from saying:
"B-ADJ is the correct chart for technical analysis."
I don't believe there is such a universal rule.

My preference for WTI technical analysis

When I analyze WTI futures, I prefer to keep:
B-ADJ OFF.
Why?
Because I want my support, resistance, trendlines and moving averages to be based on prices that were actually traded.
If I see that crude oil traded at $76, I want to know that the market actually traded at $76.
I don't want to see $74 or $78 simply because several historical futures contracts have subsequently been adjusted to remove rollover differences.
For me, the price is the data.
And changing the historical price changes the data.

There is an even better solution

If you want maximum accuracy, don't rely exclusively on CL1! for everything.
Use the continuous contract for getting the big picture, but when you need to investigate a specific historical move, switch to the actual individual futures contract.
For example, instead of looking only at:
CL1!
look at the actual contract:
CLZ2026
CLF2027
etc.
The exact contract depends on the period you are analyzing.
That gives you the actual historical market.

My simple rule

For my own charts, my rule is:

B-ADJ OFF

when I want to analyze:
actual historical prices
support and resistance
trendlines
channels
market structure
historical highs and lows
moving averages based on actual prices

Individual futures contract

when I need:
exact historical price
exact entry/exit levels
historical execution
contract-specific analysis

B-ADJ ON

only when I specifically want:
a continuous, gap-adjusted historical series
That's a very different purpose.

One small button — a very big difference

The B-ADJ button looks insignificant.
It isn't.
It can move historical prices across years of data.
And once historical prices move, everything built on those prices can move with them.
Your trendline can change.
Your support can change.
Your resistance can change.
Your SMA200 can change.
Your market structure can change.
And suddenly you may be analyzing a chart that contains prices that never actually traded at those levels.
That doesn't make the adjusted chart "wrong."
It simply makes it a different dataset.
And that is the part many traders don't realize.
So before you start drawing your next WTI analysis on CL1!, take a look at the bottom-right corner of your TradingView chart.
B-ADJ: ON or OFF?
It can make a much bigger difference than you might think.



Comments