A chart shows a different price than your broker when the two screens display different data: a different instrument, contract month, price field, time delay or bar-building rule. A broken data feed (the stream of quotes a platform receives) is the rare explanation. Each cause leaves a fingerprint in the size and timing of the gap.

Key takeaway

A chart and a broker that disagree are almost always showing different data, not a broken feed. Match the instrument, contract month, price field, data speed and session on both screens, and leave alone the gaps that are correct behaviour, such as futures basis and the bid-ask spread.

How do I tell which cause is behind the price gap?

Match how the gap behaves over a day and over a roll to a row below, because each pattern points to one cause. Rows 1 and 5 are correct behaviour, so confirm the cause before changing any setting.

FROM SYMPTOM TO CAUSE Chart differsfrom brokerLatest pricematches: YESLatest pricematches: NOHistory shifted after a rollback-adjusted seriesOnly daily high/low/close differsettlement or sessionOnly candle bodies differHeikin Ashi chartSteady, shrinks toward expirybasisleave itLarger offset, moves tick for tickcontract monthJumps days before expirycontinuous switch (ES1!)One spread or half of onebid vs lastleave itLags by minutesdelayed dataDrifts on practice login onlysimulated feedSYMPTOMCAUSEExamples: 46.50 points steady = contract month; 0.6 on a CFD = one spread; 10 minutes = delay.
Start with one question: does the latest traded price match? If it does, the difference is in history or bar construction. If it does not, the shape of the gap names the cause, and two of the causes are correct behaviour to leave alone.
SymptomLikely causeHow to confirmFix, or leave it
1. Steady offset, shrinking toward expiryCash index (SPX) vs futures (ES), or a CFD on either: the gap is basisRead both symbols; compare the gap with days to expiryLeave it; chart the instrument you trade
2. Larger steady offset (46.50 points in the example below), both screens moving tick for tickDifferent contract monthRead the month code on both screensSet the chart to the month you hold
3. Live price matches, but old highs, lows and drawn levels are shiftedBack-adjusted continuous seriesToggle B-ADJ and watch the history moveB-ADJ off for price levels, or chart the explicit contract
4. Chart jumps or relabels days before expiry while the broker still quotes the old monthContinuous symbol (ES1!) switched on volumeCompare the switch date with your contract's expiryChart the explicit contract in roll week
5. Off by one spread (0.6 in the CFD example below) or half of oneChart plots bid, last or midpoint; orders fill at ask or bidTurn on the ask line; compare with the order ticketLeave it; know which side fills
6. Lags by minutes, worst in fast marketsDelayed data (10 minutes for CME data on TradingView)The latest bar trails the clock by 10 minutesBuy the real-time feed
7. Intraday bars match, but the daily close, high or low differSettlement vs last, RTH vs ETH, or the day boundaryToggle SET; check session and time-zone settingsUse the convention your levels were drawn on
8. Candle bodies and closes differ from a standard chart of the same symbolHeikin Ashi or another averaged chart typeCheck the chart type and whether the price scale shows real or averaged pricesSwitch to standard candles
9. Quotes drift from the real market only on a practice connectionSimulated data feedCompare with a live exchange quote at the same secondSwitch to live market data

A genuinely dead feed looks different from all nine rows: its price stops updating while other sources keep moving (see the stale and dead feed checklist).

Why is SPX different from ES or US500?

SPX is the cash S&P 500 index, ES is the E-mini S&P 500 futures contract traded at CME Group, and US500-style symbols are broker CFDs (contracts for difference, which pay a price change without owning the asset) referencing one or the other, so three screens can show three correct prices. The steady gap between cash and futures is the basis, which the CFTC Glossary defines as "The difference between the spot or cash price of a commodity and the price of the nearest futures contract for the same or a related commodity (typically calculated as cash minus futures)."

