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.
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.
| Symptom | Likely cause | How to confirm | Fix, or leave it |
|---|---|---|---|
| 1. Steady offset, shrinking toward expiry | Cash index (SPX) vs futures (ES), or a CFD on either: the gap is basis | Read both symbols; compare the gap with days to expiry | Leave it; chart the instrument you trade |
| 2. Larger steady offset (46.50 points in the example below), both screens moving tick for tick | Different contract month | Read the month code on both screens | Set the chart to the month you hold |
| 3. Live price matches, but old highs, lows and drawn levels are shifted | Back-adjusted continuous series | Toggle B-ADJ and watch the history move | B-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 month | Continuous symbol (ES1!) switched on volume | Compare the switch date with your contract's expiry | Chart the explicit contract in roll week |
| 5. Off by one spread (0.6 in the CFD example below) or half of one | Chart plots bid, last or midpoint; orders fill at ask or bid | Turn on the ask line; compare with the order ticket | Leave it; know which side fills |
| 6. Lags by minutes, worst in fast markets | Delayed data (10 minutes for CME data on TradingView) | The latest bar trails the clock by 10 minutes | Buy the real-time feed |
| 7. Intraday bars match, but the daily close, high or low differ | Settlement vs last, RTH vs ETH, or the day boundary | Toggle SET; check session and time-zone settings | Use the convention your levels were drawn on |
| 8. Candle bodies and closes differ from a standard chart of the same symbol | Heikin Ashi or another averaged chart type | Check the chart type and whether the price scale shows real or averaged prices | Switch to standard candles |
| 9. Quotes drift from the real market only on a practice connection | Simulated data feed | Compare with a live exchange quote at the same second | Switch 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 expiry | Interest (pts) | Dividends (pts) | ES fair value | Futures minus cash (pts) | Per ES contract |
|---|---|---|---|---|---|
| 60 | 43.00 | 12.00 | 6,031.00 | +31.00 | $1,550.00 |
| 45 | 32.25 | 9.00 | 6,023.25 | +23.25 | $1,162.50 |
| 30 | 21.50 | 6.00 | 6,015.50 | +15.50 | $775.00 |
| 15 | 10.75 | 3.00 | 6,007.75 | +7.75 | $387.50 |
| 0 | 0.00 | 0.00 | 6,000.00 | 0.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.
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.
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.
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.
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
- Continuous Contracts and Back-Adjusted Data: Why Your Backtest Prices Never Existed
- Why ES Does Not Match the S&P 500: Basis, Fair Value and the Premium You Are Trading
- Detecting a Dead Feed Before It Costs You: Stale Quotes and Heartbeat Checks
- TradingView for Futures Prop Trading: Charts, Webhooks and Broker Connections
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
- U.S. Commodity Futures Trading Commission, CFTC Glossary
- Hasbrouck, J. (2003), Intraday Price Formation in U.S. Equity Index Markets, The Journal of Finance 58(6), 2375-2400
- TradingView Help Center, How is the switching date of contracts determined in continuous futures
- TradingView Help Center, How can I enable backadjustment for continuous futures?
- MetaQuotes, MetaTrader 5 Help, Chart Settings
- TradingView, Explore CME Futures