ES differs from SPX by its cost of carry: the interest a buyer earns by holding cash instead of stocks, minus the dividends a futures holder does not receive. A standard fair-value formula is F = S × (1 + r × d/360) - D, where S is the cash index, r the annual interest rate, d the days to expiry and D the expected dividends in index points. With illustrative inputs of S = 6,000.00, r = 4.30%, dividends of 0.20 index points per day and a flat cash index, the gap shrinks to zero at expiry:

Days to expiryInterest (pts)Dividends (pts)ES fair valueFutures minus cash (pts)Per ES contract
6043.0012.006,031.00+31.00$1,550.00
4532.259.006,023.25+23.25$1,162.50
3021.506.006,015.50+15.50$775.00
1510.753.006,007.75+7.75$387.50
00.000.006,000.000.00$0.00

Dollar values use the ES multiplier of $50 per index point. By the CFTC's cash-minus-futures convention the 60-day basis is -31.00; traders usually quote the same number as a +31.00 futures premium. The shrinking gap is called convergence.

CASH AND FUTURES CONVERGE AT EXPIRY 60d45d30d15d0d6,0006,0106,0206,030SPX cash 6,000.00ES fair value+31.00+23.25+15.50+7.75converges at expirydays to expiryF = S x (1 + r x d/360) - dividends; S 6,000.00, r 4.30%, dividends 0.20 pts/day. Illustrative.
At 60 days the illustrative premium is 31 points, worth $1,550 on one ES contract, and it shrinks every day to zero. A gap that behaves like this is basis: the chart is showing the cash index and the broker the future, and both are right.

The SPX-ES gap also wobbles intraday because futures tend to move first. In a study of price discovery (how new information enters prices), Hasbrouck (2003) found that "For the S&P 500 and Nasdaq-100 indexes, most of the price discovery occurs in the E-mini market." A fast ES move stretches the gap until the stocks catch up. CFD prices add each broker's choice of reference and its own spread; see futures versus CFDs at prop firms and the fair value and basis guide.

Is my chart on a different contract month than my broker?

A different contract month is the likely cause when the offset exceeds normal basis and both screens move tick for tick, typically in roll week, when two ES months trade side by side. The month is the letter in the symbol: H, M, U and Z mean March, June, September and December, so ESZ2026 is December 2026. With the illustrative inputs above, a front month 60 days from expiry is worth 6,031.00, while the next quarterly month, 150 days out, is worth 6,000.00 + 107.50 interest - 30.00 dividends = 6,077.50. The 46.50-point gap ($2,325 per ES contract) is exactly 90 days of carry. The guide to how futures rollover works covers when to move to the next month.

Why does ES1! switch contracts before my broker does?

ES1! is a continuous symbol, a chart that links successive contracts into one line, and TradingView switches it on volume rather than on the expiry date: its switching-date rule is "the excess of the daily volume of the next contract over the daily volume of the current futures contract." The same page says the condition can begin to be met, on average, 6 business days before expiration, and its gold example shows the August 2022 contract, expiring on August 29, 2022, handing over to December on July 28, 2022, 32 calendar days early.

Between the switch and your contract's expiry, a continuous chart plots the new month while your broker quotes the one you hold, so the two differ by the month spread (46.50 points in the example above). For broader chart setup, see TradingView for futures prop trading.

Why did my chart levels move after the rollover?

Old levels move when the chart is back-adjusted: every bar before a roll is shifted so the series joins smoothly, and historical highs and lows stop matching prices that actually traded (see the continuous contracts and back-adjusted data explainer). TradingView's back-adjustment help page states: "By default, back-adjustment is disabled." The B-ADJ button (Adjust for contracts changes) turns it on, and the shift equals the difference between the new and old contracts' closes on the daily bar nearest the switch.

In an illustrative roll, the old contract closes at 6,012.50 and the new one at 6,058.75, so the shift is +46.25 points ($2,312.50 per ES contract). A high printed at 5,950.00 on the old contract displays as 5,996.25 on the back-adjusted chart, while the raw chart and your broker's history still show 5,950.00. Shifts stack: after three rolls of +46.25, +38.50 and +41.75, a price of 5,500.00 printed three rolls ago displays as 5,626.50, 126.50 points from where it traded.

RAW VS BACK-ADJUSTED AT A ROLL 5,9005,9506,0006,0506,100roll switchgap 46.25same high: 5,950.00 raw, 5,996.25 adjustedraw contractsback-adjusted: past shifted upEach roll adds its gap to all earlier bars: +46.25 +38.50 +41.75 = +126.50 over three rolls.One roll of 46.25 points is $2,312.50 per ES contract. Illustrative prices.
Back-adjustment removes the roll gap by moving history, not today. A level you drew last quarter can sit tens of points away from where the market actually traded, and the offset grows with every roll.

Is my chart plotting bid, ask, last or midpoint?

A MetaTrader 5 CFD chart usually plots the bid and a futures chart usually plots the last trade, so either one differs from a fill on the other side of the book by part or all of the bid-ask spread (the gap between the best price to sell and the best price to buy). MetaQuotes' MetaTrader 5 chart settings help states: "Bars in the platform are formed based on Bid prices (or Last prices if the depth of market is available for the instrument). However, the Ask price is always used to open long positions and close short ones."

Take an illustrative CFD quote of bid 6,030.4 and ask 6,031.0, a spread of 0.6. The MT5 chart shows 6,030.4, a market buy fills at 6,031.0, and a midpoint chart would show 6,030.7, half a spread (0.3) from either side. A short's stop-loss is a buy, so a stop at 6,031.0 triggers when the ask reaches it while the bid-based candles top out at 6,030.4.

BID, MIDPOINT, ASK, AND WHERE ORDERS FILL 6030.46030.76031.0ASKMIDBIDMT5 bars drawn on the bidshort stop at 6,031.0market buy fills herespread 0.6Stop triggered by the ask while every bid-drawn candle topped out at 6,030.4: the stop looks untouched on the chart.CFD quotes illustrative. On ES one tick is 0.25 points, $12.50.
Charts usually plot the bid or the last trade; buy orders and short stops live on the ask. A stop that "should not have been hit" is often one spread away from the line the chart draws.

ES is usually quoted one tick wide (0.25 points, $12.50 per contract), so the effect on a futures chart is small, but in thin overnight markets, or on less active contracts, the spread widens and the last trade can lag a moving bid and ask. Level 1 versus Level 2 market data explains what each quote field means.

Why is TradingView 10 minutes behind my broker?

TradingView runs 10 minutes behind when it shows CME data without a real-time subscription: its CME futures page states that "All CME Group's data is available for free on TradingView with a 10-minute delay."

A delay gap changes size constantly, which separates it from basis. In an illustrative case, at 10:40:00 ET the live price is 6,045.25 while the delayed chart shows the 10:30:00 ET price of 6,031.00, a gap of 14.25 points ($712.50 per ES contract). The gap equals whatever the market moved in the last ten minutes: near zero in a quiet market, large in a fast one. Paying for real-time CME data removes it; the guide to free real-time futures data covers the alternatives.

A 10-MINUTE DELAY, READ AT ONE MOMENT 10:0010:1010:2010:3010:4010:5011:006,0206,0306,0406,05010:40:00 ETlive 6,045.25delayed chart 6,031.00the 10:30 pricelivedelayed 10 minutesGap at the cursor 14.25 points = $712.50 per ES contract. Illustrative prices.
A delayed chart is not wrong, it is late. Every value it shows existed ten minutes earlier, which is harmless for planning and useless for placing an order.

Why is my daily candle different from another platform?

Daily candles differ when platforms disagree on the close, the session or the day boundary, even when every intraday trade is identical. According to TradingView's Help Center, futures and continuous charts use settlement prices as the daily close by default; settlement is a price the exchange calculates, while last is the day's final trade. The SET button switches between them without changing intraday bars, and TradingView's watchlist always shows settlement, so a chart with SET off can disagree with the watchlist beside it; the CME settlement price explainer covers how the exchange sets the number.

TradingView defines the ES trading day for Monday as Sunday 17:00 CT to Monday 16:00 CT, 23 hours or 1,380 minutes, and its RTH (regular trading hours) template covers 08:30-15:15 CT, 405 minutes or 29.3% of that day. TradingView keeps the daily candle identical for RTH and ETH (electronic trading hours, the full session), but a platform that builds its daily bar from RTH alone, or cuts the day at local midnight, reports a different high, low or close from the same trades. Holidays stretch one daily bar further: TradingView's Martin Luther King Jr. Day example assigns every trade from Sunday 17:00 CT to Tuesday 16:00 CT to a single Tuesday session, three calendar days in one candle.

Intraday highs can differ by a tick or two when one feed is conflated, sending the latest price at intervals instead of every trade, and skips a brief spike; market data conflation and throttling explains the mechanism.

Can a sim account or a trade copier cause the difference?

A simulated data feed can cause the difference; a trade copier cannot, because a copier sends orders and never changes what a chart displays. Some platforms include a simulated feed for offline testing that generates prices instead of relaying the exchange, so a practice connection left on it drifts from the real market. A prop-firm evaluation account is a different thing: it usually receives live exchange data and simulates only the fills, so its quotes should match a live feed.

A copier also cannot repair a mismatched instrument. Thor, this blog's own product, copies a master account's trades to follower accounts, and each follower fills at the price of whatever symbol it is mapped to. If the master trades ESZ2026 and a follower is mapped to a CFD or to the next month, that follower's fills sit a basis or a month spread away, and no copier setting removes the gap; the fix is to map every account to the same contract.

Go deeper

Frequently asked questions

How can I prove which screen has the wrong price?

Open the same explicit contract, such as ESZ2026, on a third real-time source. When two real-time feeds agree and one screen does not, the difference lies in that screen's settings, not in the market.

Can a broker's futures price be wrong?

Rarely, because every ES order meets in one central order book on CME Globex, so real-time feeds of the same contract agree apart from latency and conflation. CFDs are the exception, because each broker makes its own quote.

Why is my TradingView price different from Tradovate?

Usually because the TradingView chart is on ES1! or on free delayed CME data while Tradovate quotes a specific month in real time. The same two checks, month first and delay second, explain NQ1! versus NQ.

Should I trade from ES1! or the specific contract month?

Place orders and draw trade levels on the specific contract, such as ESZ2026. ES1! is useful for long-range context on a higher timeframe, but around a roll it can show a month you do not hold.

When should back-adjustment be switched on?

Switch B-ADJ on for indicators, moving averages and backtests that span several rolls, where raw roll gaps would create jumps that never happened inside any one contract.

Will paying for real-time data on TradingView fix the difference?

Only when delay is the cause. Basis, a different month, back-adjustment and bid-versus-last gaps all persist on a real-time feed.

Why is US500 different from SPX?

US500 is a broker's CFD name, not the index itself, and each broker chooses whether it tracks the cash index or the futures and how it adjusts for carry and dividends. The broker's contract specification names the reference.

Will copied accounts fill at exactly the master's price?

Not exactly, even on the same contract. Each follower's order reaches the order book separately, so its fill reflects the market during the copy delay and the liquidity available for its size; a faster copy path narrows that window but cannot close it.

Is the gap between SPX and ES an arbitrage opportunity?

Not for a retail trader. The fair-value part of the gap is the cost of carry, which a buyer of the stocks pays in forgone interest, and deviations from fair value are traded by index arbitrage desks that buy or sell the whole stock basket against futures.

Sources

  1. U.S. Commodity Futures Trading Commission, CFTC Glossary
  2. Hasbrouck, J. (2003), Intraday Price Formation in U.S. Equity Index Markets, The Journal of Finance 58(6), 2375-2400
  3. TradingView Help Center, How is the switching date of contracts determined in continuous futures
  4. TradingView Help Center, How can I enable backadjustment for continuous futures?
  5. MetaQuotes, MetaTrader 5 Help, Chart Settings
  6. TradingView, Explore CME Futures